TCP/IP数据包首部解析
从头开始学计网,记录一下笔记
** 参考:《图解TCP/IP》**
TCP数据包结构:
1-1.源始端口,16位,范围当然是0-65535啦。
1-2.目的端口,同上。
2-1.序列号:字段长32位,指发送数据的位置,TCP为发送的每个字节都编一个号码,这里存储当前数据包数据第一个字节的序号。每发送一次数据,就累加一次该数据字节数的大小。
序列号不会从0或1开始,会从随机数开始循环增加。(建立和断开连接的SYN与FIN包不携带数据,但也会作为字节增加序列号)
3-1.确认应答号:TCP告诉接受者希望他下次接到数据包的第一个字节的序号,可以认为在这个序号前的数据已正常接收。
4-1.数据偏移:4位,该字段表示TCP数据部分从包的那个部分开始(TCP包首部的长度)。字段长度单位为32位(4字节),最多表示16*32位。
比如TCP首部20字节,5个32位,偏移为5,0101
4-2.保留:一般为0,常被无视。
4-3.控制位:8位
1)CWR、ECE,与IP首部的ECN字段对应,ECE标志为1,则通知对方网络拥塞,已将拥塞窗口缩小。
2)URG:urgent flag,置1是表示数据需要紧急处置
3)ACK:acknowledgement flag,置1时,确认应答字段有效,除了建立连接的SYN包之外均应置1
4)PSH:push flag,置1时,应立刻传给上层应用协议,PSH置0时,并不需要立刻传而是先缓存
5)RST:reset flag