Web服务器基础

news/发布时间2024/5/14 21:52:29

Web服务器基础

【一】前端概述

请添加图片描述

【1】HTML

  • HTML(超文本标记语言)是用于创建网页结构的标记语言。
  • 它定义了网页的骨架,包括标题、段落、列表、链接等元素,但没有样式。
  • 可以将HTML视为网页的结构和内容的描述。

【2】CSS

  • css(层叠样式表)用于为HTML文档添加样式和布局。
  • 通过CSS,可以为HTML元素指定颜色、字体、大小、边距等样式属性,使网页变得美观和易于阅读。

【3】JavaScript

  • JavaScript是一种用于控制网页动态效果的脚本语言。
  • 它可以通过操作HTML和CSS来实现交互性和动态性,例如表单验证、页面元素的显示和隐藏、动画效果等。

【4】前端框架

  • 前端框架是一套封装了常用操作和功能的工具集,可以简化前端开发过程。
  • 其中一些常见的前端框架包括Bootstrap、jQuery和Vue。
  • 这些框架提供了预定义的样式、组件和功能,开发者只需按照固定的语法和规则调用这些框架提供的功能,就能快速构建出具有一致性和响应式设计的网页。

【二】HTTP协议

【1】什么是HTTP协议

  • HTTP协议是超文本传输协议,用于规定服务器和浏览器之间数据交互的格式。
  • 尽管可以不遵循该协议,但自己编写的服务端无法被浏览器正常识别,只能在单机环境中使用。

【2】HTTP协议的四大特性

  • 基于请求-响应模式:客户端发送请求,服务器返回响应。
  • 基于TCP/IP之上:作用于应用层之上的协议。
  • 无状态:HTTP协议本身不保存用户的信息,每个请求都是独立的。为了记录用户状态,出现了一些技术,如cookie、session和token。
  • 无/短链接:HTTP 1.0默认使用短链接,即请求-响应后立即断开连接。HTTP 1.1支持长链接,即双方建立连接后不会立即断开,如WebSocket。

【3】HTTP协议的格式

(1)请求数据格式
  • 请求首行:标识HTTP协议和当前请求方式。
  • 请求头:多组键值对,包含请求的附加信息。
  • 空行:用于分隔请求头和请求体。
  • 请求体:并非所有请求都有,主要用于存放POST请求提交的敏感数据。
(2)响应数据格式
  • 响应首行:标识HTTP协议、当前请求方式和响应状态码。
  • 响应头:多组键值对,包含响应的附加信息。
  • 空行:用于分隔响应头和响应体。
  • 响应体:返回给浏览器展示给用户的数据。
(3)请求方式
  • GET请求:用于向服务端请求数据,通过输入网址获取对应的内容。
  • POST请求:用于向服务端提交数据,常用于用户登录、提交表单等场景。

【三】网络请求方式

  • 网络请求方式(HTTP方法)是客户端与服务器之间进行通信的方式

【1】get

  • 这是最常见的网络请求方式之一,用于从服务器获取数据。
  • 客户端通过在URL后面添加查询字符串来指定需要获取的数据。这种方法通常是无状态的,这意味着每次请求都会重新计算。
  • GET请求虽然可以携带数据,但是一般只用于不重要的数据携带,并且GET请求携带数据的大小有限制,最多只能携带2KB左右。
# https://www.baidu.com/s?wd=周星驰
# https://www.baidu.com/s?wd=%E5%91%A8%E6%98%9F%E9%A9%B0

【2】post

  • 这种请求方式用于向服务器提交数据。
  • 它可以携带大量的数据,并且不会出现在URL中,而是作为请求体的一部分。
  • POST请求通常用于创建新的资源或者更新现有的资源。
  • 向服务器提交数据。可以携带大量的数据,并且不会出现在URL中,而是作为请求体的一部分。

【3】put

  • 这种请求方式用于更新服务器上的现有资源。
  • 与POST不同的是,PUT请求通常会覆盖已存在的资源,而不是创建新的资源。

【4】delete

  • 这种请求方式用于删除服务器上的资源。

【5】head

  • 这种请求方式与GET类似,但是只返回响应头,而不返回响应体。
  • 这在某些情况下非常有用,比如需要检查文件是否存在或者最后一次修改的时间。

【6】options

  • 这种请求方式用于获取服务器对某个URI的支持的选项。
  • 它可以用来发现可用的HTTP方法或者其他功能。

【四】web界面加载流程

【1】浏览器解析URL

  • URL由协议、域名(主机)和端口(默认为80)以及文件名组成。
  • 例如,http://www.example.com:80/index.html
    • 协议是HTTP
    • 域名是www.example.com
    • 端口是80(默认端口可以省略)
    • 文件名是index.html。
  • URL可以理解为在浏览器中输入的地址,其中的域名指示了要访问的服务器。

请添加图片描述

【2】DNS解析

  1. 浏览器检查DNS缓存。
    • 浏览器首先检查是否有缓存过该域名的IP地址。如果有缓存,则直接使用缓存的IP地址,跳过后续的DNS解析过程。
  2. 浏览器查找本地DNS缓存。
    • 如果在浏览器的缓存中找不到域名对应的IP地址,浏览器会查找本地计算机的DNS缓存。
    • 本地DNS缓存是操作系统或网络设备保存的最近解析过的域名和IP地址的记录。
  3. 解析本地Hosts文件。
    • 如果在本地DNS缓存中找不到域名对应的IP地址,浏览器会解析本地Hosts文件。
    • Hosts文件是一个文本文件,包含了域名和对应IP地址的映射关系。浏览器会检查Hosts文件中是否有目标域名的记录。
  4. 向递归解析服务器发送DNS查询请求。
    • 如果在本地Hosts文件中找不到域名对应的IP地址,浏览器会向递归解析服务器发送DNS查询请求。
    • 递归解析服务器是由互联网服务提供商(ISP)或其他网络服务提供商提供的DNS服务器,负责处理DNS解析请求。
  5. 逐级解析域名的IP地址。
    • 递归解析服务器会根据域名的层级结构,依次向上级DNS服务器查询域名的IP地址。
    • 这个过程从顶级域名服务器(Root DNS Server)开始,逐级向下查询,直到找到目标域名的IP地址。
  6. 解析完成,获取IP地址。
    • 经过多级DNS服务器的解析,最终获取到目标域名的IP地址
    • 例如,用户输入的URL为https://www.example.com
    • 经过DNS解析后得到IP地址为192.0.2.123

【3】建立TCP连接

  • 浏览器使用获取到的IP地址和默认的端口号(通常是80)与目标服务器建立TCP连接。
  • 这个过程涉及到TCP/IP的三次握手,确保客户端和服务器之间建立稳定可靠的连接。

【4】发送HTTP请求

  • 一旦TCP连接建立成功,浏览器会发送一个HTTP请求给目标服务器。
  • HTTP中的请求报文:
    • 请求报文:客户端(浏览器)向web服务器发送的请求报文。报文的所有字段都是ASCII码。
    • 请求报文中可以携带数据,也可以不携带数据。
    • 请求报文由请求行、请求头部、空行和请求包体 4 个部分组成。

【5】服务器处理请求并响应

  • 目标服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。

  • 服务器处理完请求后,会生成一个HTTP响应,该响应包括状态码、响应头、空行和响应体。

  • 常见状态码

    • 200:表示请求成功,服务器成功处理了请求并返回了相应的内容。
    • 301:表示永久重定向,请求的资源的URL已永久更改,服务器在响应中提供了新的URL,客户端应该使用新的URL进行后续请求。
    • 302:表示临时重定向,请求的资源的URL临时更改,服务器在响应中提供了新的URL,客户端应该使用新的URL进行后续请求。
    • 304:表示未修改,用于缓存控制。客户端发送了一个带有条件的请求(例如,包含If-Modified-Since头部),服务器判断资源未发生修改,返回304状态码,告诉客户端使用缓存中的内容。(未改变,和缓存里面的是一样的)
    • 404:表示未找到,请求的资源不存在于服务器上,服务器无法找到请求的URL。
    • 502:表示网关错误,通常指后端的真实服务器出现故障或无法访问,作为网关的服务器无法从真实服务器获取有效的响应。
    • 500:表示内部服务器错误,指服务器在处理请求时遇到了意外的错误,导致无法完成请求。

【6】接收和渲染页面

  • 浏览器接收到服务器返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。
  • 渲染就是将响应报文里的html文件+图片+视频等展示出来,看到效果。
  • 浏览器支持HTML语言,支持http,播放器等功能。

【7】断开TCP连接

  • 页面渲染完成后,如果没有keep-alive机制或者WebSocket等长连接技术,浏览器会发送一个关闭TCP连接的请求给服务器,进而两者断开连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/AEOW/1398.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

【Qt学习】QWidget的font属性 与 toolTip属性 的介绍与实例使用

文章目录 1. font属性1.1 介绍1.2 使用实例1.3 代码资源 2. toolTip属性2.1 介绍2.2 使用实例代码资源 1. font属性 1.1 介绍 上面是Qt的官方文档,我们据此进行总结: font(字体):表示当前为该控件设置的字体。 我们…

密码学基础

一、密码学的基本概念 1.1 密码学的作用 密码学是为了保障信息安全而发展起来的一门学科。为了解决信息安全所面临的危险,研究出了许多应对这些威胁的密码技术,“密码技术”是保障信息安全的基本技术。 信息安全的基本属性: 机密性&#…

Linux用到的命令

1 压缩文件 tar -czf wonderful.tar.gz pm 这个命令的作用就是创建一个以.tar.gz结尾的包文件,然后调用gzip程序将当前目录下的pm文件夹压缩到这个以.tar.gz结尾的文件里面去

2024-02-20(DataX,Spark)

1.Oracle利用DataX工具导出数据到Mysql。Oracle利用DataX工具导出数据到HDFS。 只是根据导入导出的目的地不同,DataX的Json文件书写内容有所不同。万变不离其宗。 书写的Json格式的导入导出规则文件存放再Job目录下的。 2.Spark概念 Apache Spark是用于大规模数…

江科大STM32 终

目录 SPI协议10.1 SPI简介W25Q64简介10.3 SPI软件读写W25Q6410.4 SPI硬件外设读写W25Q64 BKP备份寄存器、PER电源控制器、RTC实时时钟11.0 Unix时间戳代码示例:读写备份寄存器BKP11.2 RTC实时时钟 十二、PWR电源控制12.1 PWR简介代码示例:修改主频12.3 串…

数据结构第4章 数组和广义表

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 0、思维导图1、数组与特殊矩阵1&#xf…

LabVIEW智能家居控制系统

LabVIEW智能家居控制系统 介绍了一个基于LabVIEW的智能家居控制系统的开发过程。该系统利用LabVIEW软件与硬件设备相结合,通过无线网络技术实现家居环境的实时监控与控制,提升居住舒适度和能源使用效率。 项目背景:随着科技的发展和生活水平…

java 使用documents4j将XML转为pdf文件的方式

1.背景: 通过spire.doc.free将word转换成PDF时存在缺陷:只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j,documents4j会保留原word文件中更多的样式,如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

探索设计模式的魅力:创建型设计模式的比较与决策

设计模式专栏:http://t.csdnimg.cn/U54zu 目录 一、设计模式概览 1.1 创建型模式 二、比较创建型设计模式 1.1 适用场景典型用例 1.2 关键要素与差异对比 1.3 结构图 三、模式选择指南 3.1 场景分析 3.2 决策流程图 四、结语 4.1 优势 4.2 考量因素 一、…

linux---内存管理

一 虚拟内存 即使是现代操作系统中,内存依然是计算机中很宝贵的资源,看看你电脑几个T固态硬盘,再看看内存大小就知道了。 为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有…

机器学习:逻辑回归原理

逻辑回归模型是一种广泛应用于分类问题的统计方法。尽管名为“回归”,但它实际上是一种分类算法,主要用于预测观察对象属于某个类别的概率。逻辑回归模型特别适用于二分类问题,但也可以通过一些策略扩展到多分类问题。 逻辑回归的应用与优化…

面向对象详解,面向对象的三大特征:封装、继承、多态

文章目录 一、面向对象与面向过程1、什么是面向过程?2、什么是面向对象? 二、类与对象1. 初识对象2. 类的成员方法2.1 类的定义和使用2.2 成员方法 3. 类和对象4. 魔法方法1. _ _ inint _ _ 构造方法2. _ _ str _ _ 字符串方法3. _ _ lt _ _ 小于符号比较…

k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

Kubernetes(k8s)主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关,Kubernetes实际上是与容器运行时技术无关的,这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时,包…

说一下JVM创建对象的流程?

一、类加载检查。 在实例化一个对象的时候,JVM 首先会去检查目标对象是否已经被加载并初始化了。如果没有,JVM 需要立刻去加载目标类,然后调用目标类的构造器完成初始化。然后初始化的过程,主要是对目标类里面的静态变量、成员变…

钉钉小程序 访问ip不在白名单之中

钉钉小程序 访问ip不在白名单之中 problem 钉钉官方自带免登陆小程序 后端接口报错 {"errcode":60020,"errmsg":"访问ip不在白名单之中,请参考FAQ:https://open.dingtalk.com/document/org-faq/app-faq,request ip175.2.2.52…

SpringBoot+vue2联合打包部署,混合打包部署

SpringBootvue2联合部署,混合部署 前端工程和后端工程目前是都是相对独立性的模式进行开发的。 打包机 只拥有maven,没有nodejs 软件工程场景: 前后端工程在同一个父工程下面,作为一个子工程存在,各自独立开发。前…

大数据,对于生活的改变

谷歌通过对于疾病的查询量可以预测一个个h1n1病毒的大爆发, 大数据时代对于人的考验 用户的搜索记录就是一种信息,这种信息会满足其基础相关的词条与其有关的词条(最为原始的搜索机制,国内的搜索引擎都是采用这种基础原理。&…

HTML动态彩虹字

效果&#xff1a; HTML&#xff1a; <div class"this-div">Elegant and Beautiful</div> CSS&#xff1a; .this-div{background-image: -webkit-linear-gradient(left, #147B96, #E6D205 25%, #147B96 50%, #E6D205 75%, #147B96);-webkit-text-fil…

Nginx缓存相关配置解析

文章目录 前言配置示例proxy_cacheproxy_cache_pathproxy_cache_keyproxy_cache_validproxy_cache_lockproxy_cache_methodsproxy_cache_bypassproxy_no_cacheproxy_cache_min_usesadd_header 可选项 使用示例通过响应头判断是否走缓存 缓存手动删除原博客 前言 客户端需要访问…

华为机考入门python3--(14)牛客14-字符串排序

分类&#xff1a;列表、排序 知识点&#xff1a; 字典序排序 sorted(my_list) 题目来自【牛客】 def sort_strings_by_lex_order(strings): # 使用内置的sorted函数进行排序&#xff0c;默认是按照字典序排序 sorted_strings sorted(strings) # 返回排序后的字符串列…
推荐文章