0.前言
T CP/IP在传输层指定了三个协议,UDP、T CP和SCT P,其中SCT P 是新的传输层协议,现在一些实现已经在使用。本文将着重讨T CP协议。T CP与UDP类似位于网络层和应用层之间,是进程到进程的协议,但T CP是面向连接,可靠的运输协议,它给IP服务添加了面向连接和可靠性的特点。
1.TC P的服务
(1)进程到进程的通信
像UDP那样,TC P也是使用端口号提供进程到进程的通信。与UDP不同的是TC P的端口号还可以复用,这是因为T CP用一个数对(HOST IP,PORT)来标识一条连接。
(2)流交付服务
与UDP不同,T CP是一种面向流的协议,在UDP中进程把已有预先定义好边界的一些报文发送给UDP以便进行交付。但T CP刚允许发送进程以字节流的形式来传递数据,收进程也把数据作为字节流来接收。TC P创建了一种环境,使得两个进程好像被一个假想的“管道”所连接。
(3)全双工通信
数据可在同一时间双向流动,每一个T CP都有发送缓存和接收缓存,而两个方向都可以发送报文段。TCP的捎带技术是全双工通信的一个很好应用。
(4)面向连接的服务
T CP的工作时序为:两个T CP在它们之间建立连接;数据在两个方向进行交换;连接被终止;有些连接并非连接;因为下层使用了不可靠的交付服务IP。
(5)可靠的服务
T CP使用确认机制来检查数据是否安全和完整地到达,这种机制的基础是带重传的肯定确认。
2.TC P的特点
(1)编号系统
字节号:TCP把在每一个方向传送的字节都进行编号,编号是从随机产生的数开始的。
序号:当字节都被编号后,T CP就给每一个报文段指派一个序号。每个报文段的序号就是在这个报文段中的第一个字节数据的序号。
确认号:报文段中确认字段值定义了某一方所期望接收的下一个字节的编号。确认号是累计的。
(2)流量控制
滑动窗口
T CP在缓存上定义了一个窗口,缓存是用来暂存放从应用程序传递来并准备发送的数据。T CP发送数据的多少由这个滑动窗口协议定义。在这个窗口中的字节是可以发送而不必考虑确认的,这个想象中的窗口有两个沿,一个在左边,另一个在右边,这个窗口叫滑动窗口左边的的字节是已发送且收到确认的,右边字节是未发送的,窗口内的字节是发送了还未收到确认的,当收到确认后,窗口向前滑动。滑动窗口使传输更加有效,同时也控制了数据的流动,使得终点不致因数据过量而瘫痪。此滑动窗口是面向字节的。
窗口大小是RWND和CWND中较小的一个,源点并非必须要发送整个窗口大小的数据,接收端可以使窗口展开或合拢,但不应使它缩回,终点可以在任何时刻发送确认,只要不会引起窗口的缩回。接收端可以暂时关闭窗口,但发送端永远可以在窗口关闭后发送一个字节的报文段(防死锁)。
(3)糊涂窗口综合症
在滑动窗口的操作中可能出现一个严重的问题,这就是发送应用程序产生数据很慢,或者接收程序消耗
数据很慢,或者两者都有。不管是上述哪种情况,都使得发送数据的报文段很小,这就非常低效的使用网络容量。这个问题叫糊涂窗口综合症。
发送端产生的症状
为产生数据很慢的应用程序服务可能会产生糊涂窗口综合症, Nag le算法到了一个很好的解决方法。
发送端TCP经从发送应用程序收到的第一块数据发送出去,哪怕只有一个字节。
在发送第一个报文段以后,发送端T CP就在输出缓存中积累数据并行等待,直到或者接收端T CP发送出确认,歌者已积累到足够的数据可以装成最大长度的报文段。这时,发送端T CP就可以发送这个报文段。
对剩下的传输,如果收到了对报文段2的确认,或者已积累到足够的数据可以装成最大长度的报文段,报文段3就必须发送出去。
接收端产生的症状
如果接收端T CP为消耗数据很慢的应用服务,可能会产生糊涂窗口综合症。有两种建议的解决方法。
Clark解决方法:只要有数据到达就发送确认,但在或者缓存已有足够大的空间放入最大长度的报文段之前,或者缓存空间的一半已经变空之前,一直都宣布窗口值为零。
tcp ip协议在哪推迟确认:当报文段到达时并不立即发送确认,接收端在对收到的报文段进行确认之前一直等待,直到缓存有足够的空间为止。
(4)拥塞控制
发送端的窗口大小不等取决于接收端,而且还取决于网络的拥塞。发送端有两种信息:接收端通告的窗口大小和拥塞窗口大小。窗口的真正大小是两者中的较小的一个。真的的窗口=minimum(rwnd,cwnd) T CP处理拥塞的一般策略是基于三个阶段:慢开始,拥塞避免和拥塞检测。在慢开始阶段,发送端从非常慢的发送速率开始,但很快就把速率增大到一个门限。当到达门限时,数据率的增长就放慢以避免拥塞。最后,如果检测到拥塞,发送端就又咽到慢开始或拥塞避免阶段,这要根据拥塞是怎样检测到的。
在慢开始算法中,拥塞窗口的大小按指数规律增长,直到它到达一个门限为止。
在拥塞避免算法中,拥塞窗口的大小按照加法规律增长,直到拥塞被检测到。大多数的实现对拥塞检测的瓜不一样:如果是用超时检测到拥塞,那么就开始一个新的慢开始阶段。如果是用三个ACK检测到拥塞,那么就开始一个新的拥塞避免阶段。
3.TC P的报文段格式
T CP的分组叫做报文段,其格式如下图1-1
由两部分组成,首部和数据。首部在没有选项时是20字节,当有一些选项时可多达60字节。下面分别讨论每个字段的意思:源端口地址:定义了在主机中发送这个报文段的应用程序的端口号。
目的端口地址:定义了在主机在接收这个报文应用程序的端口号。
序号:定义了指派给本报文段第一个数据字节的一个号。在连接建立时,每一方使用随机数产生器产生初始序号。
确认号:定义了报文段的接收端期望从对方接收的序号。确认号可以和数据捎带在一起发送。
首部长度这个位字段指出T首部共有多少个字节字。
保留保留为今后使用。
TCP协议分析报告
付慧高思庆
(临沂师范学院信息学院山东临沂276005)
【摘要】本文是对TC P/IP协议族中T CP协议的分析报告。将从T CP的服务、特点,报文段格式、TCP连接、差错控制等几个方面来分析,并且还融入了网络安全的相关知识。
【关键词】TCP;T CP协议;TCP连接;差错控制
6
:4CP4
:
图1-1
TCP 的报文段格式
控制:定义了6种不同的控制位或标志,在同一时间可设置一位或多位标志。
URG:紧急指针有效;ACK:确认有效;PSH:请求推操作;RST :连接复位;SYN:同步序号;FIN:终止连接。
窗口大小:定义对方必须维持的窗口值(字节为单位)检验和:在UDP 中是可选的,但在T CP 中是强制的。紧急指针:指明报文段中包含紧急数据。选项:加入可选项,如SACK
4.TC P 连接
T CP 连接的虚拟的,不是物理的,T CP 工作在高层。T CP 使用IP 的服务把单个的报文段交付给接收端,但是T CP 控制这个连接本身,如果一个报文段丢失了或受到损伤,那么它就要重传。但IP 不知道这种重传,如果一个报文段没有按序到达,那么T CP 保留它,直到丢失的报文段到达为止,IP 并不知道这种重新排序。
T CP 面向连接的传输需要三个阶段:连接建立、数据传输和连接终止。
(1)三次握手建立连接:
客户发送第一个报文段,SYN 报文段,这个报文段中只有SYN 标志置1,这个报文段的作用是使序号同步,不携带任何数据,但是它消耗一个序号。
服务器发送第二个报文段,即SYN+ACK 报文段,服务器使用
SYN 报文段同步初始序号,以便从服务器向发送字节。
使用AC K 标志确认已从客户端收到了SYN 报文段,同时给出期望从客户端收到的
下一个序号,服务器还必须定义客户端要使用的接收窗口。SYN+ACK 报文段不携带数据,但消耗一个序号。
发送第三个报文段仅仅是一个ACK 报文段,此报文段序号与上一个SYN 序号一样,ACK 不消耗任何序号,客户还必须定义服务器窗口值。(有些实现中第三个报文段可以携带数据块,这时报文段必须有一个新的序号来表示数据中的第一个字节的编号。
两个进程都发出主动打开,这种情况下,两个T CP 都向对方发送
SYN+ACK 报文段,此时没有客户,也没有服务器,通信的双方是对等的。等到两个SYN+ACK 报文段确认了SYN 报文段后,连接就打开了。(四向握手)
(2)数据传送
连接建立后,双向的数据传送就可以开始。客户和服务器都可以在两个方向传送数据和确认,两端使用缓存提高了T CP 的效率。
推送数据
但有些时候一方的应用程序打算把它键入的字符发给对方并期望立即收响应,数据的延迟传输和延迟交付对应用程序来说是不可接受的,此时发送端可以请求推操作,表示发送端T CP 不必等待窗口被填满,它每创建一个报文段就立即发送,发送端T CP 还必须设置推送位PSH 以告诉接收端TCP,这个报文段所包括的数据必须尽快地交付接收应用程序,而不要等待更多的数据的到来。
紧急数据
有些时候发送应用程序希望某一块数据由接收应用程序不按序读出,解决这个问题的方法是发送URG 位置1的报文段。发送应用程序告诉发送端T CP 这块数据是紧急的,发送端T CP 创建报文段,并把紧急数据放在报文段的开始。报文其余部分可以包括来自缓存的正常数据。首部中的紧急指针字段了紧急数据的结束和正常数据的开始。当接收端T CP 收到URG 位置1的报文段时,它就利用紧急指针的值从报文段中提取出紧急数据,并不按序把它交付给接收应用程序。
(3)连接终止
参加数据交换的双方中的任何一方都可以关闭连接,当一个方向的连接被终止时,另外一方还可向对方发送数据,现今大多数的初到允许在终止时有两个选项:具有半关闭的三向握手和四向握手。但目前大多采用了四向握手。
三向握手
现今大多数的实现在连接终止时使用三向握手。
客户T CP 在收到客户进程发来的关闭命令后,就发送第一个报文段FIN ,此报文段可以包含客户发送的最后一块数据。
服务器T CP 在收到这个FIN 报文段后,把这种情况通知它的进程,并发送第二个报文段FIN+ACK 报文段宣布在另一个方向的连接关闭了。此报文段可以包含从服务器发送的最后一块数据。
客户TC P 发送最后一个报文段ACK 来证实从T CP 服务器收到了FIN 报文段。
半关闭
在T CP,一方可以终止发送数据,但仍然可以接收数据,这叫半关闭。客户发送FIN 报文,半关闭了这个连接,但服务器仍然可以发送数据,当服务器已经把所有处理的数据都发送完毕时,就发送FIN 报文段。客户端收到后回送AC K 完成关闭。
连接复位
在一端的T CP 可以拒绝一个连接请求,可以异常终止一条连接,或可以终止一条空闲的连接,所有这些都可以用RST 标志来完成。
5.差错控制
T CP 使用差错控制提供可靠性,差错控制包括以下一些机制:检
测受到损伤的报文段、丢失的报文段、失序的报文段和重复的报文段。差错控制还包括检测出差错后纠正差错的机制。T CP 中的差错检测和差错纠正是通过使用这样三个简单工具得的:检验和、确认以及超时。【参考文献】
[1]TCP/IP 协议族第三版Behrouz A.Forouz an 著234-290.[2]用TCP/IP 进行网际互联第一卷Douglas E.Comer 著144-173.
作者简介:付慧(1981—),女,硕士,助教,主要研究方向:虚拟现实。通信地
址:山东省临沂市临沂师范学院信息学院。高思庆(1977—),男,硕士研究生,助教,主要研究方向:软件工程,人工智能,计算机网络。
[责任编辑:汤静
]
(上接第43页)混凝剂投加顺序的影响。
当使用多种混凝剂时,其最佳的投加顺序通过试验确定。一般而言,当无机混凝剂与有机混凝剂并用时,
先投加无机混凝剂,再投加有机混凝剂。但当处理的胶粒在50μm 以上时,常先投加有机混凝剂吸附架桥,再加无机混凝剂压缩双电层而使胶体脱稳。【参考文献】
[1]李道荣,水处理剂概论[M ]。北京:化学工业出版社,2005,42—57.
[2]郑怀礼,生物絮凝剂与絮凝技术[M]。北京:化学工业出版社,2004,2—14,34—75.
[3]刑素青,化学强化絮凝法处理焦化废水的研究[D]。太原:太原理工大学,2006.
[4]陈复,水处理技术及药剂大全[M ]。北京:中国石化出版社,2000,102—126.
[责任编辑张新雷]
6:1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。