计算机网络面试题总结1 —— 三次握手和四次挥手_TCP协议和UDP协议_HTTP协议版本区别

本文详细解析了TCP的三次握手和四次挥手过程,解释了三次握手不可减少的原因及其作用。同时,介绍了TCP和UDP协议的特点,如TCP的可靠性与面向连接,UDP的无连接和不可靠性。最后,对比了HTTP1.0、1.1和2.0版本的主要区别,包括连接管理和效率优化方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

TCP建立三次握手

三次握手是否可变为两次

三次握手的作用

四次挥手流程

四次挥手中的TIME_WAIT状态

TCP协议的特点

UDP协议的特点

HTTP1.0,1.1,2.0 的版本区别


TCP建立三次握手

回答版本可以分为两种:

第一种:

  1.  客户端先给服务器发送一个SYN 报文,准备建立连接;
  2.  服务器给客户端回发一个SYN + ACK 报文,表明已经接收到客户端的连接请求;
  3.  客户端给服务器发送一个ACK 报文表明连接成功建立。

第二种:

  1.   刚开始客户端处于closed 的状态,服务器端处于listen 状态;
  2.   客户端给服务器发送一个SYN 报文,并指明当前客户端的初始化序列号ISN ,表明当前需要建立连接,发送报文后,客户端的状态变为SYN_SEND 状态;
  3.   服务器收到报文后,返回一个SYN 报文作为应答,同时也指定了服务器端的初始化序列号,将客户端初始化序列号+1 作为ACK 的返回报文,表明自己已经接受了客户端的SYN 报文,此处服务器的状态变为SYN_RCVD 状态;
  4.   客户端收到来自服务器的报文后,会返回一个ACK 报文作为应答,将服务器端的初始化序列号+1 作为ACK 报文的值,此时客户端的状态为established 状态;
  5.   服务器端收到ACK 报文后,状态也变为 established 状态,表明连接建立成功。

三次握手是否可变为两次

        不可以,TCP的三次握手是为了让客户端和服务器确定双方的发送和接收能力正常,两次不能证明这一结论。

  1. 客户端发送一个SYN 报文,服务器接收后可知:客户端的发送能力正常,服务器端的接收能力正常;
  2. 服务器端发送一个ACK + SYN 报文后,客户端接收后可知:客户端的接收能力正常,服务器端的发送能力正常,由于服务器能返回报文,证明自己的第一个SYN 报文已经发送成功且接收成功,因此可以间接证明服务器端的发送能力正常,客户端的接收能力正常;
  3. 客户端发送一个ACK 报文后,服务器端接收后可知:客户端能发送报文来,证明自己之前发送的报文以成功到达且被接收,因此间接证明客户端的接收能力正常,服务器端的发送能力正常。

三次握手的作用

  1. 客户端和服务器端确认双方的发送和接收能力正常;
  2. 确定双方的初始化序列,为后续的可靠传送做准备。

四次挥手流程

  1. 若是客户端需要停止连接,则客户端回发送一个FIN 报文,并指定一个序列号,此时客户端处于FIN_WAIT1 的状态;
  2. 服务器端接收到来自客户端的FIN 报文后,会将序列号+1 的值作为ACK 的值返回,此时服务器端的状态为CLOSE_WAIT2 的状态,客户端处于FIN_WAIT2 的状态;
  3. 若服务器端也想断开连接,那么服务器端也会发送一个带有序列号值的FIN 报文,此时服务器端的状态为LAST_ACK 状态;
  4. 客户端收到来自服务器端的FIN 报文后,会返回一个ACK 报文,此时客户端的状态为TIME_WAIT 的状态,过一段时间若未收到来自服务器端的报文,那么进入CLOSED 状态;
  5. 服务器端收到来自客户端的ACK 报文后,进入CLOSED 状态。

四次挥手中的TIME_WAIT状态

        此时的TIME_WAIT状态需要等待一段时间,若未收到来自服务器端的FIN 报文,那么就可关闭,若收到FIN 报文,则重新发送ACK 报文。一般等待的时间为2*ms 

TCP协议的特点

  1. 面向连接的运输层协议:TCP协议是建立在连接的基础上进行的,三次握手是建立连接、四次挥手是摧毁连接;
  2. 可靠的传输:知道数据是否到达对方,提供无差错、不丢失、不重复、按序到达的连接;
  3. 全双工传输:通信双方都可在任何时间发送数据,因为双方都有缓冲区;
  4. 面向字节流的传输:TCP与应用层交互的是数据块,但TCP 协议把它看成是无结构的字符流,它不能保证发送方和接收方的数据库大小是否相同。

UDP协议的特点

  1. 无连接的协议
  2. 不可靠的协议
  3. 面向数据报的协议
  4. 首部开销小,只有8个字节
  5. 没有拥塞控制,发生了拥塞也不会降低发送速率

HTTP1.0,1.1,2.0 的版本区别

  1. HTTP1.0 规定每次浏览器和服务器建立完连接后,只发送一次数据就需要关闭连接。每次连接都需要建立三次握手,因此效率差;
  2. HTTP2.0 引入了持久化和管道机制。持久化就是指一次连接完成后,默认TCP 短时间内不会断开连接,只有当连接长时间没有回复或者浏览器主动请求关闭时,才会关闭。管道机制是指在同一个TCP 连接中,客户端可以发送多个请求,因此效率有所提升;
  3. HTTP2.0 采用了多路复用,可以使客户端和服务器同时发送多个请求,前提是进行二进制分帧。同时也有Header 压缩和服务端推送来提高效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值