IP 地址如何从应用层传递到 IP 层?

IP 地址如何从应用层传递到 IP 层?

使用经典的 TCP/IP 层模型,我正在考虑一个应用程序(例如浏览器)充当想要与服务器(例如 Web 服务器)通信的客户端。当然,它必须使用服务器的 IP 地址来定位 Internet 中的服务器主机。因此,我的应用程序层进程(浏览器)知道目标的 IP 地址(例如,它从 DNS 查询中收到该地址)。

为了处理此请求,浏览器将其传递到传输层,更准确地说是传递到 TCP 进程。我的问题是,在 TCP 段中没有 IP 地址字段,既没有目的地,也没有源。传输层进程使用端口作为源和目标的寻址方式。当段传递到底层并成为 IP 数据包时,IP 地址(目标和源)会再次返回。这似乎很神奇!

我想要理解的正是 IP 消失并在两层以下重新出现的情况。是否存在某种层结构漏洞,导致此信息渗透到 TCP 层?或者我没有理解一些非常重要的事情?

答案1

你用自己的想象把简单的事情复杂化了。

每一层都封装在下面的层中,因此当您的浏览器使用 TCP 套接字时,实际上它也使用 TCP 以下的所有层,堆栈的其余部分通常只是抽象给程序员。

如果您喜欢冒险,您仍然可以使用原始套接字构建程序并亲自操作从第 2 层到第 7 层的整个堆栈。例如,数据包嗅探/注入程序使用这种套接字根据传递给程序的选项记录/修改所需层中的适当字段。

例如派克特您可以更改第 2 层字段(例如源/目标 MAC 地址)以在您的网络中进行一些实验(例如,欺骗其他主机的 MAC 地址以绕过 MAC 过滤,同时通过第 4 层使用 UDP 的协议发送数据)。

相关内容