Web浏览过程中涉及到的协议
当你要访问一个网页时,首先要在浏览器中输入网址,假如我们在xx校园网内,访问http://www.cfca.com.cn/chanpin/chanpin.htm,它的各部分含义如下:
- http:// 代表访问该资源所使用的应用层传输协议,通知cfca.com.cn服务器显示web网页
- www 代表一个Web(万维网)服务器
- cfca.com.cn/ 这时装有网页服务器的域名,或站点服务器的名称
- chanpin/ 这是该服务器上的某个路径,就好像我们的文件夹
- chanpin.htm 这是文件夹中的一个HTML文件(网页)
输入网址直到显示结果的过程如下:
1、域名解析
导航的第一步是通过输入的域名找出其IP地址,DNS查找过程如下:
• 查找浏览器缓存,浏览器会缓存DNS记录一段时间。但是操作系统并没有告诉浏览器储存DNS记录的时间,不同的浏览器会储存2到30min不等;
• DNS模块将生成的DNS报文传递给传输层的UDP协议单元;
• 若缓存中没有相关数据,则浏览器向DNS服务器发出DNS请求;
• 浏览器向本级DNS模块发出DNS请求,DNS模块生成相应的DNS报文;
• UDP协议单元将该DNS报文封装成UDP数据报,传递给网络层的IP协议单元;
• IP协议单元将该UDP数据报封装成IP报文,其中目的地址为DNS服务器的IP地址,传递给数据链路层协议单元;
• 数据链路层协议单元将该IP报文封装成帧的形式发送出去,封装帧的过程中需要查找目的MAC地址;
• 在本机ARP缓存中查找目的IP地址与下一跳MAC地址对应条目,若没有,则发送ARP广播请求,等待ARP回应;
• 得到ARP响应后,将目的IP地址与路由下一跳MAC地址对应的信息写入ARP缓存表,并以路由下一跳地址填充帧头的目的MAC地址,然后转发该帧;
• 这个转发过程可能会进行多次,与DNS服务器位置有关;
• 数据帧转发到DNS服务器后,DNS服务器检查目的MAC地址,发现是自己,拆掉二层封装,将其内部的IP报文传递给网络层的IP协议单元;
• DNS服务器的IP协议单元查看IP地址,是自己,解析该IP报文,将其内部含有的UDP数据报传递给传输层的UDP协议单元;
• DNS服务器的UDP协议单元解析收到的UDP数据报,将其内部所含的DNS报文传递给该服务器上的DNS服务单元;
• DNS服务单元收到DNS请求,将域名解析为对应的IP地址,产生DNS回应报文(DNS域名解析过程详解见点击打开链接);
• (所有的应用层报文必须通过传输层、网络层和数据链路层,因此在下面的叙述中,我将简化这一过程的叙述,简化形式如下面的样子,其中单箭头为本机内部传递,双箭头为网络上的发送)
• DNS回应报文→UDP→IP→MAC→→请求域名解析的主机;
• 请求域名解析的主机收到数据帧,该数据帧→IP→UDP→DNS→IE浏览器,并将域名解析的结果以域名和IP地址对应的形式写入DNS缓存表。
至此,我们得到了目的IP地址。
2、浏览器与www.cfca.com.cn/建立TCP连接:TCP建立连接的三次握手
• 浏览器向www.cfca.com.cn发出TCP连接请求报文;
• 该连接请求报文中SYN标志位被设置为1,表示连接请求;
• 该TCP连接请求报文被传递给网络层的IP协议单元,目的IP地址就是上述DNS过程获得的IP地址;
• 网络层封装好后将IP报文发送给数据链路层,如果下一跳的MAC地址不知道,调用ARP地址解析(ARP地址解析详见点击打开链接)获得MAC地址;
• 数据链路层将帧发往目的地址;
• www.cfca.com.cn收到数据帧→IP→TCP,TCP协议单元会回应请求应答报文;
• 该请求应答报文中SYN和ACK标志均被置为1,表示连接请求应答;
• 该TCP请求应答报文→IP→MAC(ARP)→→校园网关→→请求主机;
• 请求主机收到数据帧→IP→TCP,TCP协议单元会回应请求确认报文;
• 该请求应答TCP报文中的ACK标志位被设置为1,表示连接请求确认;
•该TCP请求确认报文→IP→MAC(ARP)→→校园网关→→www.cfca.com.cn主机;
•www.cfca.com.cn收到的数据帧→IP→TCP,连接建立完成;
3、浏览器开始HTTP访问过程
• 浏览器向www.cfca.com.cn发出HTTP-GET方法报文;
• 该HTTP-GET方法报文→TCP→IP→MAC→→校园网关→→www.cfca.com.cn主机;
• www.cfca.com.cn收到的数据帧→IP→TCP→HTTP,HTTP协议单元会回应HTTP协议格式封装好的HTML超文本形式数据;
•HTTP-HTML数据→TCP→IP→MAC(ARP)→→校园网关→→请求主机;
•请求主机收到的数据帧→IP→TCP→HTTP→IE浏览器,浏览器会以网页形式显示HTML超文本,就是我们所看到的网页。
4、断开TCP连接:TCP断开连接的四次挥手
• 浏览器向www.cfca.com.cn发出TCP连接结束请求报文;
• 该请求TCP报文中的FIN标志位被设置为1,表示结束请求;
• 该TCP结束请求报文→IP→MAC(ARP)→→校园网关→→www.cfca.com.cn主机;
•www.cfca.com.cn收到的数据帧→IP→TCP,TCP协议单元会回应结束应答报文;
•该结束应答TCP报文中的FIN和ACK标志位均被设置为1,表示结束应答;
•该TCP结束应答报文→IP→MAC(ARP)→→校园网关→→请求主机;
这个过程需要双向进行,因此 www.cfca.com.cn 主机也会按上述流程再做一次;
整个过程被称为TCP断开连接的四次挥手。
参考:
http://www.cfca.com.cn/20150810/101229817.html
http://blog.csdn.net/gs_008/article/details/50976483
Web浏览过程中涉及到的协议相关推荐
- MPLS转发过程中涉及的相关概念—Vecloud微云
MPLS术语 • 标签(Label):是一个短而定长的.只具有本地意义的标识符,用于唯一标识一个分组所属的FEC.在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标签,但是一台设备上,一 ...
- ChatGLM-6B 的部署与微调以及过程中涉及知识总结(7.26更新)
最近因为工作关系,接触到ChatGLM-6B,自己部署做了一些测试. 参考了网上很多优秀的资料,在此基础上,补充一些自己实践中发现的细节. 部署内容部分绝大部分来自:https://zhuanlan. ...
- 安卓端网页浏览过程中实时更新title的web实现
1 $(function () { 2 var scrollTop = 0, //缓存上一次触发scroll的时候的scrollTop值 3 appendIndex = 0, //由于第23行appe ...
- VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug
今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Cor ...
- 下发布可执行文件_IOS APP 发布过程中涉及相关概念
AppID(应用 ID) AppID 是识别不同应用程序的唯一标志符,每个 app 都需要一个 App ID 或者 app 标识.目前有两种类型的 App 标识:一个是精确的 App ID(expli ...
- python web微信应用(一) 微信协议分析
文章目录 前言 一.__get_uuid,获取 uuid 二.__gen_qrcode,生成二维码 三.__login,手机扫码登录 四.__get_params,获取登录参数信息 五.__initi ...
- NFV网络云落地过程中若干问题分析
Labs 导读 NFV技术从诞生起,从根本上来说就是为了解决运营商网络演进中部署成本高,迭代更新慢,架构僵化等痛点问题.同时,在引入NFV技术前,旧有产业链相对单一,核心成员主要包括设备制造商.芯片制 ...
- 服务器与浏览器数据传输过程中编码问题
一.前言 最近在研究公司的一个项目,无意间注意起平时用的多但是没怎么注意的一个问题,那就是浏览器往服务器传送数据的时候到底是怎么编码的?网上有篇文章写得不错,并且本人亲测确实如文章所述,所以这边特意转 ...
- Direct Sparse Odometry (一)初始化过程中的光度误差优化
Direct Sparse Odometry (DSO) 初始化过程中的导数推导 文章目录 Direct Sparse Odometry (DSO) 初始化过程中的导数推导 前言 一.光度误差建模 二 ...
最新文章
- python 面向对象 (一)
- pyquery获取不到网页完整源代码_PyQuery 详解
- 从零开始学 Web 之 DOM(六)为元素绑定与解绑事件
- 3000字详解Pandas数据查询,建议收藏
- oracle实验七 答案,Oracle表的常用查询实验(七)
- 根据特殊EOF的序列判断比赛输赢(洛谷P1042题题解,Java语言描述)
- html下拉列表兼容性,下拉菜单select样式设置(兼容IE6/IE7/IE8/火狐)
- TensorFlow 2.0和PyTorch谁更好?大牛们争了好几天
- 程序员面试金典——9.2机器人走方格
- 关联分析(二)--FP-Growth算法
- android 简介动画,android动画简介
- html5 职工入职后台管理系统_丽水微信社群裂变营销管理系统公司
- 期末前端web大作业——用前端语言写一个小游戏
- 国开大学计算机实操,国开大学计算机实操答案一.doc
- 各种软件以及插件官网地址 echarts Vscode 阿里云图标库 鼠标图标
- windows10序列号即将过期解决办法
- vi毕业设计参考文献优秀范例
- 图像特效之LOMO效果
- Gromacs 中文手册目录
- NanUI 无边框拖拽
热门文章
- 第9章第8节:制作过渡页幻灯片的版式 [PowerPoint精美幻灯片实战教程]
- C++ 加号运算符重载
- 《PyCharm2019安装教程》
- 单卡就能运行AI画画模型,小白也能看懂的教程来了,还有100万卡时免费NPU算力可用丨昇思MindSpore...
- 解决npm安装包安装不上的几个方法
- day21 Excel基本操作
- 小武告诉滨滨每天可以吃一块或者两块巧克力。假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
- Unity3D学习笔记6——GPU实例化(1)
- python实现账号密码登录
- 创新创业大赛计算机,计算机学院第六届创新创业大赛圆满结束