首页 > 其他分享 >TCP协议

TCP协议

时间:2024-10-15 09:44:10浏览次数:8  
标签:协议 首部 报文 TCP 发送 序号 数据

TCP报文段

img

  1. 源端口和目的端口。各占2B。分别表示发送方和接收方使用的端口号。
  2. 序号。占4B,范围为0~\(2^{32}-1\),共\(2^{32}\)个序号。TCP连接中传送的字节流中的每个字节都要按顺序编号,序号字段值指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号字段值是301,而携带的数据共有100B,表明本报文段的数据的最后一个字节的序号是400,因此下一个报文段的数据序号应从401开始。
  3. 确认号。占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到。例如,B正确收到了A发送过来的一个报文段,其序号字段是501,而数据长度是200B(序号501~700),这表明B正确收到了A发送的到序号 700为止的数据。因此B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。
  4. 数据偏移(即首部长度)。占4位,这里不是IP 数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出 TCP 报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位(以4B为计算单位)。因为4位二进制数能表示的最大值为15,所以 TCP首部的最大长度为60B。
  5. 保留。占6位,保留为今后使用,但目前应置为0。
  6. 紧急位 URG。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。紧急数据被插入到报文段数据的最前面,而在紧急数据后面的数据仍是普通数据,因此要与首部中的紧急指针字段配合使用。
  7. 确认位 ACK。仅当 ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把 ACK置1。
  8. 推送位 PSH(Push)。两个应用进程进行交互式通信时,都希望在键入一个命令后立即就能收到对方的响应,此时发送方TCP把PSH置1,接收方TCP收到 PSH=1的报文段后,就尽快交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  9. 复位位RST(Reset)。当RST=1时,表示 TCP连接中出现严重差错(如主机崩溃等),必须释放连接,然后重新建立传输连接。此外,它还可用于拒绝一个非法的报文段。
  10. 同步位SYN。当SYN=1时表示这是一个连接请求或连接接受报文。当SYN=1,ACK=0时,表明这是一个连接请求报文,若对方同意建立连接,则应在响应报文中使用SYN=1,ACK=1。
  11. 终止位 FIN(Finish)。用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
  12. 窗口。占2B,范围为0~\(2^{16}-1\)。窗口值告诉对方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。接收方的数据缓存空间是有限的,因此窗口值作为接收方让发送方设置其发送窗口的依据。例如,设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的一方还有接收1000字节数据(字节序号为701~1700)的接收缓存空间。
  13. 检验和。占 2B。检验和字段检验的范围包括首部和数据两部分。在计算检验和时,和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的协议字段的17改成6. UDP长度字段改成TCP长度,其他的和UDP一样)。
  14. 紧急指针。占2B。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据在报文段数据的最前面)。也就是说,使窗口为零也可以发送紧急数据。
  15. 选项。长度可变,最长可达40B。当不使用选项时,TCP首部长度是20B。TCP最初只规定了一种选项,即最大报文段长度(Maximum Segment Size, MSS)。MSS是TCP报文段中的数据字段的最大长度(注意仅仅是数据字段)。
  16. 填充。这是为了使整个首部长度是4B的整数倍。

标签:协议,首部,报文,TCP,发送,序号,数据
From: https://www.cnblogs.com/AH20/p/18466808

相关文章

  • UDP协议
    UDP概述用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,即复用、分用以及差错检测功能。UDP的主要特点是:UDP是无连接的,即发送数据之前不需要建立连接,减少了开销和发送数据之前的时延UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态......
  • Connection to tcp://192.168.112.137:1935?tcp_nodelay=0 failed: Connection timed
    记录一下自己的报错和解决步骤输入catnginx.conf 查看Nginx的配置文件nginx.conf修改nginx核心配置文件nginx,添加rtmp模块rtmp{                                          ......
  • STP生成树协议
    作用尽可能少的阻塞端口,实现无环路径防止广播风暴,mac地址表震荡 BPDU报文STP采用的协议报文是BPDU(BridgeProtocolDataUnit),也称为配置消息。STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80......
  • 实现基于UDS诊断协议的CAN本地OTA升级
    一、目标在上篇文章实现基于UDSLIN诊断协议的本地OTA升级-CSDN博客博客中已经基于LINUDS诊断协议实现了通过PC端上位机对MCU进行本地的OTA升级。本篇将在上篇文章的基础上实现基于UDS诊断协议的CAN本地OTA升级。本篇文章对实现的目的、需要用到的第三方工具请查看之前的博客相......
  • 实现基于UDS LIN诊断协议的本地OTA升级
    一、目标在上篇文章LIN诊断实现MCU本地OTA升级_linota-CSDN博客中已经基于LIN诊断协议实现了通过PC端上位机对MCU进行本地的OTA升级,但是没有完全按照UDS协议实现。本篇将在上篇文章的基础上进行改进,实现基于UDSLIN诊断协议的本地OTA升级。本篇文章对实现的目的、需要用到的第三......
  • 起吊机革新:协议转换器解锁安全与效率
    重工起吊机设备在工业生产中扮演着至关重要的角色,但其在实际应用中面临着一系列痛点问题。这些问题不仅影响了起吊机的性能和安全性,还限制了生产效率的提升。明达技术自主研发的MG协议转换器能够高效解决这些痛点,同时MG协议转换器作为一种关键设备,也为解决这些问题提供了新的思路。......
  • 虚拟机之间能够ping通,但是建立tcp连接时却显示Failed in connect to TCP server: No r
    实验环境:A、B、C三台虚拟机,A、B一个子网、B、C一个子网,AC之间通信通过B进行转发。现象:A、C相互能够ping通,但是尝试建立TCP连接时却一直显示Noroutetohost。能够ping通,按理讲路由表应该没问题,但是还是先对几个虚拟机之间的路由表进行检查。通过以下指令查看路由表:iproute......
  • MQTT协议
    MQTT与HTTP协议的区别:MQTT以数据为中心,而HTTP是以文档为中心的。HTTP是用于客户端-服务器计算的请求-响应协议,并不总是针对移动设备进行优化。MQTT在这些术语中的主要优点是轻量级(MQTT将数据作为字节数组传输)和发布订阅模型,这使其非常适合资源受限的设备并有助于节省带宽。......
  • CoAP协议
    本片文章通过协议的产生背景、应用场景、与MQTT对比三方面来阐述CoAP协议。完成该文的阅读能初步了解CoAP协议是什么、解决什么。CoAP协议产生的背景以及意义想要弄明白CoAP协议需要对MQTT有一定的了解,物联网的应用层面MQTT是一个绕不开的话题。而且在物联网发展的当下来说,大......
  • 智融SW3538支持 PD 的多快充协议双口充电解决方案
    1.概述SW3538是一款高集成度的多快充协议双口充电芯片,支持A+C口任意口快充输出,支持双口独立限流。其集成了7A高效率同步降压变换器,支持PPS/PD/QC/AFC/FCP/SCP/PE/SFCP/TFCP/VOOC等多种快充协议,支持140W输出功率,集成CC/CV模式、双口管理逻辑以及双芯片动态......