3.1、TCP/IP

  • HTTP:应用层协议
  • TCP:无差错的数据传输;按序传输; 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。
  • IP:网际协议,Internet Protocol。

HTTP和HTTPS网络协议栈(数据链路层的下面是物理层):

网络协议栈

3.1.1、HTTP 是如何使用 TCP 连接的

HTTP 要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的 TCP 连 接按序传输。

TCP 收到数据流之后,将数据流砍成被称作段的小数据块,并将段封装在 IP 分组中,每个 IP 分组中都包括一个IP分组首部(通常为20字节)、一个TCP段首部(通常为20字节)、一个TCP数据块(0个或多个字节)。

IP首部包含了源和目的IP地址、长度和其他标记。

TCP 段的首部包含了 TCP 端口号、TCP 控制标记,以及用于数据排序和完整性检查的一些数字值。

TCP 是通过端口号来保持 所有这些连接持续不断地运行。

IP 地址可以连接到正确的计算机,而端口号则可以连接到正确的应用程序上去。

**TCP 连接是通过 4 个值来识别的,唯一地定义了一条连接:

< 源 IP 地址、源端口号、目的 IP 地址、目的端口号 >**

TCP分段

3.1.2、用TCP套接字编程

操作系统提供了一些操纵其 TCP 连接的工具, 如套接字 API 允许用户创建 TCP 的端点数据结构,将这些端点与远程服务器的 TCP 端点进行连接,并对数据流进行读写。TCP API隐藏了所有底层网络协议的握手细 节,以及 TCP 数据流与 IP 分组之间的分段和重装细节。

常见套接字接口函数:

常见套接字接口函数

TCP 客户端和服务器是如何通过 TCP 套接字接口进行通信的:

如何通过 TCP 套接字接口进行通信