赞
踩
在TCP/IP协议簇中有两个传输协议:传输控制协议(Transmission Control Protocol, TCP)
和用户数据报协议(User Datagram Protocol, UDP)。TCP是面向连接的,而UDP是无连接的。
本节详细讨论TCP协议的控制机制,并简要介绍UDP协议的特点。
目录
TCP协议提供面向连接的可靠的传输服务,适用于各种可靠的或不可靠的网络。TCP用户送来的是字节流形式的数据,这些数据缓存在TCP实体的发送缓冲区中。一般情况下,TCP实体自主地决定如何把字节流分段,组成TPDU发送出去。在接收端,也是由TCP实体决定何时把积累在接收缓冲区中的字节流提交给用户。分段的大小和提交的频度是由具体的实现根据性能和开销权衡决定的,TCP规范中没有定义。显然,即使两个TCP实体的实现不同,也可以互操作。
另外,TCP也允许用户把字节流分成报文,用推进(PUSH)命令指出报文的界限。发送端TCP实体把PUSH标志之前的所有未发数据组成TPDU立即发送出去,接收端TCP实体同样根据PUSH标志决定提交的界限。
TCP只有一种类型的PDU,叫做TCP段,段头(也叫TCP头或传输头)的格式如下图
所示,其中的字段如下。
TCP传输头格式
源端口 | 目的端口 | |||||||
发送顺序号 | ||||||||
接收顺序号 | ||||||||
偏置量 | 保留 | URG | ACK | PSH | RST | SYN | FIN | 窗口 |
检查和 | 紧急指针 | |||||||
任选项+补丁 | ||||||||
用户数据 |
下面对某些字段作进- - -步的解释。端口编号用于标识TCP用户,即上层协议,一些经常
使用的上层协议,例如Telnet(远程终端协议)、FTP(文件传输协议)或SMTP(简单邮件传输协议)等都有固定的端口号,这些公用端口号可以在RFC (Request For Comment)中查到,任何实现都应该按规定保留这些公用端口编号,除此之外的其他端口编号由具体实现分配。
前面提到,TCP是对字节流进行传送,因而发送顺序号和应答顺序号都是指字节流中的某
个字节的顺序号,而不是指整个段的顺序号。例如,某个段的发送顺序号为1000, 其中包含
500个数据字节,则段中第一个字节的顺序号为1000,按照逻辑顺序,下-一个段必然从第1500
个数据字节处开始,其发送顺序号应为1500。为了提高带宽的利用率,TCP采用积累应答的机
制。例如从A到B传送了4个段,每段包含20个字节数据,这4个段的发送顺序号分别为30,
50,70 和90。在第4次传送结束后,B向A发回一个ACK标志置位的段,其中的应答顺序号
为110 (即90+20),一次应答了4次发送的所有字节,表示从起始字节到109 字节都已正确
接收。
同步标志SYN用于连接建立阶段。TCP用三次握手过程建立连接,首先是发起方发送一
个SYN标志置位的段,其中的发送顺序号为某个值X,称为初始顺序号ISN ( Initial Sequence
Number),接收方以SYN和ACK标志置位的段响应,其中的应答顺序号应为X+1 (表示期望
从第X+1个字节处开始接收数据),发送顺序号为某个值Y (接收端指定的ISN)。这个段到达
发起端后,发起端以ACK标志置位,应答顺序号为Y+1的段回答,连接就正式建立了。可见,
所谓初始顺序号是收发双方对连接的标识,也与字节流的位置有关。因而对发送顺序号更准确
的解释应该是:当SYN未置位时,表示本段中第-一个数据字节的顺序号:当SYN置位时,它
是初始顺序号ISN,而段中第一一个数据字节的顺序号应为ISN+ 1,正好与接收方期望接收的数
据字节的位置对应,如上图所示。
所谓紧急数据,是指TCP用户认为很重要的数据,例如键盘中断等控制信号。当TCP段中的URG标志置位时,紧急指针表示距离发送顺序号的偏置值,在这个字节之前的数据都是紧急数据。紧急数据由上层用户使用,TCP只是尽快地把它提交给上层协议。
TCP连接的建立
窗口字段表示从应答顺序号开始的数据字节数,即接收端期望接收的字节数,发送端根据
这个数字扩大自己的窗口。窗口字段、发送顺序号和应答顺序号共同实现信贷滑动窗口协议。检查和的检查范围包括整个TCP段和伪段头(Pseudo ——header)。伪段头是IP头的一部分,如上图所示。伪段头和TCP段-起处理有-一个好处,如果IP把TCP段提交给错误的主机,TCP实体可根据伪段头中的源地址和目标地址字段检查出错误。
TCP检查和的范围
源地址 | ||
目标地址 | ||
0 | 协议 | 段长 |
传输头 | ||
用户数据 |
UDP也是常用的传输层协议,它对应用层提供无连接的传输服务,虽然这种服务是不可靠
的、不保证顺序的提交,但这并没有减少它的使用价值。相反,由于协议开销少而在很多场合
相当实用,特别是网络管理方面,大都使用UDP协议。TCP连接状态图
UDP运行在IP协议层之.上,由于它不提供连接,所以只是在IP协议之上加上端口寻址能力,这个功能表现在UDP头上,如下图所示。
UDP报头
UDP头包含源端口号和目标端口号。段长指整个UDP段的长度,包括头部和数据部分。检查和与TCP相同,但是任选的,如果不使用检查和,则这个字段置0。由于IP的检查和只作用于IP头,并不包括数据部分,所以当UDP的检查和字段为0时,实际上对用户数据不进行校验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。