admin 管理员组文章数量: 887007
输入域名到显示网页的网络过程
最近复习完了计算机网络,突然想到了这个话题,百度了一下也有许多人讲解过,好像始源于是一个面试问题。然后我也结合了一下其他人的博客和自己对计算机网络的理解,梳理了一下思路。整个流程会从应用层,传输层,网络层和数据链路层进行分析, 但不讲得太细,都只是稍微提一下各个部分的重点。应用层:
首先浏览器是在应用层上的WEB服务。WEB服务的实现主要包含了HTTP超文本传输协议,URL统一资源定位符,HTML超文本标记语言,以及浏览器和服务器。在WEB服务中浏览器相当于C/S模式中的client客户端,服务器相当于server服务端,是一对多的关系。 在你敲击域名之后,浏览器首先会查看自己有没有关于这个域名的缓存。如果没有,则查看本地计算机的缓存,如果还没有,则会调用DNS服务进行域名解析。
1. 浏览器缓存
2. 本地缓存
3. 调用DNS服务
调用DNS服务后,会发送一个DNS解析请求的报文,该报文是基于传输层的UDP协议。在进行IP分组封装后分组会被直接传到默认路由器(默认网关),如果路由器缓存有该域名IP,则直接转发回浏览器。如果没有,则需要发送到DNS服务器上进行解析。如果你的DNS服务器在外网,而你在ip地址是局域网如172.31.1.1,这时就会调用NAT服务。 NAT服务会从IP池中临时分配给你一个外网的唯一IP地址,用你访问外部网络。(DNS服务器地址可以从本地连接中查看)。DNS服务器接收到解析请求后会进行查找,查找到则返回结果,否则会进行一个迭代或者递归查找,最后将域名对应的IP地址进行返回。1. 路由器缓存
2. NAT服务提供外网IP
3. DNS服务器查找返回结果:递归或者迭代查找
上述完成的是一个域名解析的过程,即只是完成了让浏览器获得你所输入的域名的IP地址。然后上述的过程没有对传输层进行讲述,我将在下面的过程对传输层和网络层进行一定的阐述。
传输层:
得到IP地址后,浏览器会向IP对应的服务器发送一个GET的HTTP请求报文。在传输层上,HTTP协议是基于TCP协议传输的。所以TCP对HTTP请求报文进行封装成TCP报文,然会对服务器请求连接,在完成3次握手后,TCP连接建立成功。即浏览器和服务器之间可以开始传输数据了。由于是GET请求,所以服务器会返回一个HTML主页给浏览器。服务器端首先将包含了HTML文本的HTTP应答填入TCP滑动窗口缓存,然后根据TCP的流量控制和拥塞控制对缓存中的内容进行传输到客户端。浏览器成功接受到html文本后根据html标准进行解析,最终展示成一个主页的形式给用户查看。如果用户此时关闭了页面,TCP则会进行四次挥手断开浏览器与服务器端的连接。
1. HTTP请求报文2. TCP3次握手连接
3. 根据TCP流量控制和拥塞控制传输主页文本
4. 浏览器解析主页文本
5. TCP4次握手断开连接
上述已经把整个过程都讲完了,然后下面我在稍微提一下网络层。网络拓扑路径:客户端-路由器-路由器-路由器-服务端。传输层针对的是端到端之间的传输服务,而网络层针对的是点到点的传输。
网络层:
TCP报文往下到网络层时, IP协议会对该报文进行处理。如果报文内容过大,则会对其进行分段,裁减成多分IP报文进行传输。在点与点之间传输时,主要处理的是 路由转发算法。因为端与端之间存在着多个路由,所以要研究如何传输才能使得总体较优。路由转发算法包括:标准路由转发,向量路由转发,最短距离路由转发等。1. 分组分段
2. 路由转发
在数据链路层所讨论的则是Bit级别的数据问题。不做深究。以上就是大致的一个过程,涵盖了应用层,传输层和网络层。里面有很多细节都是值得讨论的。像是3次握手,拥塞控制,路由转发算法等。
一个其他人的超详细分析
点击打开链接
本文标签: 输入域名到显示网页的网络过程
版权声明:本文标题:输入域名到显示网页的网络过程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732357558h1534873.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论