大话计算机网络三 聊聊TCP首部
TCP首部
上一篇我们了解了TCP服务,接下来我们更深入去聊一聊TCP的首部
TCP数据被封装再一个IP数据报中,图一所示
图二所示TCP首部的数据格式,它通常是20个字符
端口号
每个TCP段都包含源端和目的端的端口号,用于寻找发送端和接收端进程,这两个值加上IP首部的源端IP地址和目的端IP
地址唯一确定一个TCP连接
经常讲的网络socket编程,socket对客户端IP地址、客户端口号、服务端IP地址、服务端端口号唯一确定互联网络中每个TCP连接的双方
序号
序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数
窗口大小
TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16 bit字段,因而窗口大小最大为65535字节。在24.4节我们将看到新的窗口刻度选项,它允许这个值按比例变化以提供更大的窗口。
16位校验和
检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。TCP检验和的计算和UDP检验和的计算相似,使用如11.3节所述的一个伪首部。