常见面试题

TCP三次握手、四次挥手

1.三次握手

2.四次挥手

四次挥手

为什么会有TIME_WAIT状态
  1. 确保有足够的时间让对方收到ACK包
  2. 避免新旧连接混淆
为什么需要四次握手才能断开连接

因为全双工,发送方和接收方都需要FIN报文和ACK报文

服务器出现大量CLOSE_WAIT状态的原因

对方关闭socket连接,我方忙于读或写,没有及时关闭连接

  1. 检查代码,特别是释放资源的代码
  2. 检查配置,特别是处理请求的线程配置

3.TCP与UDP的区别

  • 面向连接vs无连接
  • 可靠性vs不可靠性
  • 有序性vs无序性
  • 速度慢vs速度快
  • 量级20字节vs8zijie

4. tcp滑动窗口

RTT和RTO
  1. RTT:发送一个数据包到服务器,服务端返回一个ACK,客户端收到对应的ACK,所花费的时间
  2. RTO:重传时间间隔。TCP在发送一个数据后,会启动一个重传定时器,如果收到回复就会重置RTO,否则就会重传数据
TCP使用滑动窗口做流量控制与乱序重排
  1. 保证TCP的可靠性
  2. 保证TCP的流控特性

5.拥塞控制

满开始,拥塞避免,快重传,快恢复

地址

6.HTTP

超文本传输协议HTTP是属于应用层的协议
  1. 支持客户/服务器模式(客户端向服务器发送请求,服务器返回响应)
  2. 简单快速
  3. 灵活
  4. 无连接
  5. 无状态

、

请求。响应的步骤
  1. 客户端连接到web服务器
  2. 发送HTTP请求
  3. 服务器接受请求并返回HTTP响应
  4. 释放连接TCP连接
  5. 客户端浏览器解析HTML内容

7.Cookie和Session

  1. 是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端
  2. 客户端再次请求的时候,会把Cookie回发
  3. 服务器接受到后,会解析Cookie生成与客户端相对应的内容
Session
  1. 服务器端的机制,在服务器上保存的信息
  2. 解析客户端请求并操作session id,按需保存状态信息