IP 地址和端口号如何在 TCP/IP 堆栈中封装?

IP 地址和端口号如何在 TCP/IP 堆栈中封装?

这个看似毫无意义的问题一直在我脑海里盘旋。我可能错误地认为不同协议的第 7 层报头包含源和目标 IP 地址以及端口号,因此当它们传递到较低层时,第 4 层的协议将读取端口号并将其包含在自己的报头中(例如 TCP 或 UDP 报头),而第 3 层的协议将读取 IP 地址并将其插入 IP 数据包中。

因此,我猜测是应用程序本身将端口号以及源 IP 地址和目标 IP 地址分发给第 3 层和第 4 层中的协议。

我只是好奇想知道这个步骤在堆栈中是如何处理的。

任何见解深表赞赏

答案1

感谢您的精彩回答。Hannu 发布的文章已完全澄清了这一点,并证实了 music2myear 所说的内容。

端口号与第 7 层报头分开传递给传输层软件,而 IP 地址则传递给第 3 层的 IP 软件,我猜是应用层软件(例如 http)或可能是操作系统。也就是说:第 7 层数据包包含将传递到较低层进行交付的数据。

我使用 Wireshark 检查了一些标头:

  • DNS:标头中不包含端口号。也不包含 DNS 服务器的 IP 地址。
  • HTTP:不包括 IP 地址或端口号。

再次感谢,如果没有你们我该怎么办!

相关内容