2

对 www.stackoverflow.com 的 HTTP 应用程序请求。该消息被传递到传输层。传输层添加其标头并将数据包发送到 Internet 层。Internet 层无法看到 www.stackoverflow.com,因为它只能访问传输层附加的标头。那么 Internet 层如何决定这个请求数据包的路由。

IP 标头中的目标地址字段是如何填充的,因为只有应用层和传输层知道该字段。(应用层与 Internet 层没有交互,传输层在其 Header 中提及端口号。)

4

4 回答 4

2

应用层已经通过 DNS 从 URL 中检索到主机的 IP 地址。IP 地址以及来自应用层的其他数据被向下发送到传输层,传输层将数据打包,然后将其向下发送到 Internet 层,然后传输。

于 2010-01-07T06:12:42.290 回答
1

应用程序(在本例中为浏览器)执行了一些操作,最终调用了getaddrinfo库函数或类似的操作,这使得系统的解析器在 DNS 中查找名称并返回一组 IP 地址。

应用程序以某种方式选择了其中一种(有标准方法可以做到这一点,但可爱的是有多少标准方法)并使用connect系统调用来建立连接,这会启动内核中的传输层来获取与该连接的连接IP地址。

这最终会创建以该目标地址和本地地址为源的 IP 数据包,下一个协议设置为 TCP,并且 TCP 标头中的 SYN 位打开。路径上的每个路由器都会查阅其表并转发数据包。

TCP 魔法发生了,SYN+ACK 返回,然后有一个连接,HTTP 魔法发生,页面加载。

于 2010-01-07T06:20:59.497 回答
0

如果您想知道实际的 IP 标头如何获取地址。它发生在内核中,当创建套接字时。在这种情况下是 TCP 套接字,请查看

男人 7 ip

尽管数据包含在 TCP 标头的校验和中,但数据不是从 TCP 数据包继承的。

于 2010-01-07T07:12:44.493 回答
0

rfc791 IP - 寻址

名称、地址和路线 [4] 之间存在区别。名字表明我们所寻求的。地址表明它在哪里。路线指示如何到达那里。互联网协议主要处理地址。进行从名称到地址的映射是更高级别(即主机到主机或应用程序)协议的任务。互联网模块将互联网地址映射到本地网络地址。低层(即本地网络或网关)程序的任务是进行从本地网络地址到路由的映射。地址是四个八位字节(32 位)的固定长度。

阅读更多: http: //www.faqs.org/rfcs/rfc791.html#ixzz0buBJkVEI

从名称到地址的映射是更高级别(即主机到主机或应用程序)协议的任务???

于 2010-01-07T06:25:39.303 回答