1) TCP的封装格式
TCP是面向连接的可靠协议,TCP为实现可靠的传输而提供了一系列的方法和手段。
首先,TCP的数据段采用编号的方式保证数据的正确顺序。TCP数据段被封装在IP数据报中来完成传输,而Ip数据包经过的路径有可能不同,那么IP数据包到达时可能会失去原有的顺序,因而到达的TCP数据段也可能会失序。为了解决这个问题,TCP对数据进行了编号。对接收到的数据进行从新排序。
其次,由于到达的IP数据包有可能发生重复,所以TCP的接收端必须有丢弃重复数据的功能。
再次,TCP提供流量控制。
下面对TCP首部的数据格式进行详细的讲解
0-15这16位成为源端口号:它是TCP数据段发送方进程对应的端口号,这个端口号有发送方进程产生的随机数,它唯一的标识了发送段的一个进程。
16-31这16个是目标端口号,它对应的是接收端的进程,接收端收到数据段后,根据这个端口来确定把数据送给那个应用程序。这样才能保证数据到达正确的地方。
第二行是32位是***,它提供了0-232-1范围内的一个数据
第三行的32位的确认号,它提供了0-232-1范围内的一个数据
第一部分是4位首部长度,用它可以确定首部数据结构的字节长度。
第二部分是6个保留位,这部分用着今后的扩展使用。
第三部分是6个控制位。这6位有很重要的作用,TCP的连接、断开和传输都受到这6个控制位的指挥。
1. URG:紧急指针有效位。它和第五行的紧急指针配合使用。当URG=1时,TCP根据16位紧急指针确定紧急数据的最后一个字节的位置。
2. ACK:确认位。当ACK=1时,确认***字段有效。
3. PSH:
4. RST:值位1时通知重新建立TCP的连接。
5. SYN:同步序号位。TCP需要建立连接时将这个位置置1。
6. FIN:断开位。当TCP完成数据的传输需要断开连接时,提出断开连接的一方将置1.
第四部分是16位的窗口大小。
转载于:https://blog.51cto.com/lorna8023/412677