主机访问网页的过程
所用到的协议: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连接