
序言
表弟:漫话TCP/IP – UDP (2)zhuanlan.zhihu.com

UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议。为了通过IP数据报实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠传输。
TCP首部
为了实现可靠传输,TCP首部相比UDP首部要复杂得多。

-
源端口号(Source Port)
表示发送端端口号,字段长16位。
-
目标端口号(Destination Port)
表示接收端端口号,字段长度16位。
-
序列号(Sequence Number)
字段长32位。序列号(有时也叫序号)是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机。然后再将每转发过去的字节数累加到初始值上表示数据的位置。此外,在建立连接和断开连接时发送的SYN包和FIN包虽然并不携带数据,但是也会作为一个字节增加对应的序列号。
-
确认应答号(Acknowledgement Number)
确认应答号字段长度32位。是指下一次应该收到的数据的序列号。实际上,它是指已收到确认应答号减一为止的数据。发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。
-
数据偏移(Data Offset)
该字段表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,当然也可