美文网首页我的程序员修炼日记
浏览器输入一个网址后到底发生了什么?

浏览器输入一个网址后到底发生了什么?

作者: 一岁一枯荣啊 | 来源:发表于2019-10-29 18:12 被阅读0次

    1.域名解析:

    浏览器会根据输入的域名进行解析服务器ip

    • 先找浏览器的缓存dns缓存
    • 计算机的dns缓存
    • 查找路由器的dns缓存
    • 查找互联网运营商提供的dns解析

    2.浏览器与服务器通过三次握手建立TCP连接

    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

    一个tcp包中有这样的几个标示位非常关键。【SYN[同步]、seq[序列号]、ack[确认序列号]、ACK[确认回应]】

    第一次握手: 客户端给服务器端发送tcp包,包的SYN,初始序列号seq=x。

    第二次握手: 服务器回应tcp包,包的SYN=1,ACK=1,ack为x+1 , seq设置为y

    第三次握手: 客户端再次回应服务器端,SYN标志位为0,ACK标志位为1。确认序列号ack为y+1

    为什么要三次握手?而不是2次握手?

    两次握手只能保证服务器端能收到客户端 的请求,并不能保证客户端也能收到服务端的请求。所以三次握手能够保证双方安全有效的通讯防止SYN的洪水攻击

    3.浏览器向服务器发送请求

    4.服务器出来请求进行相应

    5.浏览器根据服务器响应的数据进行渲染

    6.四次挥手断开http连接

    ​ 第一次挥手:客户端给服务器发送一个FIN=1,seq=x的tcp包

    ​ 第二次挥手:服务器回复应答客户端的请求 ACK = 1,seq = y, ack= x+1

    ​ 第三次握手:服务器向客户端发送 FIN=1,ACK = 1,seq = w, ack= x+1

    ​ 第四次握手:客户端给服务器发送 ACK = 1,seq = w+1, ack= x+1

    双方关闭连接要经过双方都同意。所以,首先是客服端给服务器发送FIN,要求关闭连接,服务器收到后会发送一个ACK进行确认。服务器然后再发送一个FIN,客户端发送ACK确认,并进入TIME_WAIT状态。等待2MSL后自动关闭。

    相关文章

      网友评论

        本文标题:浏览器输入一个网址后到底发生了什么?

        本文链接:https://www.haomeiwen.com/subject/rrbgvctx.html