• 周日. 11月 27th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

Web 页面请求过程

admin

11月 28, 2021

准备DHCP、UDP、IP和以太网

  1. 主机生成DHCP请求报文,放入UDP报文段中,源地址0.0.0.0,目的地址255.255.255.255

  2. 将包含DHCP请求报文的IP数据报放入以太网帧中,目的MAC地址FF:FF:FF:FF:FF:FF,源MAC地址是主机MAC地址。 交换机会广播该数据帧。

  3. 交换机广播DHCP帧到所有端口,包括连接路由器的端口。

  4. 路由器接收到以太网帧后抽取IP数据报,抽取DHCP请求报文。

  5. 路由器生成DHCP ACK报文,包括分配的IP地址,DNS服务器的地址,默认网关地址,子网掩码,包装成UDP数据报,放入以太网帧,包括源MAC地址(路由器地址)和目的IP地址(主机地址)。

  6. 交换机收到后转发到主机端口。

  7. 主机接收到DHCP ACK报文后设置自己的IP地址、DNS地址、默认网关和子网掩码,之后在子网掩码以外的所有数据报都被发送到默认网关。

准备DNS和ARP

当我们向浏览器键入www.google.com时,浏览器会生成一个TCP套接字,由套接字发送HTTP请求,为了生成套接字我们需要知道www.google.com的IP地址,这就涉及DNS协议。

  1. 主机生成DNS查询,将DNS报文放入UDP报文段中,目的地址在7中记录的DNS服务器地址。

  2. 封装成以太网帧发送到网关路由器,虽然我们知道网关路由器的IP地址,但仍然需要用ARP协议获取网关的MAC地址。

  3. 主机生成ARP查询报文,目的地址就是默认网关,MAC地址为广播地址,交换机广播该报文。

  4. 网关地址接收到ARP查询报文,解析出目的地址就是自己的地址,因此返回一个ARP回答包含自己的MAC地址,向交换机发送,交换机转发给主机。

  5. 主机得到默认网关的MAC地址

  6. 现在可以使DNS查询报文到达DNS服务器,此时DNS数据报的IP目的地址是DNS服务器的地址,MAC目的地址是网关路由器。

  7. 网关路由器接收DNS查询报文,根据目的IP地址和存储的转发表发送到合适的路由器。

  8. 路由器收到IP数据报后根据目的IP地址和转发表发送到DNS服务器。

  9. DNS服务器抽取到DNS查询报文,查找到www.google.com的记录,然后将DNS回答报文放入UDP报文段,经过路由器交换机达到主机。

  10. 主机终于获取到www.google.com的IP地址。

TCP和HTTP

  1. 有了IP地址就可以生成TCP套接字,向www.google.com发送HTTP get报文,在生成TCP套接字时需要先和服务器三次握手连接,此时主机会发送目的端口80的TCP SYN报文,MAC地址为网关。

  2. 在网络中的路由器转发TCP SYN数据报

  3. 达到www.google.com的服务器,抽取出TCP SYN数据报发送到80端口的套接字上,回复TCP SYN ACK报文。
    问题:客户端可以向服务器发送请求是因为服务器有公网IP,但是客户端没有,他是怎么接收服务器的回复的

  4. 主机最终会接收到TCP SYN ACK 报文,从而进入连接状态。

  5. 现在已经建立TCP连接,主机向服务器发送HTTP GET报文。

  6. 服务器返回HTTP响应报文

  7. 主机浏览器读取HTTP响应报文,抽取HTML显示网页。

#banquan { border: 1px dashed #CACACA; padding: 5px; color: #B58B8B; font-weight: bold; margin-top: 250px }
#banquan a,#bq_title,#bq_time,#bq_url { text-decoration: none; color: #787878 }
#banquan a:hover { text-decoration: underline }
#banquan #bq_shenming { margin: 0 auto; 250px; text-align: center; color: #674A20; top: -13px; background-color: #FFF; position: relative }

转载请保留原文链接及作者
本文标题:
文章作者: LepeCoder
发布时间:
原始链接:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注