[面试时]我是如何讲清楚TCP运输链接管理的

1、概述

TCP是面向链接的协议,运输连接是用来传送TCP报文的。运输连接有三个阶段,即连接建立,数据传送,连接释放。TCP连接的简历采用客户服务器方式,主动发起连接建立的应用进程叫做客户,被动等待连接建立的应用进程叫做服务器。

2、连接建立

TCP连接建立的过程是三次握手,形象点就是:

  • A(SYN、seq):我要跟你连接,怎样?密钥(x)
  • B(SYN、ACK、seq、ack):可以呀,我已经准备好了。密钥(y,x+1)
  • A(ACK、seq、ack):既然可以,开始链接吧!密钥(y+1)

那么两次握手行不行?
假如出现B收到了“A已失效的连接请求报文段”,那么B以为A又发起了连接请求,于是就发送了确认同意请求,然而A并没有发起请求,于是忽略B的确认报文,这时

  • 如果是两次握手建立连接,B就会一直等下去,许多资源就白白浪费了
  • 如果是三次握手建立连接,B由于没有收到A的确认,因此知道A并没有发起连接请求,于是就放弃等待。

3、连接释放

TCP连接释放过程是四次握手,形象点就是:

  • A(FIN):我要关闭连接了。密钥(u)
  • B(ACK):好的,我告诉应用程序。密钥(u+1)
  • B(FIN、ACK):应用程序已经准备好关闭连接了。密钥(w)
  • A(ACK):既然都准备好了,那我就关闭连接啦。密钥(w+1)

为什么A在TIME-WAIT章台必须等待2MSL的时间呢?

  • 为了保证A发送的最后一个ACK报文段能够到达B。假如该报文段丢失,那么B收不到A的ACK报文段就会重发FIN+ACK报文段。此时A收到B的FIN+ACK报文段,会再一次发出ACK确认,并且重启2MSL计时器。直到双方都正常进入CLOSED状态。
  • 防止“已失效的连接请求报文段”出现在本链接中,A发送完最后一个ACK报文段后,再经过2MSL时间,本次连接产生的旧的连接请求报文段就会都从网络中消失。

4、保活计时器

假设连接建立后,其中一方突发故障,那么另一方就不可能白白等下去,因此需要一个保活计时器

  • A收到B发来的数据后,重置保活计时器,通常是两个小时
  • 若时间到了却没有收到B的数据,A就发送一个探测报文段,以后每隔75分钟发送一次
  • 所一连发送10个探测报文段都没有B的回应,那么A就认为B发生了故障,关闭连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值