传输层:通过前面UDP协议的学习;现在进行TCP协议的学习。
TCP:有连接;可靠传输;面向字节流;全双工。这里可靠传输靠内部机制;和编码关系不大;所以我们前面基于TCP编程感知的这块不清楚。
TCP报头介绍
端口:与UDP的一模一样;都是两个字节。
32位序号:后面解释(UDP没有确认应答机制;所以是没有序号和确认序号的)
32位确认序号:后面解释
4位首部长度:4位首部长度描述TCP报头有多长;虽然选项前面的部分是固定长度20字节(一行4字节;有5行);但是一个TCP报头(首部)长度是不确定;可变的;不像UDP固定是8个字节(TCP报文=TCP报头(首部)+TCP载荷)
选项:对TCP报文的一些属性进行解释说明;说可有可无;可以有1个;可以有多个
选项长度的计算
由选项前面的固定长度是20字节;所以我们就能计算出选项的长度。4位首部长度=20字节+选项长度。。
注意:首部的长度是4位(0-15);但是它的单位是4字节不是1字节;如果单位是1字节不就只能表示15字节;光选项前面就20字节。0-60个字节;如果和UDP长度比较也就是480位;能表示范围2^480-1(就好比如:10等于4坤;这里坤的单位就是2.5)
举例:
如果首部长度值是5;就是20字节;选项前面也是刚好20字节;那么就没有选项
如果首部长度值是15;就是60字节;选项部分就是40字节
保留6位:和c语言的保留字是类似;现在我不用;但是我未来可能扩展会用;我先占个位。
6个标志位:很关键;后面解释
校验和:与UDP的同理
选项和16位指针:后面解释。
16位窗口大小:后面解释