当你要访问一个网页时,首先要在浏览器中输入网址,假如我们在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浏览过程中涉及到的协议相关推荐

  1. MPLS转发过程中涉及的相关概念—Vecloud微云

    MPLS术语 • 标签(Label):是一个短而定长的.只具有本地意义的标识符,用于唯一标识一个分组所属的FEC.在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标签,但是一台设备上,一 ...

  2. ChatGLM-6B 的部署与微调以及过程中涉及知识总结(7.26更新)

    最近因为工作关系,接触到ChatGLM-6B,自己部署做了一些测试. 参考了网上很多优秀的资料,在此基础上,补充一些自己实践中发现的细节. 部署内容部分绝大部分来自:https://zhuanlan. ...

  3. 安卓端网页浏览过程中实时更新title的web实现

    1 $(function () { 2 var scrollTop = 0, //缓存上一次触发scroll的时候的scrollTop值 3 appendIndex = 0, //由于第23行appe ...

  4. VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug

    今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Cor ...

  5. 下发布可执行文件_IOS APP 发布过程中涉及相关概念

    AppID(应用 ID) AppID 是识别不同应用程序的唯一标志符,每个 app 都需要一个 App ID 或者 app 标识.目前有两种类型的 App 标识:一个是精确的 App ID(expli ...

  6. python web微信应用(一) 微信协议分析

    文章目录 前言 一.__get_uuid,获取 uuid 二.__gen_qrcode,生成二维码 三.__login,手机扫码登录 四.__get_params,获取登录参数信息 五.__initi ...

  7. NFV网络云落地过程中若干问题分析

    Labs 导读 NFV技术从诞生起,从根本上来说就是为了解决运营商网络演进中部署成本高,迭代更新慢,架构僵化等痛点问题.同时,在引入NFV技术前,旧有产业链相对单一,核心成员主要包括设备制造商.芯片制 ...

  8. 服务器与浏览器数据传输过程中编码问题

    一.前言 最近在研究公司的一个项目,无意间注意起平时用的多但是没怎么注意的一个问题,那就是浏览器往服务器传送数据的时候到底是怎么编码的?网上有篇文章写得不错,并且本人亲测确实如文章所述,所以这边特意转 ...

  9. Direct Sparse Odometry (一)初始化过程中的光度误差优化

    Direct Sparse Odometry (DSO) 初始化过程中的导数推导 文章目录 Direct Sparse Odometry (DSO) 初始化过程中的导数推导 前言 一.光度误差建模 二 ...

最新文章

  1. python 面向对象 (一)
  2. pyquery获取不到网页完整源代码_PyQuery 详解
  3. 从零开始学 Web 之 DOM(六)为元素绑定与解绑事件
  4. 3000字详解Pandas数据查询,建议收藏
  5. oracle实验七 答案,Oracle表的常用查询实验(七)
  6. 根据特殊EOF的序列判断比赛输赢(洛谷P1042题题解,Java语言描述)
  7. html下拉列表兼容性,下拉菜单select样式设置(兼容IE6/IE7/IE8/火狐)
  8. TensorFlow 2.0和PyTorch谁更好?大牛们争了好几天
  9. 程序员面试金典——9.2机器人走方格
  10. 关联分析(二)--FP-Growth算法
  11. android 简介动画,android动画简介
  12. html5 职工入职后台管理系统_丽水微信社群裂变营销管理系统公司
  13. 期末前端web大作业——用前端语言写一个小游戏
  14. 国开大学计算机实操,国开大学计算机实操答案一.doc
  15. 各种软件以及插件官网地址 echarts Vscode 阿里云图标库 鼠标图标
  16. windows10序列号即将过期解决办法
  17. vi毕业设计参考文献优秀范例
  18. 图像特效之LOMO效果
  19. Gromacs 中文手册目录
  20. NanUI 无边框拖拽

热门文章

  1. 第9章第8节:制作过渡页幻灯片的版式 [PowerPoint精美幻灯片实战教程]
  2. C++ 加号运算符重载
  3. 《PyCharm2019安装教程》
  4. 单卡就能运行AI画画模型,小白也能看懂的教程来了,还有100万卡时免费NPU算力可用丨昇思MindSpore...
  5. 解决npm安装包安装不上的几个方法
  6. day21 Excel基本操作
  7. 小武告诉滨滨每天可以吃一块或者两块巧克力。假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
  8. Unity3D学习笔记6——GPU实例化(1)
  9. python实现账号密码登录
  10. 创新创业大赛计算机,计算机学院第六届创新创业大赛圆满结束