应用层如何将ip地址传递给网络层?

Posted

技术标签:

【中文标题】应用层如何将ip地址传递给网络层?【英文标题】:How does application layer transfer the ip address to the network layer? 【发布时间】:2012-12-26 20:48:44 【问题描述】:

可以说我有一个网络浏览器。 正在尝试连接到 www.google.com。

Web 浏览器在端口 53 上向传输层发送 DNS 请求。 传输层将请求封装在 TCP 上的一个段中,然后传输到网络层。

网络层识别数据包并使用默认的DNS服务器IP地址并将其发送到链路层。

链路层使用ARP等。

得到响应。

链路层转移到网络层,这是我的问题:)。

网络层是否有任何主机名到 ip 的表?

从现在开始,响应应该会冒泡到应用层。 应用层是否将从 dns 请求中提取的 ip 添加到数据包中?

据我了解,应用层应该尝试绑定到一个端口,然后传输层应该通过套接字将其连接到主机名/ip 或向 ip 层报告以执行此操作。

但问题是如何?

谢谢。

【问题讨论】:

【参考方案1】:

DNS 响应只是一个 UDP 数据包,其中包含一个标头,后跟与应用程序相关的数据主体。数据包括请求的域名,但这是为了发出 DNS 请求的应用程序的利益,而不是网络层。网络层不分析数据体的内容。

是应用层对DNS响应包进行解码,并在绑定端口时存储IP地址以备后续使用; binding 对 DNS 名称一无所知,它只知道 IP。

【讨论】:

ok,那么应用层怎么从网络层进来,用哪个ip呢? 好的,你能指定吗?那里到底发生了什么?我需要它来参加工作面试。 您是否阅读过 RFC 1035、793 和/或任何有关 TCP/IP 的书籍?这是一个很大的主题领域,你不明白哪一部分不是很清楚。如果是面试,我会疯狂地阅读。 是的,我读过所有的 tcpipguide.com 我不明白应用程序层如何告诉 ip 层在从网络层获取数据包时要在数据包中使用哪个 ip。答案是然后你创建一个套接字,你将你的消息写入套接字,网络层在哪里获取 ip 并使用它来创建数据包。

以上是关于应用层如何将ip地址传递给网络层?的主要内容,如果未能解决你的问题,请参考以下文章

TCP如何在解复用中读取IP地址?

TCP/IP协议 简介

网络编程

tcp/ip协议能不能连接二个不同的网络?

网络网络层协议——IP

网络原理