欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[TCP/IP] TCP的报文头

程序员文章站 2022-03-20 17:23:47
1.源端口和目的端口:各占2个字节,分别写入源端口和目的端口; 2.序列号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 3.确认号:占4个字节,是期望收 ......

[TCP/IP] TCP的报文头

1.源端口和目的端口:各占2个字节,分别写入源端口和目的端口;
2.序列号:占4个字节,tcp连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;
3.确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,b收到了a发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明b正确的收到了a发送的到序号700为止的数据。因此,b期望收到a的下一个数据序号是701,于是b在发送给a的确认报文段中把确认号置为701;
4.数据偏移报头长度:占4位,它指出tcp报文的数据距离tcp报文段的起始处有多远;
5.保留:占6位,保留今后使用,但目前应都位0;
6.标志位
同步syn,在连接建立时用来同步序号。当syn=1,ack=0,表明是连接请求报文,若同意连接,则响应报文中应该使syn=1,ack=1;
确认ack,仅当ack=1时,确认号字段才有效。tcp规定,在连接建立后所有报文的传输都必须把ack置1;
终止fin,用来释放连接。当fin=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
紧急urg,当urg=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;
推送psh,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将psh=1;
复位rst,当rst=1,表明tcp连接中出现严重差错,必须释放连接,然后再重新建立连接;
7.窗口大小:占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受;
8.检验和:占2字节,校验首部和数据这两部分;
9.紧急指针:占2字节,指出本报文段中的紧急数据的字节数;
10.选项:长度可变,定义一些其他的可选的参数。

[TCP/IP] TCP的报文头