[面试时]我是如何讲清楚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发生了故障,关闭连接。
相关文章推荐
- [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 转
- TCP/IP笔记 三.运输层(4)——TCP链接管理与TCP状态机
- TCP/IP笔记 三.运输层(4)——TCP链接管理与TCP状态机
- TCP/IP笔记 三.运输层(4)——TCP链接管理与TCP状态机
- 2017-02-14 面向连接的运输:TCP、TCP链接、TCP报文段结构、往返时间的估计与超时、可靠数据传输、流量控制、TCP链接管理
- [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的
- 20170907_我是如何讲清楚TCP协议是如何保证可靠传输的
- Android面试整理之SQLite数据库——如何管理SQLite数据库
- 如果芯片作为TCP_Server,最多可以链接几个Client,应该如何操作?
- 如何在django管理后台显示一个链接
- 如何使用lsp的hook技术解决TCP链接超时测试场景的模拟
- 三 运输层(三)TCP传输控制协议(五)TCP连接管理
- 如何在报表管理平台添加链接或上报标签?
- [互联网面试笔试汇总C/C++-27] 为什么TCP链接要三次握手而不是两次握手-雅虎
- 20170906_我是如何讲清楚TCP的三次握手和四次挥手的
- 如何在报表管理平台添加链接或上报标签?
- [面试时]我是如何讲清楚GCD的
- TCP/IP入门(3)---运输层 据说是面试最主要的部分~~~
- IOS面试题目-----oc 是如何管理内存的《Z》
- 色彩管理软件如何有测色色差仪链接