数据通信笫二十一讲 tcp协议和udp协议

上传人:子 文档编号:54399628 上传时间:2018-09-12 格式:PPT 页数:36 大小:215KB
返回 下载 相关 举报
数据通信笫二十一讲 tcp协议和udp协议_第1页
第1页 / 共36页
数据通信笫二十一讲 tcp协议和udp协议_第2页
第2页 / 共36页
数据通信笫二十一讲 tcp协议和udp协议_第3页
第3页 / 共36页
数据通信笫二十一讲 tcp协议和udp协议_第4页
第4页 / 共36页
数据通信笫二十一讲 tcp协议和udp协议_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《数据通信笫二十一讲 tcp协议和udp协议》由会员分享,可在线阅读,更多相关《数据通信笫二十一讲 tcp协议和udp协议(36页珍藏版)》请在金锄头文库上搜索。

1、1,数据通信与计算机网络(第二版) 电子教案,笫二十一讲 TCP协议和UDP协议,2,本讲内容,第八章 运输层8.3 TCP协议8.3.1 TCP服务8.3.2 TCP协议8.3.3 TCP连接管理8.3.4 TCP流量控制8.3.5 TCP拥塞控制8.3.6 TCP计时器8.3.7 UDP协议,3,8.3 TCP协议,IP层提供的是无连接的、“尽力而为”的、不可靠的网络服务(C类网络)。 TCP/IP体系结构中,运输层就是利用IP提供的不可靠的服务来提供端到端的运输服务。主要包括: 面向连接的、可靠的TCP协议 无连接的UDP协议,4,8.3.1 TCP服务,传输控制协议(Transmiss

2、ion Control Protocol,TCP)的主要作用是在不可靠的网络服务上为应用层提供面向连接的、端到端的可靠字节流服务。 RFC 793:基本TCP定义 RFC 1122:修改和改进 RFC 1323:扩展定义 RFC 2018、RFC 2581:最新改进,5,8.3.1 TCP服务,TCP是一种面向连接的运输协议,在进行数据传输时首先必须建立一条运输连接,数据传输完成之后把连接释放掉。 TCP连接标识 套接字(Socket):主机的IP地址和一个16比特的端口号(Port)。 TCP端口号 一条TCP连接是由发送方套接字和接收方套接字来唯一标识的,即TCP连接用四元组来唯一标识。,

3、6,8.3.1 TCP服务,TCP最初是在Unix环境下实现的,它通过Socket调用来提供服务。,7,8.3.1 TCP服务,TCP服务的特征 TCP数据传输服务是全双工的; TCP连接是点对点的; TCP连接是面向字节流的; TCP实体支持数据缓冲和立即发送; TCP提供紧急数据功能。,8,8.3.2 TCP协议,TCP PDU称为TCP数据段(Segment) 一个TCP数据段由一个20字节的头部、一个可选部分、和一个用户数据部分组成。 整个TCP段的长度限制 IP包64K-1(65535)字节长度限制; 网络MTU(Maximum Transfer Unit,最大传送单位)限制; TC

4、P协议中用户数据大小受MSS(Maximum Segment Size,最大分段大小)限制。,9,8.3.2 TCP协议,TCP协议是通过段格式来表达的。,10,8.3.2 TCP协议,TCP段的固定头部长度为20个字节,同时支持最多40个字节的TCP选项。 源端口号(Source Port,16比特)和目的端口号(Destination Port,16比特):分别表示发送方和接收方的端口号。 顺序号(Sequence Number,32比特):该TCP段中携带的用户数据中第一个字节的编号,编号是以数据字节为单位的。 确认号(Acknowledgment Number,32比特):对顺序号之前

5、的数据已可靠收到的确认,即下一个期望接收的字节的顺序号。,11,8.3.2 TCP协议,数据偏移(Data Offset,4比特):指示TCP数据开始的位置,也即TCP头部长度,以32比特为单位。 保留(Reserved,6比特) 控制标志(Control Bits,6比特) URG:紧急数据标志 ACK:确认字段有效标志 PSH:要求马上发送数据 RST:对TCP连接进行复位 SYN:建立TCP连接 FIN: 连接释放,12,8.3.2 TCP协议,窗口大小(Window Size,16比特):指示接收方滑动窗口的大小,用于实现TCP流量控制和差错恢复。 校验和(Checksum,16比特)

6、:实现对TCP头部的校验。在计算检验和时包括TCP头部、用户数据以及一个TCP伪头部。 伪头部格式:检验和的计算:所有16位字以补码形式相加,然后对和取反。,13,8.3.2 TCP协议,紧急指针(Urgent Pointer,16比特):当URG位有效时,紧急指针指示紧急数据的位置。 选项(Options,变长:040字节):提供了相应的扩展机制,用于实现除TCP基本头部指定功能外的扩展功能。 选项以8位的字节为单位,有2种组成情况: 单字节(类型) 多字节(类型长度N个选项) 如: 类型0 类型1 类型2,14,8.3.2 TCP协议,填充(Padding,变长):总是以0作填充,可确保T

7、CP头部以32比特边界结束。 数据(Data,变长):数据部分用于传送TCP用户数据。 由于IP分组长度的限制(最大64K),因此TCP最大有效数据载荷长度是65535-20-20=65495。,15,8.3.3 TCP连接管理,建立连接 TCP连接建立是一个不对称的过程 一方处于被动方式(listen),一方为主动方式(connect)。即主动方式的客户方要求和被动方式打开的服务方建立运输连接(通过一系列的消息交换 )。 建立连接就互相确认了对方的初始顺序号(ISN) ISN不是采用固定的取值,以减少前后两条连接干扰的可能性。,16,8.3.3 TCP连接管理,TCP使用三次握手方法建立连接

8、,17,8.3.3 TCP连接管理,使用三次握手,即使两台主机同时想在相同的套接字之间建立一条TCP连接而发生冲突,也可以正常工作。,18,释放连接 TCP的正常的连接释放也采用了三次握手过程。 把TCP连接看成由两个方向的单工连接组成:释放时,两个方向的连接都要关闭。 两方发送一个FIN标志置为1的TCP段,表示没有数据要发送,当FIN被确认后,那个方向的连接就被关闭。 只有当两个方向的连接均关闭后,该TCP连接才被完全释放。 把一个FIN和ACK合并,就是三次握手过程。,8.3.3 TCP连接管理,19,8.3.3 TCP连接管理,这样,实际上就有多种释放连接的顺序:都能正常工作!最后的A

9、CK可能丢失带来的问题 使用超时计时器,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,FIN,ACK,ACK,20,TCP连接管理状态图,8.3.3 TCP连接管理,21,8.3.3 TCP连接管理,TCP连接状态,22,8.3.4 TCP流量控制,为了防止发送方的数据发送得过快,以致接收方来不及处理的情况。TCP采取一种可变大小的滑动窗口机制来进行流量控制。 接收方维护一个可变的接收窗口,这是接收方向发送方指出的目前剩余接收缓冲区的大小(数据段中的窗口大小字段)。,23,8.3.4 TCP流量控制,接收缓冲区是环形、循环使用的。 接收

10、窗口大小满足:其中LastByteRead和LastByteRcvd是接收方定义的两个指针,满足:发送方定义变量LastByteSent和LastByteAcked用于发送控制,满足:LastByteSent-LastByteAcked即发送方发送的但是没有得到确认的数据的大小。 探测(probe)消息,24,8.3.4 TCP流量控制,例,25,8.3.5 TCP拥塞控制,TCP通过拥塞控制来防止网络过载。 TCP拥塞控制采用慢启动(slow-start)和拥塞避免(congestion avoidance)的策略。 TCP连接维护两个变量: 拥塞窗口CongWindow反映了网络的容量,限

11、制发送方向网络注入数据的速度,这样发送方发送的尚未得到确认的数据大小必须小于接收窗口和拥塞窗口,即:慢启动阈值ssthresh当拥塞窗口小于该阈值时进入慢启动阶段,而大于时进入拥塞避免阶段。,26,8.3.5 TCP拥塞控制,慢启动 TCP慢慢探测以决定网络的容量。 初始时 CongWindow设置为一个MSS(最大分段大小); 慢启动阈值ssthresh设置为一个较高的值(比如接收窗口的大小)。 每收到一个确认ACK时,就把拥塞窗口大小加1个MSS大小:CongWindow+=MSS。 这样实际的结果是:拥塞窗口的增加是成指数增加的。 当拥塞窗口超过慢启动阈值ssthresh时,就进入拥塞避

12、免阶段。,27,8.3.5 TCP拥塞控制,拥塞避免 不是每收到一个ACK,就把拥塞窗口增加一个MSS,而是每个往返传输时间(Round-Trip Time,RTT)才把拥塞窗口增加一个MSS。 RTT是动态变化的,在TCP的实现中通常采用一种变通的方法,每收到一个不重复的ACK时,拥塞窗口按照如下公式增加:这样拥塞窗口缓慢、线性地增加,直到出现拥塞。,28,8.3.5 TCP拥塞控制,出现拥塞 发送方TCP段超时,需要重传。 这时,慢启动阈值ssthresh缩减为拥塞窗口的一半,并且拥塞窗口恢复到原来的初始窗口大小,并且进入慢启动过程,重新探测目前网络的状况。空闲后的拥塞窗口 TCP连接空闲

13、较长一段时间后,在重新开始传输数据时进入如同拥塞后的慢启动过程。,29,8.3.5 TCP拥塞控制,TCP的拥塞窗口机制中的各个阶段的示意图,30,8.3.6 TCP计时器,重传计时器(Retransmission Timer) 一般情况下,一个TCP段发送后启动这个计时器,如果在计时器超时前收到这个TCP段的确认,则停止该计时器,否则,重新发送该TCP段。 超时应该多久呢? 太长:低效(延时长,带宽利用率低) 太短:造成不必要的重传(占用额外的带宽) TCP采用的是一种自适应的重传计时策略。,31,8.3.6 TCP计时器,TCP重传计时器基于RTT 对于每一条TCP连接,TCP维护一个变量

14、EstimatedRTT,用于存放所估计的到目的端的往返传输时间。 每次发送一个TCP段时记录下这个时刻,当对TCP段的确认回来后就可以计算该段的往返传输时间SampleRTT,然后修正EstimatedRTT:其中为修正因子,决定了以前估计的RTT的权重,一般取值为7/8。,32,8.3.6 TCP计时器,一个问题:如果TCP段超时并重传时怎么办? Karn方法 Jacobson进一步改进,以适应RTT经常发生变化的情况。 使用平均偏差Deviation:其中为x修正因子。 最后的超时间隔考虑到估计的往返传输时间和偏差的影响:,33,8.3.6 TCP计时器,保持计时器(Persistenc

15、e Timer) 如果发送窗口大小为0的ACK后,该TCP接收进程发现可以继续接收对方的数据,这时需要发送窗口大小为一定值的ACK,但是这个ACK由于某种原因而被丢失,如果没有相应的措施,那么就会发生死锁。 解决的办法就是采用保持计时器,当这个计时器超时后还未收到对方的数据,则可以认为这个ACK被丢失,并且重新发送该ACK段。 其它计时器,34,8.3.7 UDP协议,用户数据报(User Datagram Protocol,UDP)协议,是一种无连接方式的、不可靠的运输协议。 不需要连接建立和释放; 不支持流量控制、拥塞控制; 传输过程中可能会丢失,可能会失序,可能会延迟等; 支持广播和组播

16、。 UDP实际上是在IP层上附加了简单的多路复用功能,提供端到端的数据传输服务。,35,8.3.7 UDP协议,UDP协议段格式源端口和目的端口:同TCP。 长度:包括了固定长度的UDP头部和携带的用户数据。 检验和:计算同TCP。,36,练习题,8.15为什么TCP协议的序号是对每一个TCP数据字节都要进行编号? 8.22假设一个应用程序要通过一个TCP连接发送一L字节的消息。TCP段包括了20字节的头部,IP头部字段为20字节。IP分组然后封装到以太网帧中,头部长度为18字节。请问在物理层传输的效率是多少?考虑L10字节和1000字节两种情况。 8.27假设你需要设计一个类似于TCP的滑动窗口协议,该协议将运行在一个100Mbps网络上,网络的往返时间为100ms,最大段生命期为60s。请问协议头部的窗口和顺序号字段应该有多少位?为什么? 8.31考虑一条TCP连接的慢启动阶段,往返传输时间为10ms,最大分段大小为2KB,假设网络不会出现拥塞,接收窗口为48KB,请问从建立连接开始到可以发送第一个完整的接收窗口的数据要多长时间?,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号