首页 > 其他分享 >TCP协议

TCP协议

时间:2022-08-27 12:00:56浏览次数:43  
标签:协议 ECE 数据 段长 TCP Flag FIN

TCP协议

TCP(Transmission Control Protocol)协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。 TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。

1. TCP协议格式

如图1所示为TCP协议格式。

  • 源端口

  表示发送端端口号,字段长16位

  • 目的端口

  表示接收端端口号,字段长16位

  • 序列号

  序列号是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小,字段长32位

  • 确认应答号

  是指下一次应该收到的数据的序列号。实际上,它是指已收到确认应答号前一位为止的数据。发送端收到这个确认应答号以后可以认为在这个序号以前的数据都已经被正常接收,字段长32位

  • 数据偏移

  该字段表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,当然也可以把它看做TCP首部的长度。该字段长4位,单位为4字节(32位)。不包括选项字段的话,如图1所示TCP首部为20字节长,因此数据偏移字段可以设置为5。反之,如果该字段的值是5,那说明从TCP包的最一开始到20字节为止都是TCP首部,余下的部分为TCP数据。

  • 保留

  该字段主要是为了以后扩展时使用,其长度为4位。一般设置为0,但即使受到的包在该字段不为0,此包也不会被丢弃

  • 控制位

  字段长为8位,每一位从左到右分别为CWR、ECE、URG、ACK、PSH、RST、SYN、FIN。这些控制标志也叫控制位。当它们对应的位上值为1时,则表达含义。

    • CWR(Congestion Window Reduced)

    CWR Flag与后面的ECE Flag都用于IP首部的ECN字段。ECE flag为1时,则通知对方已经将拥塞窗口缩小。

    • ECE(ECN-Echo)

    ECE flag表示ECN-Echo。值为1会通知通信对方,从对方到这边的网络有拥塞。在收到数据包的IP首部中ECN为1时,将TCP首部中的ECE设置为1    

    • URG(Urgent Flag)

    该位为1时,表示包中有需要紧急处理的数据。对于需要紧急处理的数据,会在后面的紧急指针中再进行解释。

    • ACK(Acknowledge Flag)

    该位为1时,确认应答的字段变为有效。TCP规定除了最初建立连接时的SYN包之外该位必须设置为1

    • PSH(Push Flag)

    该位为1时,表示需要将收到的数据立刻传给上层应用协议。PSH为0时,则不需要立即传而是先进性缓存

    • RST(Reset Flag)

    该位为1时,则表示TCP连接中出现异常必须强制断开连接。例如一个没有被使用的端口即使发来连接请求,也无法进行通信。此时就可以返回一个RST设置为1的包。此外,程序宕掉或切断电源等原因导致主机重启的情况下,由于所有的连接信息将全部被初始化,所以原有的TCP通信也将不能继续进行。这种情况下,如果通信对方发送一个设置为1的RST包,就会使通信强制断开连接

    • SYN(Synchronize Flag)

    用于建立连接。SYN为1表示希望建立连接,并在其序列号的字段进行序列号初始值的设定

    • FIN(Fin Flag)

    该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。每个主机又对对方的FIN包进行确认应答以后就可以断开连接。不过主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发。

  • 窗口大小(Window Size)

  该字段长为16位。用于通知从相同TCP首部的确认应答号所指位置开始能够接收的数据大小(8位字节)。

  • 校验和(Checksum)
  • 紧急指针(Urgent Pointer)
  • 选项(Options)

 

图1:TCP协议格式

 

标签:协议,ECE,数据,段长,TCP,Flag,FIN
From: https://www.cnblogs.com/bonne-chance/p/16630292.html

相关文章

  • 一台服务器最大并发 tcp 连接数多少?65535?
    转载:https://www.jianshu.com/p/0154dff4be77首先,问题中描述的65535个连接指的是客户端连接数的限制。在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经......
  • TCP 协议的3次握手4次挥手
    1.1TCP协议面向连接,且具备顺序控制和重发机制的可靠传输。他的可靠性是在于传输数据前要先建立连接,确保要传输的对方有响应才进行数据的传输。因此TCP有个经典的3......
  • 图解tcpip(第5版) pdf
    高清扫描版下载链接:https://pan.baidu.com/s/16Owjujj9v7AHYp408FHgKg点击这里获取提取码这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握......
  • 使用Quic协议加速网络
    2022年6月6日,IETFQUIC和HTTP工作组成员RobinMark在推特上宣布,历时5年,HTTP/3终于被标准化为RFC,这也标志值QUIC作为http/3的底层传输协议的地位正式宣布转正。之前我也简......
  • 【开源】串口/蓝牙/TCP/UDP调试工具SerialTest
    可在Windows/Linux/Android上运行,功能丰富的调试工具。支持数据收发/实时绘图/快捷方式/文件收发功能。支持串口/蓝牙SPP客户端/蓝牙SPP服务器/蓝牙BLE客户端/TCP客户端/......
  • 尼康高度计RS232通讯协议
    最近在项目中遇到一款尼康的高度计MFC-101A,通讯协议是RS232,仪器说明书上只有RS232输出的内容,具体命令是什么,查遍了百度都没有。最后想到以前项目中连接过的一款尼康的高度......
  • tcp ip
     TCPIP详解概述TCP协议详解  ......
  • 关于开源协议
    如果你开发的时候用了开源代码/组件。。。那就关注一下开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。开源协议虽然不一定具备法......
  • 用 Wireshark 分析 TCP 吞吐瓶颈
    https://www.kawabangga.com/posts/4794Debug网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽)。延迟比较好验证,Ping一下或者 mtr 一下就能看出来。这篇文章分......
  • TCP协议详解
    目录TCP协议报头三次握手四次挥手在网络基础里面有提到TCP协议是一种面向连接的可靠的传输协议,那么本文主要介绍TCP协议是如何实现连接及可靠性传输的。TCP协议报头......