TCP协议首部分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LLZK_/article/details/61195859

这里写图片描述

源端口和目的端口–> 各两个字节,用来表明源和目标。和UDP类似。
序号–>用来指定发送数据的编号。TCP的数据是按字节编号的,这里的序号就指本报文段数据的第一个字节的编号。
确认号–>用于向发送方发送确认信息,表示“我收到你发送的数据”,接收到数据的最后一个字节的序号加1
4位首部长度–>指报文段的首部的总长度。4位能表示最大数为15,一个单位为4字节,所以首部最大长度为4*15=60字节,最小长度为20字节。
保留6位–>无意义,保留以后使用。

6个标志位

URG:紧急标志位,通常和16位紧急指针一起使用。当URG为1时表示紧急指针有效。用于传送高优先级的数据。
ACK:确认标志位,当ACK为1的时候,确认号才有效。ACK为0时,确认号无效。
PSH:我将其理解为催促标志位,当发送报文将此标志位置为1时,接受方收到后就会尽快将接受的数据交付给应用进程而不是等到缓冲区满。
RST:复位标志位,RST为1时,表明TCP连接出现严重差错,必须释放连接,重新建立。还可以用来拒绝一个报文段或拒绝一个非法连接。
SYN:同步标志位,在连接建立时,用于同步序号,SYN为1就表示这是一个连接请求报文或者连接接受报文。
FIN:终止标志位,当FIN为1时,表明数据已经发送完毕,要求释放连接。

16位窗口大小–> 用于流量控制,向发送端发送己方接受窗口的大小,来限制发送端的发送速度。
16位检验和–>和UDP一样,检验时同样要加伪首部,并且是首部和数据都检验。
16位紧急指针–>仅在URG为1的时候有效,指出了紧急数据结尾的位置,紧急数据后面就是普通数据。及时窗口为0,也可发送紧急数据。
选项–>长度可变,最长可达40字节。

URG和PSH的区别?

URG是紧急标志位,当它为1的时候表明此报文段中含有紧急数据,并且紧急数据排在普通数据的前面,当接受端收到此报文后后必须先处理紧急数据。而后再处理普通数据。
PSH是催促标志位,当发送端将PSH置为1时,TCP会立即创建一个报文并发送。接受端收到PSH为1的报文后就立即将接受缓冲区内数据向上交付给应用程序,而不是等待缓冲区满后再交付。

两者都可理解为处理紧急数据的标志位,只是处理方法不同。URG的紧急数据仅在报文内,而PSH的紧急数据还在接受缓冲区内。

猜你喜欢

转载自blog.csdn.net/LLZK_/article/details/61195859