免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 961 | 回复: 0
打印 上一主题 下一主题

tcp协议 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-01 23:03 |只看该作者 |倒序浏览
2. TCP的通讯过程
在 TCP 通讯中主要有连接的建立、数据的传输、连接的关闭三个过程!每个过程完成不同
的工作,而且序列号和确认号在每个过程中的变化都是不同的。
2.1 TCP 建立连接
TCP 建立连接,也就是我们常说的三次握手,它需要三步完成。在 TCP 的三次握手中,发
送第一个 SYN 的一端执行的是主动打开。而接收这个 SYN 并发回下一个 SYN 的另一端执
行的是被动打开。
这里以客户端向服务器发起连接来说明。
1)  第 1步:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号
(ISN)是客户端随机产生的一个值,确认号是 0;
2)  第 2步:服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据
包中,序列号(ISN)是服务器随机产生的一个值,确认号是客户端的初始序列号+1;
3)  第 3步:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,
序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。
注意:因为一个SYN 将占用一个序号,所以要加 1。
初始序列号(ISN)随时间而变化的,而且不同的操作系统也会有不同的实现方式,所以每
个连接的初始序列号是不同的。TCP 连接两端,会在建立连接时,交互一些信息,如窗口
大小、MSS 等,以便为接着的数据传输做准备。
RFC793 指出 ISN 可以看作是一个 32bit 的计数器,每 4ms 加 1,这样选择序号的目的在于
防止在网络中被延迟的分组在以后被重复传输,而导致某个连接的一端对它作错误的判断。
2.2 TCP 传输数据
在 TCP 建立连接后,就可以开始传输数据了。TCP 工作在全双工模式,它可以同时进行双
向数据传输。这里为了简化,我们只谈服务器向客户端发送数据的情况,而客户端向服务器
发送数据的原理和它是类似的,这里便不重复说明。
服务器向客户端发送一个数据包后,客户端收到这个数据包后,会向服务器发送一个确认数
据包。
传输数据的简要过程如下:
1)  发送数据:服务器向客户端发送一个带有数据的数据包,该数据包中的序列号和确认号
与建立连接第三步的数据包中的序列号和确认号相同;
2)  确认收到:客户端收到该数据包,向服务器发送一个确认数据包,该数据包中,序列号
是为上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+
所该数据包中所带数据的大小。
数据分段中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证
数据传输的完整性。
2.3 TCP 关闭连接
前面我们提到,建立一个连接需要 3 个步骤,但是关闭一个连接需要经过 4 个步骤。因为
TCP 连接是全双工的工作模式,所以每个方向上需要单独关闭。在 TCP 关闭连接时,首先
关闭的一方(即发送第一个终止数据包的)将执行主动关闭,而另一方(收到这个终止数据
包的)再执行被动关闭。
关闭连接的 4 个步骤如下:   
1)  第 1步:服务器完成它的数据发送任务后,会主动向客户端发送一个终止数据包,
以关闭在这个方向上的 TCP 连接。该数据包中,序列号为客户端发送的上一个数
据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+该数据包
所带的数据的大小;
2)  第 2步:客户端收到服务器发送的终止数据包后,将对服务器发送确认信息,以关
闭该方向上的 TCP 连接。这时的数据包中,序列号为第 1 步中的确认号值,而确
认号为第 1 步的数据包中的序列号+1;
3)  第 3步:同理,客户端完成它的数据发送任务后,就也会向服务器发送一个终止数
据包,以关闭在这个方向上的 TCP 连接,该数据包中,序列号为服务器发送的上
一个数据包中的确认号值,而确认号为客户端发送的上一个数据包中的序列号+该
数据包所带数据的大小;
4)  第 4步:服务器收到客户端发送的终止数据包后,将对客户端发送确认信息,以关
闭该方向上的 TCP 连接。这时在数据包中,序列号为第 3 步中的确认号值,而确
认号为第 3 步数据包中的序列号+1;
注意:因为 FIN和 SYN 一样,也要占一个序号。理论上服务器在 TCP 连接关闭时发送的终
止数据包中,只有终止位是置 1,然后客户端进行确认。但是在实际的 TCP 实现中,在终
止数据包中,确认位和终止位是同时置为 1 的,确认位置为 1 表示对最后一次传输的数据进
行确认,终止位置为 1 表示关闭该方向的TCP 连接。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42728/showart_332166.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP