2009年 4月
第 30卷第 2期
湘南学院学报
Journal of Xiangnan University
Apr.,2009
V0l_30 No.2
TCP连接中第三次握手出现的问题
及改进方法
朱静涛
(长沙理工大学 电气与信息工程学院,湖南 长沙 41 0000)
摘 要:目前 TCP连接普遍采用三次握手形式,但是在连接过程中(即每次握手时),碰到网络拥塞或网络连接效果不
稳定等问题的概率很高,从而会导致无法连接或延时过长等现象.本文介绍了一个在报文段中用加入计时器来代替第三
次握手功能的方法,使之可以减少上述问题发生的概率.
关键词:TCP报文段;三次握手;计时器
中图分类号:TP302 文献标识码:A 文章编号:1672—8173(2009)02—0077-03
1 TCP的运输连接管理
TCP是面向连接的协议,运输连接是用来传送TCP报文的.TCP的运输连接的建立和释放是每一次面向
连接的通信中必不可少的过程,因此,连接过程就可以归纳为三个阶段,即:连接建立、数据传送和连接释放.
在连接建立过程中主要需要解决以下三个问题:
1)、要使每一方能够确知对方的存在
2)、要允许双方协商一些参数(如最大报文段长度、最大窗口大小、服务质量等);
3)、能够对运输实体资源(如缓存大小,连接
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中的项 目等)进行分配.
本文重点关注第一个问题的优化解决方 +. 。
式 .
TCP的连接和建立都是采用客户服务器
方式,主动发起连接建立的应用进程叫做客
户(client),被动等待连接建立的应用进程叫
做服务器(server),如图 1所示.
设主机 B中运行一个服务器进程,他先
发出一个被动打开(passive open)命令,告诉
他的 TCP要准备接受客户进程的连接请求 ,
然后服务器进程就处于“听”(1isten)的状态 ,
不断检测是否有客户进程要发起连接请求.
如有,即做出响应.
主动打开
连接请求
SY AC sEQ=Y
AeK--X+i
图 1 TCP连接过程 图
确认
设客户进程运行在主机 A中,它先向其 TCP发出主动打~F(active open)命令,表明要向某个 IP地址的某
个端口建立运输连接.
主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同比特SYN应置 1,同时选择一个序
号x,表明在后面传送数据时的第一个数据字节的序号时X+l,如图1.
收稿日期:2009一O1—02
作者简介:朱静涛(1984一),男,湖南郴州人,长沙理工大学电气与信息工程学院研 究生.研究方向:计算机网络.
· 77·
主机B的TCP收到连接请求报文段后,如同意,则发回确认.在确认报文段中应该将SYN和ACK都置 1,
确认号应为X+I同 时也为自己选择一个序号 Y.
主机 A的TCP收到主机 B的确认后,要向主机 B给出确认,其 ACK置 1,确认号为 Y+I,而自己的序号为
X+I.TCP的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
规定,SYN置 1的报文段要消耗掉一个序号.
当运行服务器进程的主机 A的TCP通知上层应用进程,连接已经建立.当主机 A向主机 B发送第一个
数据报文段时,其序号仍为X+I.
当运行服务器进程的主机 B的TCP收到主机 A的确认后,也通知其上层应用进程,连接已经建立.
整个的这个过程叫做三次握手(three—way handshake),或三次联络.
其中发送第三段报文段的作用,主要是为了防止已失效的连接,请求报文段突然又传送到主机B,因而
产生错误.
2 第三个报文段主要解决的问题
当主机 A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点滞留时间太长,以致延误在这
次连接释放以后才传送到主机 B.本来这是一个已经失效的报文段,但是主机 B收到此失效的连接请求报文段
后,误认为是主机 A又发出的一个新的请 皇 . .
求,于是主机B向主机A发出确认报文段. 1 I I l
但是由于主机 A并没有要求建立连接 L— L—
(即对于主机 A来说原报文段已经失效), s
因此不会理会主机 B的确认 ,也不会向主
机 B发送数据.可是主机 B却认为运输连
接已经建立了,并一直等待主机 A发来数
据,这样主机 B的许多的资源就浪费掉了.
采用第三次握手就是为了防止上述现象发
生.
3 在三次握手中可能产生的问题
s ACKSEQ~-Y
AC +1
图2 三次握手中可能碰到的不利因素
因为有了三次握手,所以报文段在网络传输中遇到的不利情况的概率增加了:例如当第三次握手时,如果
出现网络问题而使第三个报文段无法到达主机 B,则主机 B不会认为建立连接,而主机 A认为连接已经建立,
并开始发送数据,从而浪费了A的网络资源;另一种情况如果第三个报文段在某些结点延时过长才能到达主
机 B,在此之前主机 B也不会认为连接建立,而主机 A确会认为连接已经建立,开始发送数据,从而也会浪费
了A的网络资源.如图 2
无论是何种网络或则无论网络状况是否良好,进行三次握手都会比进行两次握手多出部分时延(在低速
网络传输介质中比在高速介质中要明显).而在目前国际上都想方设法给TCP连接进行加速操作的情况下,通
过减少一次握手来节省时间是十分必要的.
4 针对第三次握手的改进方法及其作用
由于第三次握手主要是为了防止已经失效的连接请求报文段、突然又传送到主机 B,而产生错误 ,那我们
可以用一种方法让已经失效的连接请求报文段在超过主机 A的连接释放时间(设为Tdis)之后,就能 自动被其
他设备辨认出其已经失效而可以不予理会,这样就可以解决上面的问题.具体改进方法为:
1、在报文段中设置一个计时器,里面包含本报文段的发出时间和有效时间(设为T).T可以由TCP重传机
· 78 ·
例中的报文段计时器时间(设为 T )和主机 A的连接释放时
间来确定(并满足 T
本文档为【TCP连接中第三次握手出现的问题及改进方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。