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

标签 networking tcp ip hostname

假设我有一个网络浏览器。 尝试连接到 www.google.com。

Web 浏览器在端口 53 上向传输层发送 DNS 请求。 传输层将请求封装成TCP上的一个报文段,传递给网络层。

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

链路层使用ARP等。

得到响应。

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

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

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

根据我的理解,应用层应该尝试绑定(bind)到一个端口,然后传输层应该通过套接字将它连接到主机名/ip 或报告给 ip 层来完成它。

但问题是如何?

谢谢。

最佳答案

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

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

关于networking - 应用层如何将ip地址传递给网络层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292258/

相关文章:

linux - 增加 Linux 中 TCP/IP 连接的最大数量

java - 使用多线程代码防止DOS攻击

java - Android TCP - 程序崩溃

asp.net - 构建基于 Internet 的 p2p 文本、音频、视频聊天应用程序

php - 网络服务器所在的欺骗国家

c# - nslookup 和 GetHostEntry 有什么区别?

c++ - 开始客户端/服务器网络编程的好地方?

c - 即使我在计算之前已经将校验和设置为 0,TCP 校验和计算也会返回 0

c - 使用C使用TCP连接到端口

python - 如何使用 Python 3.x 获取网站的 IP 地址?