随笔 - 27, 文章 - 0, 评论 - 0, 阅读 - 7503
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

输入url到显示网页的过程

Posted on   卡卡Kk  阅读(177)  评论(0编辑  收藏  举报

输入url到显示网页的过程

简要概括:

       浏览器将 URL 交给 DNS 域名解析,找到真实 IP ,向服务器发起请求;

       服务器将请求交给后台处理完成后返回数据,浏览器就收文件(HTML、JS、CSS、图像等);

       浏览器对加载到的资源(HTML、JS、CSS 等)进行语法解析,建立相应的内部数据结构(如 HTML 的 DOM);

       载入解析到的资源文件、渲染页面,完成。

DNS域名解析:

DNS域名系统,因特网上作为域名和IP地址相互映射分布式数据库。说白了DNS就是充当域名和IP地址之间翻译官的角色,把域名(网址)翻译成对应的IP地址,俗称域名解析。说说怎么解析:

  1> 首先客户端检查本地是否有对应的IP地址,查看本地磁盘的hosts文件,看是否有对应的IP地址,有那就直接使用文件给到的IP地址,如若没有,那就接着看。

  2> 浏览器会发送一个DNS请求到本地的DNS服务器(例如中国电信啊,移动啊,这些网络提供商提供的)本地的DNS服务器收到请求后,先查询它的缓存记录,缓存中有要找的记录,那么返回IP地址,如果没有要找的记录,那么本地DNS服务器会向根服务器进行查找(递归查询)。

  查询方式例如: .com -> baidu.com. -> www.baidu.com.

  3> 如果根域服务器没有查到域名和IP的对应结果。它会返回来告诉本地DNS服务器你可以去域服务器(例如.com.服务器)上接着找了,顺带给出你要找的域服务器的地址(迭代查询)。然后本地服务器再次向域服务器发送查询请求,如果域服务器有域名和IP的对应关系,那么,域服务器才不会给你返回结果!它会告诉你你所需要域名解析的服务器的地址。

  4> 本地服务器再次向域名解析服务器发出请求,这时拿到对应的结果,它不仅会把IP地址返回给客户机,而且会把这一结果保存在缓存中,便于下次查找使用(这里有个大概念,DNS缓存,属于DNS优化范畴)。

 TCP三次握手建立链接:

首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

 TCP四次握手断开链接:

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假设网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

参考:https://blog.csdn.net/whuslei/article/details/6667471

 

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示