在浏览器的地址栏中输入URL,后续的网络都发生了什么,尽可能讲一讲。
在浏览器的地址栏中输入URL,后续的网络都发生了什么,尽可能讲一讲。
题眼:网络分层、DNS服务等。
- 解析URL,确定Web服务器和文件名。根据信息生成http请求消息。
- 在发送消息之前,先使用DNS服务器查询服务器域名对应的IP地址(若是浏览器缓存中有这个域名的缓存,则不用再去问DNS)。
- 找到ip地址之后,浏览器向服务器发起请求,通过TCP的三次握手建立连接。
- 经过应用层、传输层(在头部添加了TCP/UDP首部)
- 经过网络层,添加报文头(头部里包含了源地址IP和目标地址IP)
- 数据链路层添加MAC头部,它包含了接收方和发送方的 MAC 地址等信息,用于两点之间的传输。(使用ARP协议,在以太网中以广播的形式找出接收方MAC地址)
- 网卡:将二进制数字信息转化为电信号,在网线上传输。(开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。)
- 经过交换机交换机、路由器、还有物理层的传输介质发送给目标服务器。
- 数据抵达服务器:服务器会先扒开数据包的Mac头部,将符合服务器自己的Mac地址的包收起来。继续扒开数据包的IP头,知道上层是TCP协议,根据TCP获取序列号和端口号,发送给HTTP进程,服务器解析HTML并渲染页面。
- 当浏览器全部解析完服务器发送的响应之后,向服务器发起TCP的四次挥手,断开连接。
参考答案:
网络请求很像一个快递打包、剥洋葱的流程。首先,浏览器会向DNS服务发起域名解析,拿到域名指向的IP地址。有了IP地址之后会,浏览器会向对方服务发起http请求,这个请求会沿着网络分层从应用层开始,加上Http请求头比如Domian、Cookie之类,再把请求信息放在Body里。接着,数据进入到传输层,此时会给请求加上TCP头部信息,然后和对方服务器发起三次握手,然后数据会交到网络层,把源IP和目标IP加上,再传给数据链路层,加上硬件的MAC信息,最后通过物理层,网线、光纤等发给服务器。服务器收到这些信息后,再按照刚才的顺序倒着走一遍,最后拿到我们的HTTP请求信息。服务器在处理完请求之后,返回数据也是这样一个流程,当双方确定没有数据要交互以后,就会发起TCP四次挥手,然后断开连接。
引申:如果是HTTPS,那么网络会变成什么样。(需要增加向CA申请证书,并和服务方交换秘钥的过程)
