6.1 http1.0和http1.1有什么区别。
HTTP1.1相较于HTTP1.0增加了长连接、管道。
- 长连接:为解决HTTP/1.0发送一次请求,建立一次TCP,因此HTTP/1.1新增了长连接,减少连接重复创建和断开
- 管道:解决HTTP/1.0在一个TCP连接中每发送一个请求需等待一个响应的问题,HTTP/1.1新增管道,一个TCP中可发送多个请求,不必等其响应,减少整体响应时间。
6.2 TCP三次握手和四次挥手的流程,为什么断开连接要4次,如果握手只有两次,会出现什么。
TCP三次握手
客户端和服务端双方开始都是CLOSED状态,服务端首先监听某个端口进入LISTEN状态。
- 客户端随机初始化序号client_isn,然后将其存储在TCP的首部序号中,同时将SYN标记为1,表示SYN报文。接着客户端将SYN报文发送给服务端,表示向服务端发起连接,之后客户端进入SYN-SEND状态
- 服务端接收到客户端的SYN报文后,随机初始化序列号server_isn然后存储在其TCP的首部序号中,然后将client_isn+1添加到其确认应答号中,同时将SYN和ACK标记为1。接着将报文发送给客户端,进入SYN-RCVD状态。
- 客户端收到服务端的SYN-ACK报文后,返回一个确认应答号(server_isn+1)给服务端,然后将ACK标志为1。最后将ACK报文发送给服务端,这次连接客户端可携带数据,然后进入ESTABLISHED状态。
- 服务端收到客户端的应答报文后,也进入ESTABLISHD状态。
三次握手原因:无中间状态给客户端防止重复连接,造成重复连接导致的资源浪费。同步双方序列号
TCP四次挥手
- 客户端想断开连接,客户端会发送一个TCP头部的FIN控制位置为1的报文,即FIN报文,然后客户端进入FIN_WAIT1状态。
- 服务端收到客户端的报文后,发送一个ACK,然后进入CLOSE_WAIT状态。
- 客户端收到服务端的ACK报文后,进入FIN_WAIT2状态。
- 等待服务端处理完数据后,发送一个FIN报文,然后进入LAST+ACK状态。
- 客户端收到服务端的FIN报文后,回复一个ACK报文,然后进入TIME_WAIT状态。
- 服务端收到客户端的ACK报文后,进入CLOSE状态。服务端完成连接关闭
- 客户端经过2LSM后,自动进入CLOSE状态。客户端完成连接关闭。
四次挥手原因:服务端需要等待数据的处理和发送,且服务端的FIN报文和ACK报文是分开发送的。
6.3 TIME_WAIT和CLOSE_WAIT的区别。
TIME_WAIT和CLOSE_WAIT都是TCP四次挥手中的状态,其中TIME_WAIT是客户端的挥手状态,CLOSE_WAIT是服务端的挥手状态。
6.4 说说你知道的几种HTTP响应码,比如200, 302, 404。
- 2XX,表示响应数据成功,200表示服务端成功响应数据
- 3XX表示重定向,302表示临时重定向,303表示永久重定向,304表示协商缓存重定向
- 4XX表示客户端错误,404表示客户端请求路径错误
- 5XX表示服务端错误
6.5 当你用浏览器打开一个链接(如:https://docs.qq.com/doc/DWEZjdlBqU3ppZWhu)的时候,计算机做了哪些工作步骤。
URL解析、DNS解析域名、TCP传输、IP传出(计算哪个网卡发出源IP)、网络接口层计算出目标地址的MAC地址,在网卡层将在数据首部添加起始帧,在尾部添加校验和。然后将数据信号转换为电信号在电路中传输,传输到交换机时;交换机首先将电信号转化为数据信号,然后通过数据包中的校验和校验数据是否完整。如果完整则根据路由表将数据传输给路由器。
TCP/IP如何保证可靠性,说说TCP头的结构。
TCP/IP是依靠TCP协议来保证数据的可靠性的。
TCP头包括四元组(源端口、目标端口、序列号(解决网络包乱序)、确认应答号(解决丢包问题)、首部长度、控制位、窗口大小、校验和、选项)
如何避免浏览器缓存。
如何理解HTTP协议的无状态性。
简述Http请求get和post的区别以及数据包格式。
HTTP有哪些method
简述HTTP请求的报文格式。
HTTP的长连接是什么意思。
HTTPS的加密方式是什么,讲讲整个加密解密流程。
Http和https的三次握手有什么区别。
什么是分块传送。
Session和cookie的区别。
标签:HTTP,ACK,报文,TCP,服务端,客户端 From: https://www.cnblogs.com/kzf-99/p/17964881