几乎所有的 HTTP 通信都是由 TCP/IP 承载的,TCP/IP 是全球计算机及网络 设备都在使用的一种常用的分组交换网络分层协议集。客户端应用程序可以打开一 条 TCP/IP 连接,连接到可能运行在世界任何地方的服务器应用程序。
一旦连接建 立起来了,在客户端和服务器的计算机之间交换的报文就永远不会丢失、受损或 失序。
TCP的可靠数据管道
HTTP 连接实际上就是 TCP 连接和一些使用连接的规则。
TCP 为 HTTP 提供了一条可靠的比特传输管道。从 TCP 连接一端填入的字节会从另 一端以原有的顺序、正确地传送出来
比如,你想获取 某网站的信息: http://www.joes-hardware.com:80/power-tools.html
上图注:Web 浏览器通过 TCP 连接与 Web 服务器进行交互
上图注:TCP 会按序、无差错地承载 HTTP 数据
TCP流是分段的、由IP分组传送
TCP 的数据是通过名为 IP 分组(或 IP 数据报)的小数据块来发送的。
HTTP 和 HTTPS 网络协议栈:
HTTP 要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的 TCP 连 接按序传输。TCP 收到数据流之后,会将数据流砍成被称作段的小数据块,并将段 封装在 IP 分组中,通过因特网进行传输
每个 TCP 段都是由 IP 分组承载,从一个 IP 地址发送到另一个 IP 地址的。每个 IP 分组中都包括:
• 一个 IP 分组首部(通常为 20 字节);
• 一个 TCP 段首部(通常为 20 字节);
• 一个 TCP 数据块(0 个或多个字节)。
IP 首部包含了源和目的 IP 地址、长度和其他一些标记。TCP 段的首部包含了 TCP 端口号、TCP 控制标记,以及用于数据排序和完整性检查的一些数字值。
保持TCP连接的正确运行
TCP 是通过端口号来保持 所有这些连接的正确运行的。
TCP 连接是通过 4 个值来识别的:
< 源 IP 地址、源端口号、目的 IP 地址、目的端口号 >