假设在应用程序层中正在运行一些应用程序。应用程序有各自的源端口号和目的端口号。并且知道n层没有身份验证来了解n+1级别的有效负载。
但是我们看到在TCP或UDP报头中有源和目标应用程序端口号。Ipv4报头协议字段中有传输层协议号和Ipv6扩展头。类似地,以太网报头具有以太类型字段具有layer3协议信息。
我的问题是,尽管不知道n级别的有效负载,但layer D2如何知道哪个端口/协议在n+1级别上运行?
发布于 2022-03-11 22:21:49
协议的标头有字段来告诉每个协议在哪里发送其有效负载。
例如,以太网具有EtherType字段。如果以太网接收到具有EtherType字段值为0x0800的帧,以太网将将其有效负载发送到与EtherType值相对应的处理地址,即该值的IPv4。
IPv4具有相同功能的协议头字段(IPv6下一个标头)。
有些传输协议具有执行相同功能的端口。
操作系统将维护这些表,以便协议有一个位置来查找字段中是否有一个有效值,并知道在哪里为特定值发送任何有效负载(或者在该主机中删除无效值的有效负载)。
当IP获得协议号为17的数据包时,它将在表中查看传输协议是否已用该号码注册,如果有一个(UDP),则可以从该数据包的发送有效负载的表中获取。如果操作系统中没有安装UDP,则IP会删除有效负载,可能会将ICMP错误发送回源。
https://networkengineering.stackexchange.com/questions/78200
复制相似问题