面试---TCP/IP三次握手与四次挥手

我理解的TCP/IP三次握手与四次挥手

TCP/IP是传输层应该面向连接可靠安全的传输协议。三次握手的机制是为了保证确立一个安全可靠的连接。第一次握手是由客户端发起,客户端会向服务器发送一个报文,在报文里面同步序号SYN置为1,当服务器收到报文后,服务器知道客户端要建立连接,于是服务器向客户端发送一个确认消息包,这个包确认序号ACK置为1.经过以上2次握手后,客户端与服务器彼此都准备好交互。都是对于服务器而言,2次握手是不够的,因为此时服务器知道客户端要建立连接,但是服务器不知道客户端能不能收到由服务器收到消息。因此需要第3次握手,当客户端收到服务器发过来的确认消息后,还要给一次ACK置为1的回应报文。通过3次连接,不管是服务器还是客户端都知道可以发送和接收彼此消息,从而确定可靠安全连接。
在这里插入图片描述
3次握手
在这里插入图片描述
4次挥手

报文的格式

在这里插入图片描述


常见面试题

1. SYN攻击是什么?
SYN攻击就是客户端在短时间内伪造大量不存在的IP地址,并向服务器不断地发送SYN包,服务器则回复确认包,并等待客户端确认,由于源地址不存在,因此服务器需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击。

2. 为什么服务器端在TIME-WAIT状态需要2MSL(最大报文段生存时间)才能进入CLOSED状态?
TIME-WAIT:主动断开连接的一方,需要等待应答。
在断开连接时发送了了报文,发送完毕后本应该直接进入CLOSED状态,但是网络是不可靠的,在最后客户端发送给服务端的ACK确认报文有可能是会丢失的,如果客户端没有等待2MSL时间,直接在发送确认报文后直接进入CLOSED,而服务器端实际上是没有收到确认报文,则会不断的重发确认报文段,此时的客户端已经关闭并不会有理睬,这就会导致服务器端关闭异常,所以客户端不能在发送ACK报文段后立即关闭,需要再发送后进入TIME-WAIT状态,客户端设置一个计时器,等待2MSL时间,如果在此事件内收到重发的FIN报文,客户端会重新发送ACK报文与服务器端进行确认在此等待2MSL,而等待的MSL时间就是在网络中一个报文段生存的最长时间,2MSL就是一次发送一次回复所需的最大时间,直到在2MSL时间断内没有收到重发的报文才会进入CLOSED状态,结束TCP连接。
3.如果在已经建立了连接时,客户端突然发生故障了怎么办?
TCP设有一个保活计时器,当客户端出现故障时,服务器不会一直等者浪费资源。正常情况下,服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若在两小时内没有收到客户端的任何数据 ,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
4.四次挥手—服务器先关闭,客户端不关闭,继续发送数据,会出现什么情况?
客户端:因为服务器关闭(相当于管道中对方的读端关闭写端写满缓冲区就会触发SIGPIPE信号,操作系统会强制关闭写端),客户端继续写的话,会触发SIGPIPE信号,操作系统会强制关闭客户端。
5.第三次握手失败了怎么办?
当客户端与服务器端的三次握手失败了以后,即在客户端发送至服务器端的确认建立连接报文段未能到达服务器端,服务器在等待客户端回复确认报文的过程中超时了,那么服务器会向客户端发送一个RST报文段并进入关闭状态,即并不等待客户端第三次握手的ACK包重传,直接请求关闭连接,这一行为是为了防止泛洪攻击。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值