n 级如何知道 n+1 级的内容?

网络工程 tcp 第 2 层 第 3 层 奥西 第 4 层
2022-02-02 23:48:19

假设在应用层正在运行一些应用程序。并且应用程序具有各自的源端口号和目标端口号。并且知道该n层没有身份验证来了解n+1级别有效负载。

但是我们在 TCP 或 UDP 标头中看到有源应用程序端口号和目标应用程序端口号。Ipv4 头协议字段有传输层协议号和 Ipv6 扩展头。同理,Ethernet header 有 Ethertype 字段,有 layer3 协议信息。

我的问题是,尽管不知道级别有效负载,但层如何n知道哪个端口/协议在级别上运行n+1n+1

1个回答

协议的标头具有告诉每个协议将其有效负载发送到何处的字段。

例如,以太网具有 EtherType 字段。如果以太网接收到 EtherType 字段值为 的帧0x0800,则以太网将其有效负载发送到与 EtherType 值对应的进程地址,该值是 IPv4。

IPv4 具有以相同方式工作的协议标头字段(IPv6 下一个标头)。

一些传输协议具有执行相同功能的端口。

操作系统将维护这些表,以便协议可以查找该字段中是否存在有效值,并知道将特定值的任何有效负载发送到何处(或丢弃该主机中无效值的有效负载)。

当 IP 收到一个协议号为 的数据包时17,它会在表格中查看是否使用该号码注册了传输协议,如果有(UDP),那么它可以从表格中获取发送有效载荷的位置对于那个数据包。如果操作系统中未安装 UDP,则 IP 会丢弃有效负载,可能会将 ICMP 错误发送回源。