一.在浏览器中访问一个链接,计算机做了什么?
**
- 浏览器会通过DNS协议等完成域名解析获取服务器的IP。
- 发送HTTP请求,使浏览器与服务器建立TCP连接。
- 服务器对请求做处理,然后发送响应报文给浏览器。
- 浏览器获得html文件然后对其进行渲染。
- 最后把页面呈现给用户。
二.说说你对HTTP协议的理解。
**
http是超文本传输协议。但是它并没有做传输,传输是依赖TCP来进行的。
是一种无状态的协议,以请求应答的方式运行的协议。(无状态:不存储用户信息)。
- TCP连接:四元组(源地址、源端口、目的地址、目的端口)
- syn是连接报文
- ack是响应报文(确认报文)。
- fin是关闭连接的报文。
- 确认连接:TCP三次握手:a.同步双方初始序列号(ISN) b.协商TCP通信参数
TCP三次握手:(交换的内容:约定序列号)
第一次:客户端向服务器发送连接请求(SYN seq=x)。客户端进入SYN-SENT。
第二次:服务器收到连接请求,然后响应(SYN seq=y ,ACK ack=x+1)。
服务器由Listen态变成SYN-RECEIVE态。
第三次:当客户端收到服务器的响应,则进入ESTABLISHED态,并发送确认响应。
服务器收到确认响应后,进入ESTABLISHED态。
TCP四次挥手:
- 客户端发送close请求,发送FIN报文 ,客户端进入FIN_WAIT_1。
- 服务端收到断开连接请求向客户端响应一个ACK报文,并进入Close_wait状态,做一下收尾工作。客户端收到ACK报文后会进入FIN_WAIT_2状态。
- 服务端做完收尾工作后,调用close,然后向客户端发送一个FIN的报文。此时服务器进入LAST_ACK状态。
- 客户端收到FIN报文后,响应一个ACK报文给服务端,此时客户端进入TIME_WAIT(2MSL后进入CLOSED状态)。五服务端收到ACK报文后也进入CLOSED状态。