1.DHCP 配置主机信息

假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。

  1. 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口68 的 UDP 报文段中。
  2. 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0) 的 IP 数据报中。
  3. 该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。
  4. 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
  5. 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
  6. 主机收到该帧后,不断分解得到 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 解析域名

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

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

    1. 因为路由器具有内部网关协议(RIP、OSPF) 和外部网关协议(BGP) 这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。
  2. 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。
  3. 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

4. HTTP 请求页面

有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。

  1. 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。
  2. HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。
  3. 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
  4. HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
  5. 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示Web 页面。

Web 页面请求过程相关推荐

  1. Web页面请求的历程(从应用层到链路层)

    Web页面请求的历程 前面从应用层到数据链路层都详细讲过了,现在回顾总结一下一个简单请求背后隐藏的秘密细节.下面假定一名学生bob下载web页面(www.baidu.com)如下图 1.准备:DHCP ...

  2. http --- Web页面请求的历程(如何根据URL寻找到需要的资源)

    HTTP概况: // 超文本传输协议(HyperText Transfer Protocol,HTTP):是Web的应用层协议,它是Web的核心. // 客户端和服务器运行在不同的端系统中,通过交换H ...

  3. 计算机网络——web页面请求历程

    我们假设主机第一次连接到此网络,并且路由器作为DHCP服务器 准备:DHCP.UDP.IP和以太网 当一台机器连接到一个网络时,主机会将自身的MAC地址等其他自身信息,通过网络进行传播,目的地址使用的 ...

  4. Web页面完整请求及渲染过程

    前端技术人员离不开计算机网络通信知识的了解,基础的网络架构模型与TCP.HTTP等相关知识掌握之后,不免会考虑:我们在互联网使用过程中,输入一个网址后,获取网址对应的Web页面信息并成功渲染到浏览器窗 ...

  5. 一个Web页面的问题分析

    一个Web页面的问题分析 几个月之前我接到一个新的开发任务,要在一个旧的Web页面上面增添一些新的功能.在开发的过程中发现旧的代码中有很多常见的不合适的写法,结合这些问题,如何写出更好的,更规范的,更 ...

  6. 第二章(1)WEB 页面简介

    摘要:在这一章中,我们对Web Form 页面进行了介绍,通过几个实例,我们分别介绍了Server 控件,HTML Server 控件,以及Web Form的事件模型.在下面的章节中,我们将对本章所涉 ...

  7. 客户每次请求Web页面过程

    客户每次请求页面时--通过最初请求或者回送--所发生的事情.     图中显示了有5个主要事件:初始化.加载.预提交.提交.处理 我们可以为每个步骤添加代码. 1.初始化: ASP.NET处理器第一次 ...

  8. 深入理解WEB请求过程

    随着web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变成更加方便快捷的B/S架构,B/S架构大大简化了用户使用网络应用的难度,带来了以下两方面的好处: 1.客户端使用统一的浏览器.由于 ...

  9. web应用程序servlet的映射名称的规则及请求过程

    首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...

最新文章

  1. 频繁模式(frequent pattern)
  2. 乐视手机权限开启方法
  3. 为什么我的vc6.0建立工程时显示不能访问类查文件类信息,类查看信息不可用
  4. 路径总和Python解法
  5. ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
  6. Maven学习总结(50)——Maven Dependency的 Scope 属性详解
  7. 你正在学 Web 自动化测试?Selenium 基本操作你了解嘛? | 原力计划
  8. 华为助力“沙漠奇迹”成为高密互联的高尔夫球场
  9. 小黑计算机一级题库,小黑课堂计算机一级题库
  10. winpe加载raid_WinPE添加RAID驱动的步骤
  11. 自我管理经典书籍推荐:除了《自我管理必读12篇》,这些书也不容错过
  12. MongoDB 主从复制(Master-Slaver)实验
  13. 【组图】韩国美女明星蔡研---精彩写真
  14. 【POJ】2676-Sudoku 【51Nod】1211-数独(DFS)
  15. 微信小程序 修改 顶部电量 时间的颜色
  16. 功能测试与项目实战之测试计划(精辟干货)
  17. python 爬取拉钩招聘数据
  18. 东南大学洪伟教授评述:毫米波与太赫兹技术
  19. 自己的PHP实践项目:开源电子商城系统
  20. 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标

热门文章

  1. 查看计算机CPU、内存使用情况
  2. 几种常用的医院地图API接口地址—百度地图
  3. Nginx 负载均衡配置和策略
  4. 67、Fragment实现Tab
  5. PHP中遍历关联数组的方法
  6. linux下×××postfix
  7. C#接口-接口的继承
  8. 新人如何快速上手新项目?
  9. Java poi插件导出Excel文件合并多sheet页
  10. spring boot 整合web开发(二)