发布于: 2023-4-13最后更新: 2023-12-21字数 00 分钟

参考:

杂记

  • ARP:Address Resolution Protocol。用于根据 IP 地址查询相应的以太网 MAC 地址。
  • FCS:Frame Check Sequence。帧检验序列。它是数据帧的一部分,用于检测数据在传输过程中出现的错误。在发送数据时,计算机网络会在数据帧的末尾添加校验序列。
  • MTU:Maximum Transmission Unit。一个网络包的最大长度,以太网中一般为 1500 字节。
  • MSS:Maximum Segment Size。除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。

协议层

数据链路层

点对点信道
  1. 封装成帧:把网络层的 IP 数据报封装成帧,SOH - 数据部分 - EOT
点对点的信道通常需要把网络层的 IP 数据报封装成帧,以便在物理层进行传输。帧是数据链路层的基本传输单位,它包含了数据和控制信息。常用的帧格式包括起始标志符(Start of Header,SOH)、数据部分和结束标志符(End of Transmission,EOT)
在封装成帧时,首先在数据部分前加上起始标志符 SOH,表示一个新的帧的开始。然后将网络层的 IP 数据报放入数据部分中。接着,在数据部分的末尾加上结束标志符 EOT,表示该帧的结束。最后,传输该帧。接收方会检测起始标志符和结束标志符,以确定接收的数据是否完整。
需要注意的是,封装成帧仅适用于点对点的信道,因为广播信道中的数据会被多个接收方接收,无法区分每个接收方需要接收的数据。在广播信道中,常用的方式是使用 MAC 地址来确定接收方。
  1. 差错检测:降低误码率(BER,Bit Error Rate),广泛使用循环冗余检测(CRC,Cyclic Redundancy Check)
差错检测是指在数据传输过程中检测并纠正数据中可能出现的错误。误码率(Bit Error Rate,BER)是指在传输过程中发生的误码比特数占发送比特总数的比率,它是衡量数据传输质量的重要指标之一。
循环冗余检测(Cyclic Redundancy Check,CRC)是一种常用的差错检测技术。它基于多项式的运算,通过在发送端对数据进行一定的处理(添加冗余校验码),然后在接收端对接收到的数据进行校验,来检测数据是否出现错误。
具体地说,CRC 的实现过程如下:
  1. 选择一个固定的生成多项式,通常用一个 32 位二进制数表示。
  1. 在发送端,将要发送的原始数据进行处理,添加一个固定长度的 CRC 校验码,使得整个数据包的长度增加,但是数据包的内容并不改变。
  1. 在接收端,接收到数据后,再使用相同的生成多项式进行计算,得到一个校验码,然后将这个校验码与接收到的数据包中所带的校验码进行比对。如果两个校验码相同,则说明接收到的数据包没有出现错误,否则说明数据包出现了错误。
CRC 检测技术具有高效、精确、简单等优点,因此被广泛应用于数据通信领域,能够有效地降低误码率。
CRC计算过程
CRC 的计算过程可以简单地描述为以下几个步骤:
  1. 选择一个固定的生成多项式 G(x)。生成多项式通常是一个二进制数,它的最高次项为 1,其他位数根据需要设为 0 或 1,例如,IEEE 802.3 标准中使用的生成多项式为 x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1。
  1. 用生成多项式 G(x) 的次数来确定校验码的位数。例如,对于 32 位的数据包,使用 32 位的校验码。
  1. 将数据包转换成二进制数表示,并在数据包末尾添加校验码所需的位数(通常是生成多项式的次数减 1)。这些位的初始值为 0。
  1. 对于每一位,执行以下操作:
      • 如果该位为 1,将当前的校验码和生成多项式进行异或运算,然后将结果作为下一个校验码的开头。
      • 如果该位为 0,直接将下一位作为校验码的开头。
  1. 当所有位都处理完毕时,最终得到的校验码就是要附加到数据包末尾的值。
例如,假设发送方要发送一个 8 位的数据包 10110110,使用生成多项式 x^3 + x + 1 进行 CRC 校验。首先,在数据包末尾添加两位 0,得到 1011011000。然后,从左到右依次处理每一位:
  • 第一位为 1,将当前的校验码(初始为 000)和生成多项式 x^3 + x + 1 进行异或运算,得到 101。将 101作为下一个校验码的开头。
  • 第二位为 0,直接将下一位作为校验码的开头,即 010。
  • 第三位为 1,将当前的校验码 010 和生成多项式 x^3 + x + 1 进行异或运算,得到 110。
  • 依次类推,最终得到的校验码为 100,即发送方需要在数据包末尾添加 100 来进行 CRC 校验。
接收方在接收到数据包后,也使用相同的生成多项式进行 CRC 校验,如果计算得到的校验码与数据包中的校验码不一致,就说明数据包出现了错误。

协议报文格式

HTTP

notion image

TCP

notion image
  • 源端口、目的端口
  • 序号、确认序号
  • 首部长度
  • URG、ACK、PSH、RST、SYN、FIN
  • 窗口大小
  • 校验和
  • 紧急指针
  • 选项
  • 数据

IP

notion image

    MAC

    notion image
     
    🏝️
    计算机网络编程
    🎀
    HTTP
    🛥️
    TCP
     
    🗽
    计算机网络QA

    2023年12月8日分享
    2023年12月8日分享