TCP协议讲解PPT.ppt

上传人:wj 文档编号:8331410 上传时间:2023-05-13 格式:PPT 页数:112 大小:1.48MB
下载 相关 举报
TCP协议讲解PPT.ppt_第1页
第1页 / 共112页
TCP协议讲解PPT.ppt_第2页
第2页 / 共112页
TCP协议讲解PPT.ppt_第3页
第3页 / 共112页
TCP协议讲解PPT.ppt_第4页
第4页 / 共112页
TCP协议讲解PPT.ppt_第5页
第5页 / 共112页
TCP协议讲解PPT.ppt_第6页
第6页 / 共112页
TCP协议讲解PPT.ppt_第7页
第7页 / 共112页
TCP协议讲解PPT.ppt_第8页
第8页 / 共112页
TCP协议讲解PPT.ppt_第9页
第9页 / 共112页
TCP协议讲解PPT.ppt_第10页
第10页 / 共112页
TCP协议讲解PPT.ppt_第11页
第11页 / 共112页
TCP协议讲解PPT.ppt_第12页
第12页 / 共112页
TCP协议讲解PPT.ppt_第13页
第13页 / 共112页
TCP协议讲解PPT.ppt_第14页
第14页 / 共112页
TCP协议讲解PPT.ppt_第15页
第15页 / 共112页
TCP协议讲解PPT.ppt_第16页
第16页 / 共112页
TCP协议讲解PPT.ppt_第17页
第17页 / 共112页
TCP协议讲解PPT.ppt_第18页
第18页 / 共112页
TCP协议讲解PPT.ppt_第19页
第19页 / 共112页
TCP协议讲解PPT.ppt_第20页
第20页 / 共112页
亲,该文档总共112页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

TCP协议讲解PPT.ppt

《TCP协议讲解PPT.ppt》由会员分享,可在线阅读,更多相关《TCP协议讲解PPT.ppt(112页珍藏版)》请在冰点文库上搜索。

TCP协议讲解PPT.ppt

TCP协议讲解,小组成员:

胡敏老师米永成向峰,1、TCP是什么?

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。

2、TCP产生的时代背景,“网络控制协议”(NCPNetworkControlProtocol),1983年1月1日,在ARPA网中,TCP/IP取代了旧的网络控制协议(NCP,NetworkControlProtocol),从而成为今天的互联网的基石。

课件制作人:

谢希仁,3、TCP协议在OSI中的位置,TCP,UDP,IP,应用层,与各种网络接口,运输层,4、运输层为相互通信的应用进程提供了逻辑通信,54321,运输层提供应用进程间的逻辑通信,主机A,主机B,应用进程,应用进程,路由器1,路由器2,AP1,LAN2,WAN,AP2,AP3,AP4,IP层,LAN1,AP1,AP2,AP4,端口,端口,54321,IP协议的作用范围,运输层协议TCP和UDP的作用范围,AP3,课件制作人:

谢希仁,5、运输层协议和网络层协议的主要区别,应用进程,应用进程,IP协议的作用范围(提供主机之间的逻辑通信),TCP和UDP协议的作用范围(提供进程之间的逻辑通信),因特网,课件制作人:

谢希仁,传输实体,传输实体,传输协议,传输层,层接口,传输服务用户(应用层实体),传输服务用户(应用层实体),层接口,网络层(或网际层),应用层,主机A,主机B,传输层服务访问点TSAP,网络层服务访问点NSAP,6、端口,课件制作人:

谢希仁,三类端口,熟知端口,数值一般为01023。

登记端口号,数值为102449151,为没有熟知端口号的应用程序使用的。

使用这个范围的端口号必须在IANA登记,以防止重复。

客户端口号或短暂端口号,数值为4915265535,留给客户进程选择暂时使用。

当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。

通信结束后,这个端口号可供其他客户进程以后使用。

课件制作人:

谢希仁,TCP/IP体系中的运输层协议,TCP,UDP,IP,应用层,与各种网络接口,运输层,7、TCP与UDP的区别,课件制作人:

谢希仁,8、TCP的最主要特点之一:

面向流,发送TCP报文段,发送方,接收方,把字节写入发送缓存,从接收缓存读取字节,应用进程,应用进程,18,17,16,15,14,H,加上TCP首部构成TCP报文段,TCP,TCP,字节流,字节流,H,表示TCP报文段的首部,x,表示序号为x的数据字节,TCP连接,9、TCP的应用,课件制作人:

谢希仁,10、套接字(socket),套接字socket=(IP地址:

端口号)(5-1)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

即:

TCP连接:

=socket1,socket2=(IP1:

port1),(IP2:

port2)(5-2),TCP首部,20字节的固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,32位,SYN,RST,PSH,ACK,URG,位08162431,填充,TCP数据部分,TCP首部,TCP报文段,IP数据部分,IP首部,发送在前,11、TCP报文段的首部格式,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,源端口和目的端口字段各占2字节。

端口是运输层与应用层的服务接口。

运输层的复用和分用功能都要通过端口才能实现。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,序号字段占4字节。

TCP连接中传送的数据流中的每一个字节都编上一个序号。

序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认号字段占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,数据偏移(即首部长度)占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。

“数据偏移”的单位是32位字(以4字节为计算单位)。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,保留字段占6位,保留为今后使用,但目前应置为0。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急URG当URG1时,表明紧急指针字段有效。

它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认ACK只有当ACK1时确认号字段才有效。

当ACK0时,确认号无效。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,推送PSH(PuSH)接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,复位RST(ReSeT)当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,同步SYN同步SYN=1表示这是一个连接请求或连接接受报文。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,终止FIN(FINis)用来释放一个连接。

FIN1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,窗口字段占2字节,用来让对方设置发送窗口的依据,单位为字节。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,检验和占2字节。

检验和字段检验的范围包括首部和数据这两部分。

在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急指针字段占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,比特08162431,填充,选项字段长度可变。

TCP最初只规定了一种选项,即最大报文段长度MSS。

MSS告诉对方TCP:

“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。

”,MSS(MaximumSegmentSize)是TCP报文段中的数据字段的最大长度。

数据字段加上TCP首部才等于整个的TCP报文段。

课件制作人:

谢希仁,其他选项,窗口扩大选项占3字节,其中有一个字节表示移位值S。

新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。

时间戳选项占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)。

选择确认选项在后面的5.6.3节介绍。

TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,填充字段这是为了使整个首部长度是4字节的整数倍。

12、可靠传输的工作原理12、1停止等待协议,(a)无差错情况,A,发送M1,确认M1,B,发送M2,发送M3,确认M2,确认M3,A,发送M1,B,超时重传M1,发送M2,确认M1,丢弃有差错的报文,(b)超时重传,t,t,t,t,课件制作人:

谢希仁,丢弃重复的M1重传确认M1,确认丢失和确认迟到,A,发送M1,B,超时重传M1,发送M2,丢弃重复的M1重传确认M1,(a)确认丢失,确认M1,A,发送M1,B,超时重传M1,发送M2,(b)确认迟到,确认M1,收下迟到的确认但什么也不做,t,t,t,t,课件制作人:

谢希仁,可靠通信的实现,使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。

这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeatreQuest)。

ARQ表明重传的请求是自动进行的。

接收方不需要请求发送方重传某个出错的分组。

课件制作人:

谢希仁,信道利用率,停止等待协议的优点是简单,但缺点是信道利用率太低。

TD,RTT,A,TD+RTT+TA,B,分组,确认,t,t,分组,确认,课件制作人:

谢希仁,信道的利用率U,(5-3),课件制作人:

谢希仁,流水线传输,发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。

由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

B,分组,t,t,A,ACK,课件制作人:

谢希仁,12、2连续ARQ协议,1,2,3,4,5,6,7,8,9,10,11,12,(a)发送方维持发送窗口(发送窗口是5),发送窗口,课件制作人:

谢希仁,累积确认,接收方一般采用累积确认的方式。

即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:

到这个分组为止的所有分组都已正确收到了。

累积确认有的优点是:

容易实现,即使确认丢失也不必重传。

缺点是:

不能向发送方反映出接收方已经正确收到的所有分组的信息。

课件制作人:

谢希仁,Go-back-N(回退N),如果发送方发送了前5个分组,而中间的第3个分组丢失了。

这时接收方只能对前两个分组发出确认。

发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。

这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。

可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。

课件制作人:

谢希仁,TCP可靠通信的具体实现,TCP连接的每一端都必须设有两个窗口一个发送窗口和一个接收窗口。

TCP的可靠传输机制用字节的序号进行控制。

TCP所有的确认都是基于序号而不是基于报文段。

TCP两端的四个窗口经常处于动态变化之中。

TCP连接的往返时间RTT也不是固定不变的。

需要使用特定的算法估算较为合理的重传时间。

课件制作人:

谢希仁,13TCP可靠传输的实现13、1以字节为单位的滑动窗口,前移,不允许发送,已发送并收到确认,A的发送窗口=20,允许发送的序号,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,B期望收到的序号,前沿,后沿,前移,收缩,根据B给出的窗口值A构造出自己的发送窗口,TCP标准强烈不赞成发送窗口前沿向后收缩,不允许发送,已发送并收到确认,A的发送窗口位置不变,允许发送但尚未发送,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送但未收到确认,56,P1,P2,P3,不允许接收,已发送确认并交付主机,B的接收窗口,允许接收,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,未按序收到,可用窗口,A发送了11个字节的数据,P3P1=A的发送窗口(又称为通知窗口)P2P1=已发送但尚未收到确认的字节数P3P2=允许发送但尚未发送的字节数(又称为可用窗口),允许发送但尚未发送,A的发送窗口向前滑动,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送并收到确认,不允许发送,已发送但未收到确认,56,P1,P2,P3,允许接收,B的接收窗口向前滑动,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送确认并交付主机,不允许接收,56,未按序收到,A收到新的确认号,发送窗口向前滑动,先存下,等待缺少的数据的到达,不允许发送,已发送并收到确认,A的发送窗口已满,有效窗口为零,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送但未收到确认,56,P1,P2,P3,A的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。

课件制作人:

谢希仁,发送缓存,最后被确认的字节,发送应用程序,发送缓存,最后发送的字节,发送窗口,已发送,TCP,序号增大,课件制作人:

谢希仁,接收缓存,接收应用程序,已收到,接收窗口,TCP,接收缓存,下一个读取的字节,序号增大,下一个期望收到的字节(确认号),课件制作人:

谢希仁,发送缓存与接收缓存的作用,发送缓存用来暂时存放:

发送应用程序传送给发送方TCP准备发送的数据;TCP已发送出但尚未收到确认的数据。

接收缓存用来暂时存放:

按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。

课件制作人:

谢希仁,需要强调三点,A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)。

TCP标准没有规定对不按序到达的数据应如何处理。

通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。

TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。

课件制作人:

谢希仁,13、2超时重传时间的选择,重传机制是TCP中最重要和最复杂的问题之一。

TCP每发送一个报文段,就对这个报文段设置一次计时器。

只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。

课件制作人:

谢希仁,往返时延的方差很大,由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大。

因而运输层的往返时间的方差也很大。

时间,数据链路层,T1,T2,T3,往返时间的概率分布,课件制作人:

谢希仁,加权平均往返时间,TCP保留了RTT的一个加权平均往返时间RTTS(这又称为平滑的往返时间)。

第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。

以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:

新的RTTS

(1)(旧的RTTS)(新的RTT样本)(5-4)式中,01。

若很接近于零,表示RTT值更新较慢。

若选择接近于1,则表示RTT值更新较快。

RFC2988推荐的值为1/8,即0.125。

课件制作人:

谢希仁,超时重传时间RTO(RetransmissionTime-Out),RTO应略大于上面得出的加权平均往返时间RTTS。

RFC2988建议使用下式计算RTO:

RTORTTS+4RTTD(5-5)RTTD是RTT的偏差的加权平均值。

RFC2988建议这样计算RTTD。

第一次测量时,RTTD值取为测量到的RTT样本值的一半。

在以后的测量中,则使用下式计算加权平均的RTTD:

新的RTTD=

(1)(旧的RTTD)+RTTS新的RTT样本(5-6)是个小于1的系数,其推荐值是1/4,即0.25。

课件制作人:

谢希仁,往返时间RTT?

往返时间的测量相当复杂,TCP报文段1没有收到确认。

重传(即报文段2)后,收到了确认报文段ACK。

如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?

发送一个TCP报文段,超时重传TCP报文段,收到ACK,时间,1,2,往返时间RTT?

是对哪一个报文段的确认?

课件制作人:

谢希仁,Karn算法,在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本。

这样得出的加权平均平均往返时间RTTS和超时重传时间RTO就较准确。

课件制作人:

谢希仁,报文段每重传一次,就把RTO增大一些:

新的RTO(旧的RTO)系数的典型值是2。

当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。

实践证明,这种策略较为合理。

修正的Karn算法,课件制作人:

谢希仁,13、3选择确认SACK(SelectiveACK),接收方收到了和前面的字节流不连续的两个字节块。

如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。

课件制作人:

谢希仁,110001501300035014500,确认号=1001,L1=1501,L2=3501,R1=3001,R1=4501,接收到的字节流序号不连续,连续的字节流,第一个字节块,第二个字节块,和前后字节不连续的每一个字节块都有两个边界:

左边界和右边界。

图中用四个指针标记这些边界。

第一个字节块的左边界L1=1501,但右边界R1=3001。

左边界指出字节块的第一个字节的序号,但右边界减1才是字节块中的最后一个序号。

第二个字节块的左边界L2=3501,而右边界R2=4501。

课件制作人:

谢希仁,RFC2018的规定,如果要使用选择确认,那么在建立TCP连接时,就要在TCP首部的选项中加上“允许SACK”的选项,而双方必须都事先商定好。

如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。

只是以后在TCP报文段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。

由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节,因此在选项中最多只能指明4个字节块的边界信息。

课件制作人:

谢希仁,5.7TCP的流量控制5.7.1利用滑动窗口实现流量控制,一般说来,我们总是希望数据传输得更快一些。

但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。

流量控制(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。

seq=1,DATA,seq=201,DATA,seq=401,DATA,seq=301,DATA,seq=101,DATA,seq=201,DATA,seq=501,DATA,ACK=1,ack=201,rwnd=300,ACK=1,ack=601,rwnd=0,ACK=1,ack=501,rwnd=100,A,B,允许A发送序号201至500共300字节,A发送了序号101至200,还能发送200字节,A发送了序号301至400,还能再发送100字节新数据,A发送了序号1至100,还能发送300字节,A发送了序号401至500,不能再发送新数据了,A超时重传旧的数据,但不能发送新的数据,允许A发送序号501至600共100字节,A发送了序号501至600,不能再发送了,不允许A再发送(到序号600为止的数据都收到了),丢失!

流量控制举例,A向B发送数据。

在连接建立时,B告诉A:

“我的接收窗口rwnd=400(字节)”。

课件制作人:

谢希仁,持续计时器(persistencetimer)。

TCP为每一个连接设有一个持续计时器。

只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

若窗口不是零,则死锁的僵局就可以打破了。

课件制作人:

谢希仁,5.7.2必须考虑传输效率,可以用不同的机制来控制TCP报文段的发送时机:

第一种机制是TCP维持一个变量,它等于最大报文段长度MSS。

只要缓存中存放的数据达到MSS字节时,就组装成

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2