http的那些事儿

172 阅读3分钟

Http概述

HTTP:超文本传输协议,是位于 TCP/IP 体系结构中的应用层协议。

  • HTTP 协议用于客户端和服务器端之间的通信
  • 通过请求和响应的交换达成通信
  • HTTP 是不保存状态的协议
  • 持久连接节约通信量:旨在建立 1 次 TCP 连接后进行多次请求和响应的交互 HTTP 协议的初始版本中, 每进行一次 HTTP 通信就要断开一次 TCP连接。 HTTP/1.1 持久连接的特点是, 只要任意一端没有明确提出断开连接, 则保持 TCP 连接状态。 管线化:同时并行发送多个请求, 而不需要一个接一个地等待响应了。
  • 使用 Cookie 的状态管理

与 HTTP 关系密切的协议:IP、 TCP 和DNS

  • TCP/IP 把与互联网相关联的协议集合起来总称为 TCP/IP。

  • TCP/IP 的分层管理(解耦) 利用 TCP/IP 协议族进行网络通信时, 会通过分层顺序与对方进行通 信。 发送端(客户端)从应用层往下走, 接收端(服务端)则往应用层往上走。

  • 通信传输流 发送端在层与层之间传输数据时, 每经过一层时必定会被打上一个该 层所属的首部信息。 反之, 接收端在层与层传输数据时, 每经过一层 时会把对应的首部消去。

  • TCP协议的三次握手过程 TCP协议:传输层,提供可靠的字节流服务。

为了准确无误地将数据送达目标处, TCP 协议采用了三次握手策略。 用 TCP 协议把数据包送出去后, TCP 不会对传送后的情况置之不理, 它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement) 。

1、发送端发送带有syn标志的数据包; 2、接收端接收后,回传syn/ack标志的数据包以示传达确认信息; 3、发送端回传一个ack标志的数据包,代表握手结束。

  • 域名解析DNS服务 它提供域名到 IP 地址之间的解析服务。

各种协议与 HTTP 协议的关系

1、在浏览器输入 URL 后获取 HTML 页面的过程。

先通过域名系统(DNS)查询将域名转换为 IP 地址; 通过三次握手,建立 TCP 连接; 发起 HTTP 请求; 目标服务器接收到 HTTP 请求并处理; 目标服务器往浏览器发回 HTTP 响应; 浏览器解析并渲染页面。

2、TCP三次握手

发送端发送带有syn标志的数据包;

接收端接收后,回传syn/ack标志的数据包以示传达确认信息;

发送端回传一个ack标志的数据包,代表握手结束。

3、TCP四次挥手

当 A 给 B 发送 FIN 报文时,代表 A 不再发送报文,但仍可以接收报文。

B 可能还有数据需要发送,因此先发送 ACK 报文,告知 A “我知道你想断开连接的请求了”。这样 A 便不会因为没有收到应答而继续发送断开连接的请求(即 FIN 报文)。

B 在处理完数据后,就向 A 发送一个 FIN 报文,然后进入 LAST_ACK 阶段(超时等待)。

A 向 B 发送 ACK 报文,双方都断开连接

参考:juejin.cn/post/689405…