TCP/IP 协议栈
以太网帧
MAC Header 【以太网帧的数据】 MAC Ender
TCP 协议头
First
Source Port :源端口
Destination Port:目的端口
Second
- Sequence Number:保证有序处理。
因为IP层不保证有序 - TCP中数据不是按包排序,是按字节排序,每个包的Seq Number代表的是发送字节的起始序号。
- 发送第一个包序号是随机的,三次握手中交换。
Third
- Acknowledgment Number:应答num,保证可靠
一个主机向另一个主机发送数据,目的主机接收后,回应收到,否则,一直发送。
Fourth
- Data Offset:数据偏移量
因为Options长度是不确定的,所以,从哪开始获取数据呢,就从这个来判断 - Reserved:保留字
- URG:紧急标识。(较少用)
ACK:确认收到消息
PSH:向对方发送真正的负载数据,这个设置为1
RST:复位。比如,向主机未开通80端口而依旧发送数据的话,会收到此标识位为1.
SYN:三次握手时用。每次握手都要用
FIN:第四次挥手时用。互相告知,结束。 - Window:一个窗口多大,比如:一个窗口4048,每个包1024,那么一次可以接收4个,当满时,必须停止。
Fifth
- Checksum:校验和,与IP中的校验各类似。
- Urgent Pointer:紧急指针。
Sixth
- Options:选项。比如,可以设置传输的最大报文大小。
TLV格式:type length value。 - Padding:保证32位对齐。
Seventh
data:真正TCP数据段。
Ack Number
在TCP 中表示:希望对方发送数据的起始位置
如:A向B发送一个大小为100B的数据,其Seq Number=100,则B收到后,返回Ack Number为2001.