Web页面请求过程

  1. DHCP配置主机信息

    1. 假设主机最开始没有IP地址以及其他信息, 那么就需要首先使用DHCP(动态主机配置协议))来获取.

    2. 主机生成一个DHCP请求报文, 并将这个报文放入具有目的端口67和源端口68的UDP报文段中.

    3. 该报文段被放入一个具有广播IP目的地址(255.255.255.255)和源IP地址(0.0.0.0)的IP数据报中.

    4. 该数据报被放在MAC帧中, 改帧的目的地址为FF:FF:FF:FF:FF:FF, 将广播到与交换机连接的所有设备.

    5. DHCP服务器收到广播帧之后, 不断向上分解得到IP数据报, UDP报文段, DHCP请求报文, 然后生成DHCP ACK报文, 报文包含:IP地址, DNS服务器的IP地址, 默认网关路由器的IP地址子网掩码. 该报文被放在UDP报文段, UDP报文段被放在IP数据报中, 最后放在MAC帧中.

    6. 该帧的目的地址是请求主机的MAC地址. 因为交换机可以更新路由表, 之前主机发送了广播帧之后就记录了源发送的MAC地址到其转发接口的路由表项, 因此现在交换机就可以知道往哪个接口发送改帧.

    7. 主机收到该帧, 向上分解得到DHCP报文. 完成配置IP地址, 子网掩码, DNS服务器IP地址, 并在其IP转发表中安装默认网关.

  2. ARP解析MAC地址

    1. 主机通过浏览器生成一个TCP套接字, 套接字向HTTP服务器发送HTTP请求. 为了生成该套接字, 主机需要网站的对应IP地址.

    2. 主机生成一个DNS查询报文, 该报文具有53号端口, 因为DNS服务器的端口号是53.

    3. 该DNS查询报文被放入目的地址为DNS服务器IP地址的IP数据报中.

    4. 该IP数据报被放入一个以太网帧中, 该帧将发送到网关路由器.

    5. DHCP过程只知道网关路由器IP地址, 为了获取网关路由器的MAC地址, 需要使用ARP协议.

    6. 主机生成一个包含目的地址为网关路由器的IP地址的ARP查询报文, 将该ARP查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧, 并向交换机发送该以太网帧, 交换机将该帧转发给所有的连接设备, 包括网关路由器.

    7. 网关路由器接收到该帧后, 不断向上分解得到ARP报文, 发现其中的IP地址与其接口的IP地址匹配, 因此就发送一个ARP回答报文, 包含了他的MAC地址, 返回给主机.

  3. DNS解析域名

    1. 知道了网关路由器的MAC地址之后, 就可以继续DNS解析过程了.

    2. 网关路由器收到包含DNS查询报文的以太网帧后, 抽取出IP数据报, 并根据转发表决定该IP数据报应该转发给的路由器.

    3. 因为路由器具有内部网关协议(RIP, OSPF)和外部网关协议(BGP)这两种路由协议, 因此路由表已经配置了网关路由器到达DNS服务器的路由表项.

    4. 到达DNS服务器后, DNS服务器抽取出DNS查询报文, 并在DNS数据库中查找待解析的域名.

    5. 找到DNS记录后, 发送DNS回答报文, 将该回答报文放到UDP报文段, 然后放入IP数据报中, 通过路由器反向发回网关路由器, 并经过以太网交换到达主机.

  4. HTTP请求页面

    1. 有了HTTP服务器的IP地址后, 主机就能生成TCP套接字, 该套接字将用于向WEB服务器HTTP GET报文.

    2. 在生成TCP套接字之前, 必须先与HTTP服务器三次握手来建立连接. 生成一个具有目的端口80的TCP SYN报文段, 并向HTTP服务器发送该报文段.

    3. HTTP服务器接收到该报文段后, 生成TCP SYN ACK报文段, 发回给主机.

    4. 连接建立之后, 浏览器生成HTTP GET报文, 并交付给HTTP服务器.

    5. HTTP服务器从TCP套接字读取HTTP GET报文, 生成了一个HTTP响应报文, 将Web页面内容放回报文主体, 发回给主机.

    6. 浏览器收到HTTP响应报文后, 抽取Web页面, 之后进行渲染, 显示Web页面.