源端口和目的端口

各占16位 ,服务相对应的源端口和目的端口。

序列号:

占32位,它的范围在[0~2^32-1],序号随着通信的进行不断的递增,当达到最大值的时候重新回到0在开始递增。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按照顺序编号。整个要传送的字节流的起始号必须在连接建立时设置。下个序列号(发送)等于上个序列号(接受)加上报文长度。

确认号:

占32位,用于确认对上个数据包接收成功。确认号(发送)等于上个序列号(接受)加一

数据偏移:

占4位,指出TCP报头从起始端到数据端的距离,该字段描述了TCP报头的长度。由于option字段的存在,所以TCP报头的长度往往是不确定的,因此该字段很有存在的必要了。需要注意的是“数据偏移”计算的单位是32位字(即4个字节为一个计算单位)。因此“数据偏移”有4个位所以能够表达的最大的十进制为15,也就说TCP报头的最大长度为60字节。

保留位:

      占6位,保留为今后使用,目前该字段为全0.

标志位:

占6位,用于标志数据包

URG:  该字段为1时紧急发送数据。相当于提高数据发送的优先级,不按照原来队列顺序来进行发送,同时启用紧急指针。

ACK: 该字段为1时表示确认号有效,当该位为0是表示确认号无效。TCP规定,建立链接后所有数据报文段ACK都设为1。

PSH:  该字段为1时紧急接收数据。该字段允许数据包不需要等到接收端的缓存(窗口)满了后才上交数据,而是直接上交数据。

RST: 该字段为1时表示该连接出现严重的错误,必须释放该连接再重新建立连接进行数据传输。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。

SYN: 该字段位1时表示发送连接请求,用来在建立连接时进行同步序号。

FIN: 该字段为1时表示发送释放请求,用于释放当前的连接。

窗口:

   占16位。窗口指的是接收窗口。用于限制发送方当前允许发送的数据量。这是因为接收方的数据缓存空间是有限的。

检验和:

   占16位。检验和字段检验的范围包括首部和数据两部分。

紧急指针:

占16位。当URG=1的时候才生效,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此紧急指针指出了紧急数据的末尾报文段中的位置。当所有的紧急数据都处理完毕时,TCP就告诉应用程序恢复正常的操作。

选项:

   长度可变,最长可达40字节(320位)。当没有使用option字段的时候TCP报文首部长度为20字节。

流量控制:

  发送端发送的流量不可以无限大,因为接收端的缓存区是有限的,因此需要在TCP报文当中添加windows字段

windows字段可以表示当前发送的流量大小,如果发送的流量大于接收端处理流量的缓存,接收端会在回复TCP报文

时置窗口大小为自身所能处理的大小。这样下次发送端会依照此窗口大小来调整所发的数据流量大小,避免重复丢包。

另外当发送端刚好发完一次窗口大小的流量,那么他会等待接收端的确认包后才继续下次发送。

TCP报文的更多相关文章

  1. 计算机网络(8)-----TCP报文段的首部格式

    TCP报文段的首部格式 概述 TCP报文段首部的前20个字节是固定的,因此TCP首部的最小长度是20字节. 源端口和目标端口 各占2个字节,分别写入源端口号和目的端口号. 序列号 占4个字节,表示本报 ...

  2. TCP报文解析

    概述 在<网络基础总结(一)>总结了TCP建立连接和断开连接的流程,然而TCP协议远比我所了解的复杂得多,我所知的可以说就冰山一角,所总结的也只是纸上谈兵,仅仅只能对TCP有个肤浅的认识, ...

  3. TCP报文首段格式

    参考:https://www.bilibili.com/video/av9876107?from=search&seid=5217429010533979778 TCP(Transmissio ...

  4. TCP报文格式

    转载自https://blog.csdn.net/mary19920410/article/details/58030147 1.TCP报文格式 TCP报头中的源端口号和目的端口号同IP数据报中的源I ...

  5. (转)tcp/ip协议的简单理解 -- ip报文和tcp报文的格式

    1.概念: TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程.入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地.出栈的过程,数据接收方每层不断地拆除首部 ...

  6. TCP报文格式详解

    TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应 ...

  7. 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层

    小结: 1. 网络层两种服务 虚电路服务 virtual circuit  电信网 网络层负责可靠交付 数据报服务  网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...

  8. TCP报文首部详解

    首部固定部分各字段的意义如下: 1.源端口和目的端口,各占2个字节. 2.序号:占4个字节,序号范围为0到2的32次方-1,序号增加到2的32次方-1之后,下一个序号变为0,在一个TCP连接中传送的字 ...

  9. MAC帧格式、IPV4数据报格式、TCP报文格式、UDP数据报格式

    1.MAC帧格式 类型:2字节,指出数据域中携带的数据应交给哪些协议实体处理 校验码:校验数据段(采用32位CRC冗余校验方式进行校验) 2.IPV4数据报 版本:IP协议版本,这里为4 首部长度:占 ...

随机推荐

  1. error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

    更新的软件可以解决 TortoiseGit-preview-2.5.7.0-20180127-b2d00f8-64bit.msi和Git-2.16.2-64-bit.exe. 链接地址为: https ...

  2. Xcode - 添加自定义代码提示

    在开发过程中我们要学会去模仿苹果的一些用法,这样才能让开发更有效率,更规范. 1.苹果自带的代码片段提示 代码片段就是你在Xcode中敲for然后回车,你会看到 for (<#initializ ...

  3. 命令行连接mysql服务器时 报Can't connect to local MySQL server through socket 'xxx.sock'错误

    本来之前用的好好的mysql服务器,突然就报Can't connect to local MySQL server through socket 'xxx.sock'错误了 遇到该问题思路首先是:检查 ...

  4. 用Copy命令合并文件

    用Copy命令合并文件 这个文章是在我以前的百度空间里面发表过的,后来因为某个内分泌失调的管理员把我的空间http://hi.baidu.com/kamdy   封了! 旧事不提,还是回到主题吧,这个 ...

  5. IOS多线程之线程的创建

    版权声明:原创作品,谢绝转载!否则将追究法律责任.   之前也说过线程是消耗资源的.多线程会占用你应用程序(和系统的)的内存使用和性能方面的资源.我们创建一个线程后可以对他的一些部分进行配置例如可以对 ...

  6. Java 8 特性 – 终极手册

    简介 毫无疑问,Java 8的发布是自Java 5(它的发布已远在2004年)以来在Java世界中最重大的事情.它带来了超多的新特性,这些特性分别被加入到Java语言本身.Java编译器.类库.工具类 ...

  7. 【Java基础】StringTokenizer用法

    写在前面 因为最近在接触hadoop的东西,看示例WordCount的时候里面有一个StringTokenizer的东西特地看了一下 The string tokenizer class allows ...

  8. 利用腾讯云COS云对象存储定时远程备份网站

    版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...

  9. 原生js--insertAdjacentHTML

    insertAdjacentHTML是IE浏览器提供向DOM中插入html字符串的方法,字符串会自动生成在DOM树中. 其调用方式为elem.insertAdjacentHTML( position, ...

  10. CF 672D Robin Hood(二分答案)

    D. Robin Hood time limit per test 1 second memory limit per test 256 megabytes input standard input ...