您的位置:首页 > 理论基础 > 计算机网络

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

2015-04-19 16:44 281 查看

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发生了故障,关闭连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: