在浏览器地址栏输入URL并按下回车后,发生了什么?DNS?UDP?TCP?

    xiaoxiao2023-10-20  167

    例如:在浏览器地址栏输入www.taobao.com,按下回车,发生了什么?

    1. 浏览器会进行DNS域名解析,拿到域名对应的服务器ip地址,再用该ip去访问web服务器

    DNS域名解析的过程:

    1.将待解析的域名放入DNS请求报文,以UDP报文段方式发给本地域名服务器 2.若本地域名服务器有查找到域名映射的信息,则把对应的IP地址放在响应报文中返回 3.若本地域名服务器没有查找到映射的信息,则会去根服务器找 4.若还没有找到,这里就有两种方式,由根DNS服务器迭代查找或者递归查找 5.直到找到为止 各种DNS服务器的请求顺序:本地DNS服务器、根DNS服务器、edu顶级DNS服务器、权威DNS服务器

    2. 首先会和web服务器进行tcp的三次握手建立tcp连接

    tcp三次握手的过程(建立连接):

    1.客户端发送一个携带SYN标志位的包,请求建立连接 2.服务器响应一个携带SYN和ACK标志位的包,同意建立连接 3.客户端再发送一个携带ACK标志位的包,表示连接成功,开始进行数据传输 问:tcp建立连接为什么不采用两次握手? 之所以采用三次握手,而不是两次握手是有深层次原因的,因为两次握手不可靠,举个简单的例子,客户端发送了一个请求建立连接的包,由于网络原因迟迟没有抵达服务器,客户端只得再发一次请求,这次成功抵达并完成了数据传输。过了一段时间,第一次延迟的请求也到了服务器,服务器并不知道这是无效请求,依旧正常响应,如果是两次握手,那么这个时候就会建立一条无效的连接,如果是三次握手,那么客户端就能够丢弃这条连接,避免了无谓的网络开销。

    3. 连接建立成功后,浏览器会发送http的get请求

    4. 服务器收到请求并给予响应,返回请求的数据

    5. 浏览器拿到数据并进行解析、渲染

    浏览器渲染页面的过程:

    1.解析HTML生成DOM树 2.解析CSS生成CSSOM规则树 3.将DOM树和CSSOM规则树合并在一起生成渲染树 4.遍历渲染树开始布局,计算每个节点的位置大小信息 5.将渲染树的每个节点绘制到屏幕

    6. 浏览器和服务器进行tcp的四次挥手,断开连接

    tcp四次挥手的过程(断开连接):

    1.客户端发送一个携带FIN标志位的包,请求断开连接 2.服务器响应一个携带ACK标志位的包,同意客户端断开连接 经过1和2,客户端不会再向服务器发送数据了,服务器如果有数据要发送还会继续向客户端发送数据 3.服务器再发送一个携带FIN标志位的包,请求断开连接 4.客户端最后发送一个携带ACK标志位的包,同意服务器断开连接 问:为什么是四次挥手,而不是三次挥手? 当要断开连接时,通信两端就会进行四次挥手。由于连接上双向的,所以客户端和服务器都要发送FIN标志位的包,才算彻底断开连接,四次挥手的目的是确保双方都没有数据要发送,然后断开连接。

    TCP与UDP的区别?可以用UDP实现像TCP那样的可靠连接吗?

    tcp:tcp是一种有连接的、可靠的通信协议 udp:udp是一种简单的、不可靠的通信协议,只负责将数据发出,但不保证它们能否到达目的地 udp之所以不可靠,是由于以下几个原因: 1.udp没有顺序控制,所以当出现数据包乱序到达时,没有纠正功能 2.udp没有重传控制,所以当数据包丢失时,也不会重发 3.udp在通信开始时,不需要建立连接,结束时也不用断开连接 4.udp无法进行流量控制,拥塞控制等避免网络拥堵的机制 日常生活中的语音聊天和在线视频使用UDP作为传输协议的比较多,因为即使丢几个包,对结果也不会产生太大影响 可以用UDP实现像TCP一样的功能吗? 可以,UDP不可靠主要是因为没有TCP的那些机制,只要给UDP加上TCP的那些机制,UDP一样可以实现可靠传输,在应用层上加这些机制

    最新回复(0)