Web 页面请求过程
1.DHCP 配置主机信息
假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。
- 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口68 的 UDP 报文段中。
- 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0) 的 IP 数据报中。
- 该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。
- 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
- 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
- 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。
2. ARP 解析 MAC 地址
- 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。
- 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。
- 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。
- 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。
- DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。
- 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP查询报文放入一个具有广播目的地(FF:FF:FF:FF:FF:FF) 的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
- 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC地址,发回给主机。
3. DNS 解析域名
知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。
- 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。
- 因为路由器具有内部网关协议(RIP、OSPF) 和外部网关协议(BGP) 这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。
- 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。
- 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。
4. HTTP 请求页面
有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。
- 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。
- HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。
- 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
- HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
- 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示Web 页面。
Web 页面请求过程相关推荐
- Web页面请求的历程(从应用层到链路层)
Web页面请求的历程 前面从应用层到数据链路层都详细讲过了,现在回顾总结一下一个简单请求背后隐藏的秘密细节.下面假定一名学生bob下载web页面(www.baidu.com)如下图 1.准备:DHCP ...
- http --- Web页面请求的历程(如何根据URL寻找到需要的资源)
HTTP概况: // 超文本传输协议(HyperText Transfer Protocol,HTTP):是Web的应用层协议,它是Web的核心. // 客户端和服务器运行在不同的端系统中,通过交换H ...
- 计算机网络——web页面请求历程
我们假设主机第一次连接到此网络,并且路由器作为DHCP服务器 准备:DHCP.UDP.IP和以太网 当一台机器连接到一个网络时,主机会将自身的MAC地址等其他自身信息,通过网络进行传播,目的地址使用的 ...
- Web页面完整请求及渲染过程
前端技术人员离不开计算机网络通信知识的了解,基础的网络架构模型与TCP.HTTP等相关知识掌握之后,不免会考虑:我们在互联网使用过程中,输入一个网址后,获取网址对应的Web页面信息并成功渲染到浏览器窗 ...
- 一个Web页面的问题分析
一个Web页面的问题分析 几个月之前我接到一个新的开发任务,要在一个旧的Web页面上面增添一些新的功能.在开发的过程中发现旧的代码中有很多常见的不合适的写法,结合这些问题,如何写出更好的,更规范的,更 ...
- 第二章(1)WEB 页面简介
摘要:在这一章中,我们对Web Form 页面进行了介绍,通过几个实例,我们分别介绍了Server 控件,HTML Server 控件,以及Web Form的事件模型.在下面的章节中,我们将对本章所涉 ...
- 客户每次请求Web页面过程
客户每次请求页面时--通过最初请求或者回送--所发生的事情. 图中显示了有5个主要事件:初始化.加载.预提交.提交.处理 我们可以为每个步骤添加代码. 1.初始化: ASP.NET处理器第一次 ...
- 深入理解WEB请求过程
随着web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变成更加方便快捷的B/S架构,B/S架构大大简化了用户使用网络应用的难度,带来了以下两方面的好处: 1.客户端使用统一的浏览器.由于 ...
- web应用程序servlet的映射名称的规则及请求过程
首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...
最新文章
- 频繁模式(frequent pattern)
- 乐视手机权限开启方法
- 为什么我的vc6.0建立工程时显示不能访问类查文件类信息,类查看信息不可用
- 路径总和Python解法
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
- Maven学习总结(50)——Maven Dependency的 Scope 属性详解
- 你正在学 Web 自动化测试?Selenium 基本操作你了解嘛? | 原力计划
- 华为助力“沙漠奇迹”成为高密互联的高尔夫球场
- 小黑计算机一级题库,小黑课堂计算机一级题库
- winpe加载raid_WinPE添加RAID驱动的步骤
- 自我管理经典书籍推荐:除了《自我管理必读12篇》,这些书也不容错过
- MongoDB 主从复制(Master-Slaver)实验
- 【组图】韩国美女明星蔡研---精彩写真
- 【POJ】2676-Sudoku 【51Nod】1211-数独(DFS)
- 微信小程序 修改 顶部电量 时间的颜色
- 功能测试与项目实战之测试计划(精辟干货)
- python 爬取拉钩招聘数据
- 东南大学洪伟教授评述:毫米波与太赫兹技术
- 自己的PHP实践项目:开源电子商城系统
- 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标