首页
学习
活动
专区
工具
TVP
发布
技术百科首页 >TCP >TCP报文的基本结构是什么?

TCP报文的基本结构是什么?

词条归属:TCP

TCP报文的基本结构如下:

  • 源端口号(16位):标识发送端口号。
  • 目的端口号(16位):标识接收端口号。
  • 序列号(32位):标识在该报文段中第一个数据字节的序号。
  • 确认号(32位):标识期望接收的下一个字节的序号。
  • 数据偏移(4位):标识TCP头部长度,以4字节为单位。
  • 保留(6位):保留未使用,置为0。
  • 控制标志(6位):标识TCP报文的控制信息,如ACK、SYN、FIN等。
  • 窗口大小(16位):标识接收方的窗口大小,用于流控制。
  • 校验和(16位):用于检验TCP报文的正确性。
  • 紧急指针(16位):标识紧急数据的末尾位置。
  • 选项(可选):用于TCP的高级功能,如窗口扩大、时间戳等。
相关文章
[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.选项:长度可变,定义一些其他的可选的参数。
唯一Chat
2019-09-10
1.3K0
TCP报文发送的那些事
 今天我们来总结学习一下TCP发送报文的相关知识,主要包括发送报文的步骤,MSS,滑动窗口和Nagle算法。
程序员历小冰
2019-04-18
1.1K0
TCP报文发送的那些事
 今天我们来总结学习一下TCP发送报文的相关知识,主要包括发送报文的步骤,MSS,滑动窗口和Nagle算法。
程序员历小冰
2019-04-25
1.4K0
[TCP/IP] TCP报文长度是由什么确定的
MTU:最大传输单元,以太网的MTU为1500Bytes MSS:最大分解大小,为每次TCP数据包每次传输的最大数据的分段大小,由发送端通知接收端,发送大于MTU就会被分片
唯一Chat
2019-09-10
3.4K0
java 与c++ socket数据通信(结构体的形式)tcp报文发送
另一端是Java写客户端程序,两者之间需要通信。 c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组。 解决方法:c++/c socket 在发送结构体的时候其实发送的也是字节流。因为结构体本身也是内存中的一块连续数据。问题就变成了如何把结构体手动转成字节的问题了 采用类似的报头: // packet head typedef struct tagPacketHead{ long PacketID; long PacketLen;} PacketHead;此时套接口的读写方式
聚优云惠
2022-05-25
1.4K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券