一.在浏览器中访问一个链接,计算机做了什么?
    **

    1. 浏览器会通过DNS协议等完成域名解析获取服务器的IP。
    2. 发送HTTP请求,使浏览器与服务器建立TCP连接。
    3. 服务器对请求做处理,然后发送响应报文给浏览器。
    4. 浏览器获得html文件然后对其进行渲染。
    5. 最后把页面呈现给用户。

    二.说说你对HTTP协议的理解。
    **
    http是超文本传输协议。但是它并没有做传输,传输是依赖TCP来进行的。
    是一种无状态的协议,以请求应答的方式运行的协议。(无状态:不存储用户信息)。


    1. TCP连接:四元组(源地址、源端口、目的地址、目的端口)
    2. syn是连接报文
    3. ack是响应报文(确认报文)。
    4. fin是关闭连接的报文。
    5. 确认连接:TCP三次握手:a.同步双方初始序列号(ISN) b.协商TCP通信参数

    image.png
    TCP三次握手:(交换的内容:约定序列号)
    第一次:客户端向服务器发送连接请求(SYN seq=x)。客户端进入SYN-SENT。
    第二次:服务器收到连接请求,然后响应(SYN seq=y ,ACK ack=x+1)。
    服务器由Listen态变成SYN-RECEIVE态。
    第三次:当客户端收到服务器的响应,则进入ESTABLISHED态,并发送确认响应。
    服务器收到确认响应后,进入ESTABLISHED态。

    TCP四次挥手:
    image.png

    1. 客户端发送close请求,发送FIN报文 ,客户端进入FIN_WAIT_1。
    2. 服务端收到断开连接请求向客户端响应一个ACK报文,并进入Close_wait状态,做一下收尾工作。客户端收到ACK报文后会进入FIN_WAIT_2状态。
    3. 服务端做完收尾工作后,调用close,然后向客户端发送一个FIN的报文。此时服务器进入LAST_ACK状态。
    4. 客户端收到FIN报文后,响应一个ACK报文给服务端,此时客户端进入TIME_WAIT(2MSL后进入CLOSED状态)。五服务端收到ACK报文后也进入CLOSED状态。