在了解TCP首部各个字段的意义后,我们就能更清楚的了解TCP协议的。TCP首部字节有20个字节是固定了,后面还有可选选项。TCP是以32位(4字节)对齐的。

源端口和目的端口:TCP是通过通口号来进行应用进程间的通信的。
序号:占32位,序号的范围是0~(2^32-1),当序号变为2^32-1后,下一个序号就要重新从0开始了。假如一个报文段的序号为1001,它的长度为100字节,那么下一个报文段的序号就是1101。
确认号:占32位。确认号是对收到的分组进行确认的。假如A向B发送了一个报文段,A的序号为101,报文段长度为100字节,那么B收到该报文段后,就需要对A发送确认报文段,这个确认报文段里的确认号为201。有以下公式:
如果确认号为N+1,那么表示到序号N位置的所有数据均已收到。
数据偏移:该字段即表示tcp首部的长度,该字段占4位,单位为4字节。所以,一个TCP的首部最大为60字节。
六个控制位:每个控制位都只占一位。
UGR:紧急字段,当该值为1时,表示此报文段含有紧急数据,应优先发送。该字段需要和后面会说到的紧急指针配合使用。
ACK:确认字段。该字段在建立连接和断开连接时会用到,传送数据阶段一律为1。
PSH:推送字段。为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
RST:重置连接字段志。用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
SYN:同步字段。用于建立连接时使用。
FIN:终止字段。用于释放连接时使用。
窗口:占16位。窗口值是的范围是【0,2^16-1】之间的整数。注意,它表示的是接受窗口,表示允许接受的字节数。比如,B的向A发送了一个确认报文段,该报文段的确认号为101,窗口值为1000.那么表示B下一个接受的报文段序号应该是101,且报文段长度不能超过1000字节。
校验和:占16位。用来检验报文段有没有错误。
紧急指针:占16位。只有当URG字段为1时,该字段才有意思。它表示紧急数据的长度
相关推荐:《linux视频教程》
Atas ialah kandungan terperinci TCP数据段的首部格式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Perbezaan antara tcp dan udp
Platform dagangan pukal
Perbezaan antara rawak dan pseudo-rawak
Kaedah input rujukan mutlak
Penggunaan fungsi fscanf
Bagaimana untuk menyelesaikan masalah watak bercelaru semasa membuka halaman web
Bagaimana untuk menyelesaikan internalerror0x06
Cara menggunakan setiap fungsi dalam js