LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3739|回复: 7

[网络原理]先来献丑~简单的理解TCP的连接与终止!

[复制链接]
发表于 2005-6-24 00:38:43 | 显示全部楼层 |阅读模式
通俗的理解TCP三次握手定律,小弟有什么说的不对的地方,希望大虾们多多补充!
tcp是属于可靠的,有连接的协议。tcp的连接过程称为三次握手
1:请求端发送一个syn段指明客户打算连接的服务器的端口,以及初始序列号syn1;
2:服务器发回包含服务器初始序列号syn2报文段作为应答,同时,将确认ack1设置为syn1+1来对请求端进行确认。
3:请求端必须将syn2+1来对服务器的syn2的确认.
我们用有趣的比喻来简单的理解这个过程。
第一握手:比如A要给B打电话.A拿起电话,拨号,通过电话服务商找到你所拨打的电话号码的地址,进行连接。
       这就是一个TCP数据封装的过程,心里要说的话就是TCP数据,所拨的电话号码就是对方的IP地址,等对方接起
       电话以前的等待就是TCP的listen状态,此时TCP首部中会包含一个syn1(同步序号)
第二次握手:这就是B接起电话,回复一个"喂",TCP数据就相当于"喂"字,TCP首部返回确认号ack1=syn1+1,一个同步序号syn2
第三次握手:就是你的回话了,就相当与告诉B我听到一样,返回一个确认号:ack2=syn2+1
       这样双方就开始通信了,也就是三次握手结束了
      
现在再让我们来看看终止连接的过程。
建立一个连接需要三次握手,但终止一个连接要经过4次握手。这是由TCP的半关闭造成的。
当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。当一端收到一个FIN,它必须通知应用层另一端已经终止了那个
方向的数据传送。
1:客户端发送一个FIN1:ACK1序列号,告诉服务器端,客户端应用程序关闭。
2:服务器发回确认序列好ACK1+1
3:服务端发送一个FIN2:ACK2序列号,告诉客户端,服务端应用程序关闭。
4:客户端发回一个ACK2+1,确认关闭。
我们再拿打电话来比喻。刚才已经连接成功,可以通话了。此时
A:挂了吧!(如同第一次终止连接握手)
B:那好吧,挂了!(如同第二次终止连接握手)
B挂线.(如同第三次终止握手)/*这里就如同A先提出的挂线,很有礼貌的等待B先挂了,然后自己再挂线*/
A挂线(第四次终止握手)
TCP连接终止结束。
TCP的连接超时:就是打电话没人接,最后成忙音,
这里只是很简单的说了一下连接和终止的过程。
TCP/IP详解卷1有很详细的解说,有兴趣的朋友可以看看这本,很经典的书之一。
发表于 2005-6-24 13:01:26 | 显示全部楼层
计算机网络 课程里面还是比较详细,如果你想更了解的话,可以看看谢希仁的《计算机网络》
回复 支持 反对

使用道具 举报

发表于 2005-6-26 15:29:13 | 显示全部楼层
Post by nbyh
计算机网络 课程里面还是比较详细,如果你想更了解的话,可以看看谢希仁的《计算机网络》

这本书正在看,觉得挺不错
回复 支持 反对

使用道具 举报

发表于 2005-6-26 23:02:25 | 显示全部楼层
《用TCP/IP进行网际互联》
也不错的。
回复 支持 反对

使用道具 举报

发表于 2005-6-28 15:42:32 | 显示全部楼层
呵呵 一楼说的蛮有意思,那么D O S 就可以说是好多人用公用电话同时给你打电话,你就只能一个一个接但是对方就是不说话你就只能等待对方断线在接下一个,正常的电话也接不进来了。
回复 支持 反对

使用道具 举报

发表于 2005-6-29 16:47:21 | 显示全部楼层
tcp/ip 详解 vol1
回复 支持 反对

使用道具 举报

发表于 2006-7-13 21:31:42 | 显示全部楼层

正常情况正确,请问客户端和服务器端都在ESTABLISH状态时要中止该连接,最少需要交互几

如题,多谢!偶认为2次
回复 支持 反对

使用道具 举报

发表于 2006-8-2 14:44:41 | 显示全部楼层
强烈推荐 Computer Networking : A Top-Down Approach Featuring the Internet (3rd Edition)
这才是经典阿。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表