简述主机访问网页的过程
时间:2019-02-21
本文章向大家介绍简述主机访问网页的过程,主要包括简述主机访问网页的过程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
主机访问网页的过程
所用到的协议:HTTP/HTTPS、TCP/UDP、ARP、DNS、路由协议、NAT、IP协议
- 主机在浏览器的统一资源定位器输入网址(例:www.baidu.com),主机先查看浏览器的DNS缓存然后是本地的HOSTS文件,若都没有记录则进行DNS请求,如果有直接跳到14;
- 主机向本地DNS服务器发出DNS请求,先由传输层用UDP封装,在由网络层封装成IP数据包发给网关路由器;
- 交换机使用ARP协议找到网关地址对应接口并转发路由器;
- 路由器通过路由协议学习内网路由,并查看路由表将数据转发给给DNS服务器所在网段的路由器;
- 路由器转发给本地DNS服务器,本地服务器若没有解析记录,本地服务器则会向根DNS服务器发送DNS请求,依旧使用UDP和IP封装后发给路由器;
- 路由器通过查看路由表转发给边界路由器;
- 边界路由器将私有IP地址用NAT转换成公网IP并转发给运营商路由器;
- 运营商路由器用过查看路由表转发给根域名服务器的边界路由器;
- 根路由器查看自己的解析记录后,若没有则返回顶级域名服务器的地址给本地域名服务器,再由本地域名服务器向顶级域名服务器发送请求,若有则直接返回对应的IP地址回本地域名服务器(假装已经找到记录了);
- 根域名服务器将解析后的IP地址用UDP和IP封装发给运营商路由器;
- 运营商路由器通过查看路由表转发回给内网边界路由器;
- 边界路由器运用NAT将地址转为私网地址并发给服务器所在网段的路由器并转发给本地域名服务器;
- 本地域名服务器将解析的IP地址回发给主机;
- 主机拿到IP地址后,与百度服务器建立TCP连接;
- 数据包通过刚才到外网的过程转发给百度的服务器;
- 主机与百度服务器进行三次握手建立TCP连接(若HTTP访问百度的80/8080端口;HTTPS443端口);
- 连接建立后浏览器发送HTTP请求报文(GET方法)
- 百度发送HTTP响应报文
- 浏览器得到内容并与百度服务器进行四次断开释放TCP连接
- 如何在GridView的Footer内显示总计?
- 自定义WCF的配置文件
- Centos中动态扩容lvm逻辑卷的操作记录
- Visual Round Trip Analyzer
- ASP.NET可以在Windows Server 2008 R2 Server Core上运行
- SOA十大设计原则
- 中国人民大学文继荣:大数据的经验主义解释
- 检查Python对象
- 分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
- Android 命名规范 (提高代码可以读性)
- Msdn 杂志 asp.net ajax 文章汇集
- 分布式监控系统Zabbix-3.0.3-完整安装记录-新报微信报警(企业微信)
- 测试网站页面网速的一个简单Python脚本
- 框架页面尽可以这么用(后置代码中控制框架)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法