数据收发操作的第一步是创建套接字。​一般来说,服务器一方的应用程序在启动时就会创建好套接字并进入等待连接的状态。客户端则一般是在用户触发特定动作,需要访问服务器的时候创建套接字。在这个阶段,还没有开始传输网络包。

TCP 包的头部还包含了​客户端向服务器发送数据时使用的初始序号,以及服务器向客户端发送数据时需要用到的窗口大小​。

TCP 模块在​执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成包发送给通信对象​。

集线器是按照以太网规则传输包的设备,而路由器是按照 IP 规则传输包的设备​。

包收发操作的起点是 ​TCP 模块委托 IP 模块发送包的操作​。

IP 模块负责添加如下两个头部。

(1)​MAC 头部:以太网用的头部,包含 MAC 地址

(2)​IP 头部:IP 用的头部,包含 IP 地址

无论要收发的包是控制包还是数据包,​IP 对各种类型的包的收发操作都是相同的​。

IP 地址实际上并不是分配给计算机的,而是分配给网卡的​。IP 头部的“接收方 IP 地址”填写通信对象的 IP 地址。发送方 IP 地址需要判断发送所使用的网卡,并填写该网卡的 IP 地址。

IP 模块根据​路由表 Gateway 栏的内容判断应该把包发送给谁​。

将数字信息转换为电或光信号,才能在网线上传输,也就是说,这才是​真正的数据发送过程。负责执行这一操作的是网卡​。

AC 地址真正生效的是网卡驱动进行初始化时​在 MAC 模块中设置的那个 MAC 地址。网卡中保存的 MAC 地址会由网卡驱动程序读取并分配给 MAC 模块。

MAC 头部很容易被误解为是由网卡来处理的,实际上它是​由 TCP/IP 软件来负责的​。

能一开始就发送包的数据,而是要在前面加上一段用来测量时钟信号的特殊信号​,这就是报头的作用。

起始帧分界符是​一个用来表示包起始位置的标记​。

中断是有编号的,网卡在安装的时候就在硬件中设置了中断号​,在中断处理程序中则将硬件的中断号和相应的驱动程序绑定。