- 例如访问www.QQ.com,通过HTTP协议发送请求数据
- 解析URL
https://www.qq.com/
(统一资源定位符) - 域名解析
1.首先客户端访问本地DNS,查询本地DNS中是否有缓存。如果有就直接返回域名对应的IP地址。
2.如果没有:像根域名服务器查询,返回.com
域名服务器的IP地址
3.在.com
中查询QQ.com
的地址
4.QQ.com
返回www.QQ.com
的IP地址
5.将得到的IP地址保存在本地DNS缓存中(一段时间后会消失)
4.得到IP地址之后,就可以把 HTTP 的传输工作交给操作系统中的协议栈
5.浏览器调用协议栈中的上层TCP协议
TCP协议是可靠的传输协议,需要通讯双方通过三次握手来进行连接
6.HTTP请求封装在TCP层报文的数据部分:
网络模型中的传输层
7.再放在IP报文的数据部分,加上IP头部封装起来:
网络层
通过ARP协议找到下一跳目标(中转的路由器)的MAC地址,加上双方的MAC地址:
数据链路层
8.然后在物理层将二进制信息转为电信号通过线路转发出去
包了那么多层衣服,HTTP请求数据终于要出门了,交换机送我出门
9.到达真正的大门——路由器
路由器大佬又通过数据的ip地址查找自己的路由表,决定从哪个端口转发出去到下一个目标(也是通过ARP协议查询下一跳的MAC地址)
经过若干个路由器,终于到达了www.qq.com
的Web服务器
然后开始扒皮
Web服务器将收到的数据扒皮之后,拿出HTTP请求。
然后将请求页面数据又层层封装,返回给浏览器。
浏览器拿到数据之后,也开始扒皮。
最后将服务器传来的页面信息展示出来给用户