计算机网络面试题
网上有很多面经,希望总结到一起不用专门去一个个找。主要总结字节跳动、腾讯、阿里等大厂的面经。
参考链接🔗
1. TCP/UDP网络模型共有多少层?
应用层(对应OSI:应用层、表示层、会话层)
传输层(对应OSI:传输层)
网络(互连)层(对应OSI:网络层)
主机到网络层(对应OSI:数据链路层、物理层)
2. TCP和UDP的区别
-
TCP是可靠传输、UDP是尽最大努力交付
-
TCP面向字节流,UDP面向报文
-
TCP面向连接,UDP无连接
-
TCP和UDP都是传输层的协议
-
TCP传输数据有序、UDP不保证有序性
-
TCP有流量控制和拥塞控制
-
TCP首部20个字节,UDP首部8个字节
-
TCP支持点到点,UDP支持一对一、一对多、多对多
3.从应用层到网络层各层的header都有什么不同的功能。
还没找到相关的解答。
4. TCP 连接的客户端和服务端状态。
三次握手:
-
客户端发送请求连接的请求,进入SYN_SENT的状态。SYN=1,seq=x
-
服务端接收到客户端请求,进入SYN_RCVD的状态。SYN=1,ACK=1,seq=y,ack=x+1
-
客户端进入ESTABILISHED的状态,发送ACK=1,seq=x+1,ack+y+1。服务端也进入ESTABLISHED状态
四次挥手:
-
客户端发送FIN报文,进入FIN_WAIT1状态。FIN=1 seq=x
-
服务端收到FIN报文,发送ACK报文,ack=x+1。服务端进入CLOSE_WAIT2状态
-
客户端发送FIN报文,进入LAST_ACK状态。FIN=1 seq=y
-
客户端收到FIN,发送ACK报文作为回应,ack=y+1。进入TIME_WAIT状态,过一阵之后服务端收到自己的ACK报文之后进入CLOSED状态。
-
服务端收到ACK报文后,进入CLOSED状态
5. HTTP和HTTPS的区别
-
HTTPS需要证书
-
HTTPS运行在SSL之上,SSL运行在TCP之上,是添加了加密认证机制的HTTP,导致HTTPS的消耗更大。HTTP是明文传输。
-
HTTP端口号为80,HTTPS的端口号为443
-
HTTP的连接是无状态的
6.HTTP的状态码有哪些
状态码分类:
-
1xx:表示目前是协议的中间状态,还需要后续请求
-
2xx:表示请求成功
-
3xx:表示重定向状态,需要重新请求
-
4xx:表示请求报文错误
-
5xx:服务器端错误
常用状态码:
-
101:切换请求协议
-
200:请求成功,有响应体
-
301:永久重定向,会缓存
-
302:临时重定向,不会缓存
-
304:协商缓存命中
-
403:服务器禁止访问
-
404:资源未找到
-
400:请求错误
-
500:服务器端错误
-
503:服务器繁忙
7. HTTP协议的请求报文和响应报文格式
请求报文
由请求行、请求头部、空行、请求数据四个部分组成。
请求行包括请求方法(GET/POST/PUT/HEAD...等请求方法)以及HTTP协议版本。
响应报文
由状态行、响应头部、空行、响应体四个部分组成
具体可以看:http协议请求报文与响应报文分析 - 王辉冯 - 博客园
8. TCP的拥塞控制
主要算法:
-
慢启动+拥塞避免
-
快重传(收到三个重复的ACK)和快恢