TCP报文段详解

TCP协议tcp报文段源端口&目的端口2字节(tcp的分用功能以端口实现)序号4字节tcp三次握手中的seq,表示tcp数据段发送的第一个字节的序号,范围[0,2^32-1],即mod2^32;例如,seq=201,携带的数据有100,那么最后一个字节的序号就为300,那么下一个报文段就应该从401开始,下一个序列的首地址.tcp是面向字节…

大家好,又见面了,我是你们的朋友全栈君。

TCP协议

  • tcp报文段
    图片来源于网络
  1. 源端口&目的端口 2字节
    (tcp的分用功能以端口实现)

  2. 序号 4字节
    tcp三次握手中的seq,表示tcp数据段发送的第一个字节的序号,范围[0,2^32 – 1],即mod 2^32; 例如,seq = 201,携带的数据有100,那么最后一个字节的序号就为300,那么下一个报文段就应该从401开始,下一个序列的首地址.

    tcp是面向字节流的,在tcp连接中每一个字节流都按顺编号

  3. 确认号 4字节
    为期望收到对方下一个报文段的第一个数据字节序号

注意:若确认号=N,则表示序号N-1为止的序列号已正确收到

  1. 数据偏移 4位
    指出偏移多远,实际就是指定报文段的首部长度
    因为占4位,最大15,因此数据最大偏移为60:即为tcp首部最大长度

  2. 控制位 6位

URG
为1表示高优先级数据包,紧急指针字段有效。
(告诉系统此报文段有紧急数据,应尽快传输,而不要原来的排队顺序)

ACK
==1 表示确认号字段有效(连接建立后,传输的报文段都应该置为1)
==0 确认号无效

PSH
为1表示是带有PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。

RST
为1表示出现严重差错。可能需要重现创建TCP连接。还可以用于拒绝非法的报文段和拒绝连接请求。
RST 可称为重建位&重置位
SYN
为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步
当 syn=1&ack=1,表明这是一个连接请求报文段
FIN
==1 表示发送方没有数据要传输了,要求释放连接

  1. 窗口 2字节
    表示从确认号开始,本报文的接受方可以接收的字节数,即接收窗口大小,用于流量控制。
    (窗口字段明确指出了现在允许对方发送的数据量:窗口大小经常是在动态变换着的!)

  2. 校验和 2字节
    对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。这是一个强制性的字段。对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。这是一个强制性的字段。

  3. 紧急指针 2字节
    本报文段中的紧急数据的最后一个字节的序号。本报文段中的紧急数据的最后一个字节的序号。

  4. 选项字段—最多40字节
    每个选项的开始是1字节的kind字段,说明选项的类型。 每个选项的开始是1字节的kind字段,说明选项的类型。
    附:详细解释

选项表结束(1字节)
无操作(1字节) 用于选项字段之间的字边界对齐。
最大报文段长度
(4字节,Maximum Segment Size,MSS)通常在创建连接而设置SYN标志的数据包中指明这个选项,指明本端所能接收的最大长度的报文段。通常将MSS设置为(MTU-40)字节,携带TCP报文段的IP数据报的长度就不会超过MTU,从而避免本机发生IP分片。只能出现在同步报文段中,否则将被忽略。
窗口扩大因子(4字节,wscale),取值0-14。用来把TCP的窗口的值左移的位数,使窗口值乘倍。只能出现在同步报文段中,否则将被忽略。这是因为现在的TCP接收数据缓冲区(接收窗口)的长度通常大于65535字节。
sackOK—发送端支持并同意使用SACK选项。
SACK实际工作的选项。
时间戳(10字节,TCP Timestamps Option,TSopt)
发送端的时间戳(Timestamp Value field,TSval,4字节)
时间戳回显应答(Timestamp Echo Reply field,TSecr,4字节)

附:详细的存储图
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126175.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 18.04 安装NVIDIA显卡驱动教程[通俗易懂]

    Ubuntu 18.04 安装NVIDIA显卡驱动教程[通俗易懂]写在前面(2019-07-01更新)Ubuntu安装NVIDIA显卡驱动时遇到了一个比较大的问题,参考了几位博主的成果,成功安装好了驱动(只能说这独显没有浪费哈哈哈)。下面就把整个过程记述下来,以供大家一起参考。0.准备工作禁用BIOS中的secureboot,因为此方法使用第三方源安装显卡驱动,不禁止secureboot会导致安装的驱动不能使用,禁用也不会有多大安全隐…

    2022年6月7日
    50
  • 单片机八路抢答器计设计_基于单片机的三路抢答器设计

    单片机八路抢答器计设计_基于单片机的三路抢答器设计详细代码讨论加我QQ:1271370903一、设计任务与要求一、题目:8路比赛抢答器二、基本要求:利用8051单片机中断系统,制作一个有8个按键的比赛抢答器。在有人按键时进行对应选手显示。三、设计任务:1.设计硬件电路,画出电路原理图;2.画出程序流程图;3.编制程序,写出源程序代码;4.写出5000字的详细说明书,要求字迹工整,原理叙述正确,会计算主要元器件的一些参数,并选择元器件;5.个人总结。四、参考资料:1.教材;2.单片机实验指导书》**二、方案设计**方案:该系

    2022年10月20日
    0
  • kafka 认证和鉴权方式_kafka实际应用

    kafka 认证和鉴权方式_kafka实际应用前言kafka官网关于sasl_scram鉴权Kafka消费端配置创建SCRAMCredentials依赖zk,需要先启动zk,然后在zk中创建存储SCRAM凭证:cdkafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh–zookeeperzkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka–alter–add-config’SCRAM-SHA-256=[password=admin-secr

    2025年7月4日
    0
  • latex缩进与对齐_latex 换行缩进

    latex缩进与对齐_latex 换行缩进LATEX模板(中国运筹学会年会论文模板)%%Paper…关键词位于摘要下方,行首不缩进。摘要使用小五号(…以上这些词后均不换行。中文关键词之间以中文分号……2基础知识4Latex讲义1.单词之间用一个或多个空格分开.多个空格和一个空格效果相同.2.换行:生成的文件会自动换行,在tex文件中用一个回车换行……3.LaTeX在使用体验方面…

    2022年5月14日
    95
  • html 的scor属性,scrollheight属性「建议收藏」

    html 的scor属性,scrollheight属性「建议收藏」scrollHeight属性是属于什么范畴?CSS布局HTML小编今天和大家分享问大神,Height属性到底指的是什么html设置overflow-x:scroll;属性后怎么让指定位如果页面不够长(至少窗口长度两倍),那肯定滚动不到一半的位置。否则任何浏览器都不会产生误差。下面的例子输出100个,页面加载的时候会滚动到第51个。window.onload=function(…

    2022年7月23日
    11
  • PHP 7.0新增特性详解

    PHP 7.0新增特性详解

    2021年10月15日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号