思维导图总结:计算机网络 - 幕布 (mubu.com)
参考:
杂记
- ARP:Address Resolution Protocol。用于根据 IP 地址查询相应的以太网 MAC 地址。
- FCS:Frame Check Sequence。帧检验序列。它是数据帧的一部分,用于检测数据在传输过程中出现的错误。在发送数据时,计算机网络会在数据帧的末尾添加校验序列。
MTU
:Maximum Transmission Unit。一个网络包的最大长度,以太网中一般为1500
字节。
MSS
:Maximum Segment Size。除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。
协议层
数据链路层
点对点信道
- 封装成帧:把网络层的 IP 数据报封装成帧,
SOH - 数据部分 - EOT
点对点的信道通常需要把网络层的 IP 数据报封装成帧,以便在物理层进行传输。帧是数据链路层的基本传输单位,它包含了数据和控制信息。常用的帧格式包括起始标志符(Start of Header,SOH)、数据部分和结束标志符(End of Transmission,EOT)。在封装成帧时,首先在数据部分前加上起始标志符 SOH,表示一个新的帧的开始。然后将网络层的 IP 数据报放入数据部分中。接着,在数据部分的末尾加上结束标志符 EOT,表示该帧的结束。最后,传输该帧。接收方会检测起始标志符和结束标志符,以确定接收的数据是否完整。需要注意的是,封装成帧仅适用于点对点的信道,因为广播信道中的数据会被多个接收方接收,无法区分每个接收方需要接收的数据。在广播信道中,常用的方式是使用 MAC 地址来确定接收方。
- 差错检测:降低误码率(BER,Bit Error Rate),广泛使用循环冗余检测(CRC,Cyclic Redundancy Check)
差错检测是指在数据传输过程中检测并纠正数据中可能出现的错误。误码率(Bit Error Rate,BER)是指在传输过程中发生的误码比特数占发送比特总数的比率,它是衡量数据传输质量的重要指标之一。循环冗余检测(Cyclic Redundancy Check,CRC)是一种常用的差错检测技术。它基于多项式的运算,通过在发送端对数据进行一定的处理(添加冗余校验码),然后在接收端对接收到的数据进行校验,来检测数据是否出现错误。具体地说,CRC 的实现过程如下:
- 选择一个固定的生成多项式,通常用一个 32 位二进制数表示。
- 在发送端,将要发送的原始数据进行处理,添加一个固定长度的 CRC 校验码,使得整个数据包的长度增加,但是数据包的内容并不改变。
- 在接收端,接收到数据后,再使用相同的生成多项式进行计算,得到一个校验码,然后将这个校验码与接收到的数据包中所带的校验码进行比对。如果两个校验码相同,则说明接收到的数据包没有出现错误,否则说明数据包出现了错误。
CRC 检测技术具有高效、精确、简单等优点,因此被广泛应用于数据通信领域,能够有效地降低误码率。
CRC计算过程
CRC 的计算过程可以简单地描述为以下几个步骤:
- 选择一个固定的生成多项式 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。
- 用生成多项式 G(x) 的次数来确定校验码的位数。例如,对于 32 位的数据包,使用 32 位的校验码。
- 将数据包转换成二进制数表示,并在数据包末尾添加校验码所需的位数(通常是生成多项式的次数减 1)。这些位的初始值为 0。
- 对于每一位,执行以下操作:
- 如果该位为 1,将当前的校验码和生成多项式进行异或运算,然后将结果作为下一个校验码的开头。
- 如果该位为 0,直接将下一位作为校验码的开头。
- 当所有位都处理完毕时,最终得到的校验码就是要附加到数据包末尾的值。
例如,假设发送方要发送一个 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
TCP
- 源端口、目的端口
- 序号、确认序号
- 首部长度
- URG、ACK、PSH、RST、SYN、FIN
- 窗口大小
- 校验和
- 紧急指针
- 选项
- 数据
IP
MAC
- 作者:Olimi
- 链接:https://olimi.icu/article/40a5c2c5-0b92-4f06-ac94-78b3f1751816
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。