从浏览器中输入URL ,到最终看到页面内容,这个中间都经历了那些过程?

这个问题在各个角度来看都有不一样的答案,在这里我在两个角度回答这个问题:

站在网络原理的角度

  1. 输入的URL会先触发DNS(先查看浏览器的缓存,在查看hosts文件,在查看DNS服务器);
  2. 构造 HTTP 协议的数据包,方法GET,URL输入的URL,浏览器会自动填上一些包头信息,接下来会将这个数据报交给传输层;
  3. TCP就会把这个数据构成一个TCP数据报(在构造这个包之前,已经进行了三次握手,具体握手流程可以参看之前的TCP十大特性),然后再将数据传给IP协议;
  4. IP协议就会构造一个IP数据报,此处要根据数据报的长度,以及MTU的限制,考虑是否进行分包,查路由表决定从哪一个端口转发,将数据交给数据链路层;
  5. 将数据构造一个以太网数据帧,源mac就是本机mac,目的mac根据上面IP确定的转发端口来决定(基于mac学习完成)
  6. 数据到达物理层,转换成光电信号或者电信号进行传输;
  7. 首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)
  8. 中间会经过若干个路由器转发的过程,最终到达目的服务器;
  9. 服务器就会进行分用。物理层把光电信号1转成二进制bit流,交给数据链路层;
  10. 数据链路层解析出其中的IP数据报交给网络层;
  11. 网络层可能需要组包(取决于第4步是否分包),解析出传输层数据交给传输层;
  12. TCP解析出其中的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程;
  13. 服务器的应用程序读取数据,根据请求计算响应,得到一个html页面。把页面构造成一个HTTP响应报文,经过一系列的封装,分用,传输,最终回到客户端;
  14. 客户端浏览器把报文解析出来,渲染html,显示到浏览器上。

站在后端开发工程师的角度来看

在这里就不考虑网络通信的细节,我从应用层的角度来考虑:

  1. 请求百度首页,可能直接请求到达CDN服务器,就直接返回了,不需要真正访问百度的机房。(CDN 是网络运营商架设的服务器,百度就会吧一些常用的静态资源直接部署到CDN);
  2. 如果CDN上没有,请求可能会到达百度机房的反向代理服务器(缓存)
  3. 如果反向代理服务器也没有就会访问百度的应用服务器;
  4. 如果是一些更复杂的应用(百度搜索),要做的处理也就会更多。在这里插入图片描述
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值