当前位置:文档之家› TCP-UDP协议

TCP-UDP协议

第7章TCP/UDP协议主要内容1.TCP协议基本原理。

2.UCP协议基本原理。

sat实验。

能力要求1.理解传输层在OSI体系结构中的地位和作用。

2.了解传输层如何保证通信服务的可靠性。

3.掌握TCP/UDP协议基本原理和报文数据结构。

因为世界上各种通信子网在性能上存在着很大差异,例如电话交换网、分组交换网、公用数据交换网,局域网等通信子网等,但网络的互联互通的特性决定了它们必须互连,而它们提供的吞吐量、传输速率、数据延迟通信费用各不相同,但对于会话层来说,却要求有一性能恒定的界面,传输层就承担了这一功能。

传输层(Transport Layer)是OSI体系结构中重要、关键的一层,负责总体的数据传输和数据控制。

传输层提供端到端的交换数据的机制。

传输层对会话层等高三层提供可靠的传输服务,对网络层提供可靠的目的地站点信息。

传输层协议主要包括TCP/UDP协议。

它屏蔽了网络底层技术的差异,使会话层感受不到各种通信子网在技术标准和网络结构上的区别。

此外传输层还要具备差错恢复,流量控制等功能。

传输层面对的数据对象已不是网络地址和主机地址,而是端口。

传输层的最终目的是为会话提供可靠的、无误的数据传输。

传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。

在数据传输过程中,传输层要保证提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。

7.1 传输层功能概述传输层也称为运输层,是介于低3层通信子网系统和高3层之间的一层,是源端到目的端对数据传送进行控制从低到高的最后一层。

传输层功能的目的是为会话提供可靠、无误的数据传输服务。

传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。

为完成这一服务,传输层要具备以下基本功能:199(1)连接管理(Connection Management):定义了允许两个用户像直接连接一样开始交谈的规则。

通常把连接的定义和建立的过程称为握手(handshake)。

传输层要建立、维持和终止一个会话。

在数据传输开始时,发送方和接收方的应用都要通知各自的操作系统初始化一个连接,一个连接就建立了,数据传输也就开始了,在传输的过程中,两台主机还需要继续通过协议软件来通信以验证数据是否被正确接收。

数据传输完成后,发送端主机发送一个标识数据传输结束的指示。

接收端主机在数据传输完成后确认数据传输结束,连接终止。

(2)流量控制(Flow Control):就是以网络普遍接受的速度发送数据,从而防止网络拥塞造成数据报的丢失。

(3)差错检测(Error Detection):数据链路层的差错检测功能提供了可靠的链路传输,但无法保证源点和目的之间的传输完全无错,比如网络中的路由器收到了完整无缺的IP分组,但是在将含有分组的帧重新格式化的过程中出现了影响分组内容的错误。

这种错误可能是由于软件或硬件问题导致路由器在进行分组期间引起的,也就是说并不是由于物理链路在进行数据传输的过程中产生的差错,因此数据链路层的差错检测功能无法通过校验识别出差错。

传输层的差错检测机制会检测到这种类型的错误。

(4)对用户请求的响应(Response to User's Request):包括对发送和接收数据请求的响应,以及特定请求的响应,如用户可能要求高吞吐率、低延迟或可靠的服务。

传输层面对的数据对象不是网络地址和主机地址,而是端口。

(5)建立无连接或面向连接的通信:TCP/IP协议的TCP提供面向连接的传输层服务,UDP则提供无连接的传输层服务。

为了评价传输层提供的服务质量(QoS),我们一般用一组量化的指标来衡量,主要有:(1)连接建立延迟/连接释放延迟(2)连接建立/释放失败概率(3)传输时延(4)吞吐率(5)残留误码率(6)传输失败概率总之,我们设计传输层的目的就是提高传输服务的可靠性和保证服务质量QoS,下面我们分别就传输层的两个重要协议TCP和UDP分别介绍。

2007.2 TCP协议用户的应用程序进程最终需要得到的是端到端的通信服务,传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务。

TCP/IP协议族的传输层协议主要包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。

TCP是面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输。

7.2.1 TCP协议的特点RFC 793定义的TCP是一种面向连接的、端到端的可靠传输协议。

TCP的主要特点如下:(1)三次握手(Three-Way Handshake)建立连接:确保连接建立的可靠性。

(2)端口号:通过端口号标识上层协议和服务,实现了网络通道的多路复用。

(3)完整性检验:通过对协议和载荷数据计算校验和,保证了接收方能检测出传输过程中可能出现的差错。

(4)确认机制:对于正确接收到的数据,接收方通过显式应答通告发送方,超出一定时间之后,发送方将重传没有被确认的段,确保传输的可靠性。

(5)序列号:发送的所有数据都拥有唯一的序列号,这样不但唯一标识了每一个段,而且明确了每个段在整个数据流中的位置,接收方可以利用这些信息实现确认、丢失检测、乱序重排等功能。

(6)窗口机制:通过可调节的窗口,TCP接收方可以通告期望的发送速度,从而控制数据的流量。

由于TCP具有这些特点,一些对数据传输可靠性、次序等比较敏感的应用程序和协议使用TCP作为其传输层协议。

这些应用和协议包括FTP、Telnet、E-mail(SMTP/POP3)等。

7.2.2 TCP/UDP端口号在IP网络中,一个IP地址可以唯一地标识一个主机。

但一个主机上却可能201同时有多个进程访问网络,要标识这些进程,只用IP地址就不够了。

因此TCP/UDP采用端口号(Port Number)来标识这些上层的应用进程,从而使这些进程可以复用网络通道。

而为了区分TCP和UDP协议,IP用协议号6标识TCP,用协议号17标识UDP,如图7-1所示。

图7-1 TCP/UDP端口号在实际的端到端通信中,通信的双方实际上是两个应用进程,这两个进程都需要用各自的端口号进行识别。

所以,一个通信连接可以用双方的IP地址以及双方的端口号来标识,而每一个数据报内也必须包含源IP地址、源端口、目的IP地址和目的端口。

IP地址在IP头中标出,而端口号在TCP/UDP头中标出。

TCP/UDP的端口号是一个16位二进制数,即端口号范围可以为0~65535。

其中,端口0~1023由IANA统一管理,分配或保留给众所周知的服务使用,这些端口称为熟知端口(Well-Known Port)。

大于1023的端口号没有统一的管理,可以由应用进程任意使用。

虽然UDP端口号与TCP端口号是不相关的,但通常仍然为同一个应用保留相同的TCP和UDP端口号,以免不必要的麻烦。

一些常见协议的保留端口号如表7-1所示。

详细分配信息可参见RFC 1700。

端口号协议端口号协议20 FTP data 88 Kerberos21 FTP control 92 NPP(Network Printing Protocol)23 Telnet 118 SQL Services25 SMTP 161 SNMP53 DNS 162 SNMP Trap69 TFTP 179 BGP80 HTTP 520 RIP保留熟知端口的必要性显而易见。

例如,若HTTP服务的端口号是任意值,202则用户在访问Internet网站是就会遇到麻烦,因为浏览器不知道目的网站所使用的端口号,用户就要自己输入端口号。

但是这并不意味着众所周知的协议必须使用众所周知的端口号。

例如管理员也可以为HTTP协议分配端口8080,目的恰恰是避免任何人都能随意访问其网页。

知道一个特定的TCP/IP应用进程服务使用了哪一个端口是非常重要的。

如果把主机当成一个封闭的堡垒,那么端口号就是堡垒上的窗户的编号,可以开放主机上特定的端口来允许其他人访问,也可以关闭特定的端口来阻止非法的访问。

在windows系统中也可以查看所使用的端口号信息。

打开windows的命令窗口,输入netstat命令,可以看到本地主机和目标主机使用的端口号,详见本章后面的实验。

7.2.3 TCP封装如图7-2所示,TCP收到应用层提交的数据后,将其分段,并在每个分段前封装一个TCP头。

最终的IP包是在TCP头之前再添加IP头形成的。

图7-2 TCP封装图7-3所示为TCP头的格式。

TCP头由一个20B的固定长度部分加上变长的选项字段组成。

TCP头的各字段含义如下。

(1)源端口(Source Port):16位的源端口字段包含初始化通信的端口号。

源端口和源IP地址的作用是识别报文的返回地址。

(2)目的端口(Destination Port):16位的目的端口字段定义传输的目的地址。

这个端口指明接收方计算机上的应用进程接口。

(3)顺序号(Sequence Number):该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一数据字节在整个字节流中的序号。

如果将字节流看做在两个应用进程间的单向流动,则TCP用序列号对每个字节进行计数,序列号是一个32位的数。

203图7-3 TCP头格式(4)确认号(Acknowledgement Number):TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节在整个字节流中的序号,并声明此前的所有数据都已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。

收到确认号的源计算机会知道特定的段已经被收到。

确认号的字段只在ACK标志被设置时才有效。

(5)数据偏移(Data Offset):这个4位字段包括TCP头大小,以32位数据结构(字)为单位。

(6)保留(Reserved,阴影部分):6位置0的字段。

为将来定义新的用途保留。

(7)控制位(Control bits):共6位,每1位标志可以打开一个控制功能,这6个标志从左至右是URG(Urgent pointer field significant,紧急指针字段标志)、ACK(Acknowledgment field significant,确认字段标志)、PSH(Push function,推功能)、RST(Reset the connection,重置连接)、SYN(Synchronize sequence numbers,同步序列号)、FIN(Final,No more data from sender,数据传送完毕)。

相关主题