当我 ping 我的路由器和我的 PC 时,涉及多少 TCP/IP 层?
我的路由器: ping 192.168.1.1
我的电脑: ping 127.0.0.1
我的电脑: Ping 192.168.1.10
我需要知道在所有三种情况下数据是如何通过层传输的。
当我 ping 我的路由器和我的 PC 时,涉及多少 TCP/IP 层?
我的路由器: ping 192.168.1.1
我的电脑: ping 127.0.0.1
我的电脑: Ping 192.168.1.10
我需要知道在所有三种情况下数据是如何通过层传输的。
首先,请记住 TCP/IP 只有 4 层:
当你从自己 ping 你的 PC 时,不管它是“规范的”本地主机还是用户定义的地址,只涉及四层中的第二层,因为网络堆栈不需要访问任何网络来到达自己。
相反,当您向另一个盒子发送回声请求时,正在运行的操作系统首先解析 L2 映射(甚至是动态的或通过配置),然后使用这些信息来构建数据包并将其发送到目标盒子。
要回答您的第一个问题,我会说 ICMP 在第三层 TCP/IP 上运行,但不要使用第四层(不涉及 TCP/UDP),因此我认为将其描述为在 3.5 层上运行是正确的。
您可以使用数据包分析器(推荐使用 Wireshark)分析 ICMP 内部的数据。
这是一张图片以获得更好的主意。
无论是什么 IP 地址,ICMP 数据包都具有相同的格式。ICMP 是驻留在第 3 层的 TCP/IP 协议套件的一部分。如果您进行数据包捕获,可以很容易地看到发送的信息类型。您还可以看到 ICMP 位于 IP 之上,因此也可以说它是 3.5 层。无论您 ping (环回或某个远程地址)数据包必须具有所有必需的层(在这种情况下从 1 到 3)。处理发往环回适配器的数据包的方式是另一个问题,但这不会影响使用的数据包格式或协议/层。
TCP/IP 并没有真正清晰地映射到 OSI 模型(它是由一个委员会自上而下设计的)。如果您想要最接近 OSI 层的映射,答案可能是 3.5:ICMP(这是ping
使用的方法)直接在 IP 数据包之上实现,并且不使用 TCP 或 UDP 之类的传输层(OSI 第 4 层)。