目录
- 1. HTTP协议
- 1.1常见的HTTP请求方法
- 1.2常见的HTTP状态代码
- 1.3GET和 POST请求之间的区别
- 1.4HTTP协议与HTTPS之间的区别(需要)
- 1.HTTP请求/响应消息是什么
- 1.6.HTTP1.0和HTTP1的区别是HTTP1.1和HTTP2.0的区别
- 1.7HTTP缓存
- 1.8当你在浏览器中输入URL并按返回时会发生什么
- 2.HTTPS协议
- 3.DNS域名分析过程
- 4. 网络模型
- 5.TCP和UDP
- 5.1TCP和UDP之间的区别
- 5.2 三次握手
- 5.3 四次挥手
- 6. WebSocket
1. HTTP协议
HTTP超文本传输协议(HTTP supertext transport protocol)是实现客户端与服务器之间的通信的响应协议,是互联网应用中最广泛的网络传输协议之一。
客户端(浏览器)向服务器提交HTTP请求,服务器向客户端返回响应,该响应包含关于请求的状态信息,并可能包含请求的内容。
1.1常见的HTTP请求方法
- 获取:从服务器获取数据
- POST:向服务器发送数据
- PUT:上传文件,更新数据
- 删除:删除服务器上的对象
- 头:与GET方法相同,但没有响应体,只发送状态行和头条
- 选项:查询支持的跨域请求请求方法
- 步骤:逆显示服务器接收的请求,主要用于测试或诊断
- 连接:需要设置一个隧道来与代理服务器通信,使用隧道来通信TCP
1.2常见的HTTP状态代码

- 2XX 成功
200 OK 请求正常处理
204未成功处理内容请求,但未返回资源
206部分内容执行范围请求,服务器只执行请求资源的部分GET方法
- 3××重定向
301 永久地移动,永久地重新定位请求资源已经分配给一个新的URL
302 找到临时向请求重新指向的资源被临时定位到一个新的URL
303 参见其他一个资源在另一个URL上存在,应该使用GET方法获取
304未修改的浏览器缓存相关, 发送附加条件请求, 返回条件未满足, 不与重新定位有关
- 4××客户端错误
400 请求消息的语言中错误的请求
401未授权用户身份验证失败
403禁止服务器拒绝
404没有找到服务器没有找到的资源
- 5××服务器错误
500个内部服务器错误
503服务不可用服务器忙
1.3GET和 POST请求之间的区别
Post和Get是HTTP请求的两个方法
- 从服务器获取数据(例如请求网页资源)
发送是发送数据到服务器(例如注册用户)的操作
- 获取请求的数据将在地址栏中显示,而邮件请求则不会显示
获取请求数据被添加到URL中,并将邮件数据置于HTTP封筒中
- 安全问题:邮件比收到的更安全
- 获取请求发送少量数据,后请求发送大量数据
1.4HTTP协议与HTTPS之间的区别(需要)
- HTTP是一个超文本协议,信息以纯文本传输,HTTPPS是一个安全的SSL加密协议
- HTTP和HTTPPS连接完全不同,不同的端口,HTTP协议端口为80,HTTP协议端口为443
- HTTP协议连接简单无状态;HTTPS协议由SSL+HTTP协议构建,是可加密和认证的网络协议,比HTTP更安全
- HTTPS需要更高成本的CA证书;HTTPS不需要
1.HTTP请求/响应消息是什么
所要求的报告包括四个部分
- 请求行:请求方法字段,URL字段,HTTP协议版本字段,由空间分隔
- 请求标题:关键字/值对,每行一对,以英文缩写分开
- 空⾏
- 请求机构:如邮寄等请求所载的数据
答复信息由四个部分组成
- 响应线:由网络协议版本、状态代码和状态代码推理语句组成
- 反应头:反应头的组成
- 空⾏
- 响应机构:服务器响应数据
1.6.HTTP1.0和HTTP1的区别是HTTP1.1和HTTP2.0的区别
HTTP 1.0和HTTP1有以下区别
- 连接: http1.0默认使用非永久连接, http1代替。1默认使用持久连接
- 资源请求, http1.只允许资源请求的一个部分,即返回代码为206
- 缓存, http1.引入更多的缓存控制策略
- http1.1添加一个主机字段,以指定服务器的域名
- http1.1与http1.0相符,增加了许多请求方法,如PUT、HEAD、OPTIONS等。
HTTP 1.1和HTTP 2.0的区别
- 二进制协议:HTTP/2是一个完整的二进制协议
- 多路复制:HTTP/2实现多路复制以避免队列阻塞
- 数据流:HTTP/2使用数据流的概念
- 头部信息压缩:HTTP/2引入头部信息压缩机制
- 服务器传送:HTTP/2允许服务器发送资源给客户端,无需请求
1.7HTTP缓存
哪些资源可以缓存-静态资源(js,css,img)
有两个类型的HTTP缓冲策略:强缓冲和谈判缓冲,两者都由服务器设置HTTP字节实现
强缓存:直接从浏览器中缓存的本地读取资源,不要求服务器;
过期控制缓存过期,已被缓存控制取代
咨询缓存:在使用本地缓存之前,向服务器发送请求,以查看当前浏览器缓存是否过期,如果不:返回304,使用本地资源,如果过期,请求最新的资源
1.8当你在浏览器中输入URL并按返回时会发生什么
- 分析URL:使用传输协议和请求资源的路径
- DNS域名分析: DNS将域名分析为IP地址
- 浏览器通过IP地址找到服务器并建立TCP连接(三个手)
- 在三个TCP握手之后,开始发送HTTP请求
- 服务器处理请求并返回HTTP响应消息
- 在浏览器收到响应文本HTML后,分析渲染页面
- 数据传输完成后切断TCP连接(四手)
2.HTTPS协议
HTTP超文本传输协议采用文本传输信息,存在信息黑客、信息操纵和信息劫持的风险;
HTTPS(Hypertext Transport Security Protocol):通过HTTP通信,使用SSL/TLS加密包,协议TLS/SSL具有身份验证、信息加密和完整性检查的功能;HTTPS的主要目的是向网站服务器提供身份验证,保护数据交换的私隐和完整性;
对称加密/非对称加密
TLS/SSL工作原则
TLS/SSL = 散布函数hash + 对称加密 + 非对称加密
- 基于散射函数的信息完整性验证
常见的散射函数是MD5、SHA1、SHA256
- 使用协商键加密数据的对称加密算法
常见的对称加密算法是AES-CBC, DES, 3DES, AES-GCM等。
- 不对称加密实现身份验证和关键咨询
常见的不对称加密算法是RSA, ECC, DH等。
HTTPS的缺点
(1)除了通过TCP连接发送HTTP请求之外,它还必须与SSL通信,因此通信是缓慢的;
(二)SSL必须进行加密处理,服务器和客户需要进行加密和解密操作处理,从而增加硬件资源和复杂处理成本;
(三)申请SSL证书的费用
3.DNS域名分析过程
DNS(域名系统)是转换主机名称到IP地址的服务
操作:分析域名为IP地址,客户端发送域名查询请求给 DNS服务器, DNS服务器通知客户端Web服务器的IP地址
- 首先,它将在浏览器缓存中搜索相应的IP地址。如果它找到它,它将直接返回,如果它不能继续
- 向本地DNS服务器发送请求,在本地域名服务器缓存中查询,如果找到,直接返回搜索结果,如果没有找到继续
- 本地DNS服务器向根域服务器发送请求,该请求返回查询域中顶层域服务器的地址
- 本地DNS服务器向顶层域名服务器发送请求,接收请求的服务器查询自己的缓存,如果存在记录,返回查询结果,如果不返回有关下层授权域名服务器的地址
- 本地DNS服务器向授权域名服务器发送请求,域名服务器返回相应的结果
- 本地DNS服务器将将返回的结果存储在缓存中,以便下次使用
- 本地DNS服务器将返回结果返回浏览器
4. 网络模型
4.1OSI7层模型

- 应用层:HTTP(超文本传输协议),HTTPPS,FTP(文件传输协议),SMTP(简便邮件传输协议)
- 传输层:TCP UDP
- 网络层:IP协议层
4.2TCP/IP参考模型

- 物理层通过物理手段连接计算机
- 通过对特殊流的数据进行比较,将数据链层分开
- 建立主机至主机通信的网络层
- 传输层建立从港口到港口的通信
- 应用程序层最终负责建立连接、数据格式转换和最终向用户渲染
5.TCP和UDP
TCP和UDP是OSI模型中的传输层中的协议
TCP是一个面向连接的传输层协议,你必须首先建立传输数据之间的连接,在数据传输后释放链接。TCP提供可靠的传输,其可靠性在数据传输前在三手之间反映,以建立连接,而且在数据传递时,有确认 、 窗口 、 再传输 、 交通堵塞控制机制,在数据传输结束时切断连接
UDP是无连接的,在发送数据之前不需要三进制的握手,而远程主机在接收UDP消息后不需要任何确认。虽然不可靠,但效率高,可以用于即时通讯
5.1TCP和UDP之间的区别
- TCP是连接导向的,UDP是非连接导向的(在发送数据之前不需要创建链接)
- TCP可靠的传输(数据序列和精度),使用流量控制和拥塞控制;UDP只提供最基本的数据传输能力,不能保证可靠性
- TCP是一个单向传输,UDP支持单向、单向、多向、多向、多向交互式通信
- TCP为节点流动,UDP为消息
- TCP数据传输缓慢,UDP数据传输快速
- TCP适用于需要可靠传输的应用程序(文件传输、远程登录);UDP适用于实时应用(视频会议、语音广播)
5.2 三次握手
三个手实际上是客户端和服务器在创建TCP连接时需要发送的三个包。 实质上,连接服务器指定端口,建立TCP连接,并同步两个连接的序列数和确认数,交换关于TCP窗口大小的信息。
最初,客户端处于关闭状态,服务端处于倾听状态
第一次握手:客户端向服务端发送连接请求消息。报告部分包含自己的数据通信初始序列。
第二次握手:接收连接请求消息后,服务器如果同意连接,则发送响应,并包含自己的数据通信初始序列,并在发送消息时输入SYN-RECEIVED状态。
第三次握手:当客户收到对连接的同意的回应时,一个确认消息也发送到服务端。该消息发送后,客户端将输入“ ESTABLISHED ”状态,接收此响应后,服务端也进入“ ESTABLISHED ”状态,此时连接建立成功。
第一个握手:客户端发送网络包,服务端接收网络包。 这样,服务端可以得出客户端的发送能力和服务端的接收能力为正常。
第二次握手:客户端接收的服务端口包。 这样,客户端可以得出结论,服务端的接收和发送能力,客户端的接收和发送能力是正常。
第三个握手:客户端交付包,服务端接收包。 这样,服务器可以得出结论,客户端的接收和发送能力是正常,服务器本身的发送和接收能力是正常。
因此,需要三个手来验证接收和发送功能是否正常
5.3 四次挥手
如果客户首先启动关闭请求,则最初会建立双方:
- 第一波:如果客户端认为数据传输已经完成,则需要向服务器发送连接释放请求
- 第二波:服务终止后收到连接释放请求,通知应用程序层释放TCP链接。然后发送ACK包,并输入CLOSE_WAIT状态,这表明客户端与服务端的连接已经释放,不再接收客户端发送的数据。但由于TCP连接是双向的,所以服务器仍然可以向客户端发送数据
- 第三波:服务端将继续发送数据,如果数据仍未完成,在完成后向客户端发送连接释放请求,然后服务端将输入LAST-ACK状态
- 第四波:客户收到释放请求后,向服务端发送确认,客户端此时输入“时间等待”状态。状态持续2msL,如果服务终止在该期间内没有重复请求,进入封闭状态。在服务结束时收到确认后,同时输入关闭状态
为什么三次握手,四次挥手?
- 由于TCP是一种双向运输方式,它不区分客户与服务端,建立连接是双向的过程。 三手确认双方的接受和传输能力是正常的,只有两手确认双方的接受和传输能力,建立双向连接是不可能的
- 由于TCP连接是完全双重的,双方需要分别释放连接,而单个连接的释放只代表数据不能再发送给另一方,并且连接处于半释放状态。
6. WebSocket
WebSocket的出现使浏览器能够以实时双向的方式进行通信。
它的最大特点是服务器可以自行向客户端发送消息,而客户端可以自行向服务器发送消息。
WebSocket是一个由HTML5提供的浏览器和服务器之间提供完全双重通信的Web技术,属于应用程序层协议。
浏览器和服务器可以直接创建一个持久的连接,并将数据传送到两个方向,只有一只手握住。
优点
支持双向通信, 更灵活, 更高效, 更可扩展.
更好的二进制支持
本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27079.html。