zoukankan      html  css  js  c++  java
  • 结合RFC标准看待数据段、数据报和数据帧

    专业术语

    中文 英文
    TCP数据段 TCP Segment
    IP数据报 IP Datagram
    Ethernet数据帧 Ethernet Frame

    1、TCP Segment

    RFC793 传输控制协议,即最初的TCP网络规范中,TCP segment 和 TCP segments 关键字总计出现了 9 次,segment 关键字更是出现了 338 次。

    1.1、TCP Segment是否包括TCP Header呢?

    我认为,从概念上讲,TCP Segment是包含TCP Header的,TCP Segment可以表示TCP Header+TCP Payload。

    下面的内容截取自 RFC793 传输控制协议 Glossary

    TCP首部在TCP段的开头,所以说TCP Segment是包含TCP Header的。

    1.2、TCP Header中的Acknowledge Number的增量是否包含TCP Header的长度?

    我认为是不包含的。

    首先,从 RFC793 传输控制协议 3.1.Header Format 了解一下概念:

    序列号 Sequence Number:

    此段中第一个数据八位字节的序列号(存在SYN时除外)。如果存在SYN,则序列号为初始序列号(ISN),第一个数据八位组为ISN+1。

    确认号 Acknowledge Number:

    如果设置了ACK控制位,则该字段包含该段发送方期望接收的下一个序列号的值。一旦建立了连接,将始终发送此消息。

    我们来看下面的例子,来自 RFC793 传输控制协议 3.4.Establishing a connection

    1. 客户端首先发送一个SYN段,指示它将使用从序列号100开始的序列号。
      即客户端告诉服务端:我的初始序列号ISN等于100。
    2. 服务端发送一个SYN段并确认它从客户端接收到的SYN段。注意,确认字段表示服务端现在期望听到序列101(=客户端SYN段的序列号+1),确认占用序列100的SYN。
      即服务端告诉客户端:我知道客户端的ISN等于100了,客户端发送给服务端的下一个段的序列号等于101。另外,我的ISN是300。
    3. 客户端响应一个空段,其中包含服务端的SYN段的ACK;
      即客户端告诉服务端:我知道服务端的ISN等于300了,服务端发送给客户端的下一个段的序列号等于301。
    4. 客户端发送一些数据。请注意,本次的序列号和上一次空段的序列号相同,都是101,因为ACK不占用序列号空间(如果占用了序列号空间,我们将结束ACK!)。
    5. 服务端发送一个空段,其中包括客户端上一个数据段的ACK。注意,确认字段表示服务端现在期望听到序列1643(= 上一个客户端发来的TCP段的序列号+TCP段的数据部分的长度
      即服务端告诉客户端:我收到你序列号从101开始,实际载荷(即数据部分的)长度为1542的段了,确认占用1642的序列号,客户端发送给服务端的下一个段的序列号等于1643。

    1.3、MSS 是否包含TCP Header的长度?

    答案是否定的。

    MSS: Maxitum Segment Size 最大分段大小。从 RFC793 传输控制协议 3.1.Header Format 了解一下概念:

    如果存在此选项,则它会在发送此段的TCP上传递最大接收段大小。
    此字段只能在初始连接请求中发送(即,在设置了SYN控制位的段中)。如果未使用此选项,则允许任何段大小。

    • 注意,只有在“三次握手”的前两次(即设置了SYN控制位的段中),才会出现 MSS 选项。

    那么,MSS的大小是如何定义的呢?从 RFC879 The TCP Maximum Segment Size and Related Topics 介绍部分

    TCP MSS = IP 数据报长度 - 40

    RFC879 第三节更清晰的说明了:

    所以说,MSS 是不包含 TCP Header 的。

    2、IP Datagram

    我们知道 IP协议是网络层协议,在 RFC791 INTERNET PROTOCOL 的 Glossary 中关键字 datagram 出现了 208 次,另外关于网络数据报的术语解释如下:

    一对因特网模块之间交换的数据单位(包括 IP Header)

    另外,RFC894 A Standard for the Transmission of IP Datagrams over Ethernet Networks 就明确使用了 IP Datagram 的说法。另外,也是在这篇文章中,用到了 Ethernet Frame 的说法。

    3、Ethernet Frame

    RFC1042 A Standard for the Transmission of IP Datagrams over IEEE 802 Networks 提到了关键字 frame 共计 29 次。

    IEEE 802又称为LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会),致力于研究局域网和城域网的物理层和MAC层中定义的服务和协议,对应OSI网络参考模型的最低两层(即物理层和数据链路层)。

  • 相关阅读:
    ASE19 团队项目 模型组 scrum report集合
    ASE19团队项目alpha阶段model组 scrum2 记录
    ASE19团队项目alpha阶段model组 scrum1 记录
    ASE第二次结对编程——Code Search
    jdk中集成的jre和单独安装的jre有什么区别?
    window, linux, mac 比较文件和文件夹的区别
    Java 调用python、ruby 等脚本引擎
    微软软件工程 第一周博客作业
    绩效考核(2018.5.28~2018.6.3)
    数据库需求文档
  • 原文地址:https://www.cnblogs.com/kendoziyu/p/15349761.html
Copyright © 2011-2022 走看看