教学课件第8章传输层

上传人:痛*** 文档编号:228475150 上传时间:2023-08-21 格式:PPT 页数:65 大小:1.49MB
返回 下载 相关 举报
教学课件第8章传输层_第1页
第1页 / 共65页
教学课件第8章传输层_第2页
第2页 / 共65页
教学课件第8章传输层_第3页
第3页 / 共65页
点击查看更多>>
资源描述
第第8章章 传输层传输层n8.18.1传输层服务传输层服务n8.28.2端口端口寻址寻址n8.38.3建立连接建立连接n8.4Internet8.4Internet中的传输层协议中的传输层协议n用户数据报协议用户数据报协议UDPUDPn传输控制协议传输控制协议TCPTCPn8.58.5Berkeley Socket 18.1传输层服务传输层服务n传输层是整个协议传输层是整个协议层次结构的核心,层次结构的核心,它为高层屏蔽任何它为高层屏蔽任何与网络有关的操作,与网络有关的操作,传输层是端到端协传输层是端到端协议,与使用的网络议,与使用的网络无关无关applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical end-end transport2为应用进程提供了逻辑通信信道为应用进程提供了逻辑通信信道54321传输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP4端口端口54321IP 协议的作用范围传输层协议 TCP 和 UDP 的作用范围AP33向上层提供的服务向上层提供的服务传输层服务有两类:面向连接的传输服务无连接的传输服务TSAPNSAP48.2端口寻址端口寻址n由于传输层为上层提供复用机制,因此,当一个传输由于传输层为上层提供复用机制,因此,当一个传输层进程希望与另一个进程建立连接时,必须指定对方层进程希望与另一个进程建立连接时,必须指定对方传输层所对应的传输层所对应的TSAP地址地址Host2的时间服务进程运行在的时间服务进程运行在122号号TSAP上,等待服务请求。上,等待服务请求。Host1应用进程发出连接请求,应用进程发出连接请求,并指明源并指明源TSAP=6,目的目的TSAP=122。网络层实体向网络层实体向Host2建立连接建立连接(对于非连接网络,仅向(对于非连接网络,仅向Host2发送分组)发送分组)问题:如何知道对方的问题:如何知道对方的TSAP?5TSAP的获取方法的获取方法1.服务进程固定在特定的服务进程固定在特定的TSAP上。上。1.只适用于少数关键的服务只适用于少数关键的服务2.每个系统都有一个进程服务器,它连接在众每个系统都有一个进程服务器,它连接在众所周知的一组所周知的一组TSAP上,用户为了与目标服务上,用户为了与目标服务进程通信,首先必须与进程服务器通信,通进程通信,首先必须与进程服务器通信,通过它启动目标服务进程过它启动目标服务进程。3.采用名字服务器,当新的服务被创建时,必采用名字服务器,当新的服务被创建时,必须向名字服务器注册,给出服务名和须向名字服务器注册,给出服务名和TSAP。用户在需要相应的服务前先查找名字服务器。用户在需要相应的服务前先查找名字服务器。6主机进程标识主机进程标识n网络服务访问点(网络服务访问点(NSAP)和传输服务访问点)和传输服务访问点(TSAP)即)即NSAP,TSAP标识了一个主机标识了一个主机上的进程,需要注意的是上的进程,需要注意的是NSAP是是ISO定义的定义的概念,一般用于面向连接的网络,例如概念,一般用于面向连接的网络,例如ATM、X.25、Frame Relay等。等。n在在TCP/IP中,中,NSAP与与IP地址对应,地址对应,TSAP对对应着端口号(应着端口号(port),再加上所采用的协议),再加上所采用的协议(TCP/UDP),即),即IP地址,端口号,协议地址,端口号,协议类型类型唯一标识一个主机上传输服务的用户进唯一标识一个主机上传输服务的用户进程,而程,而源源/目的目的IP地址,源地址,源/目的端口号,协目的端口号,协议类型议类型五元组标识一个传输连接的数据流。五元组标识一个传输连接的数据流。78.3建立连接建立连接n一般来说,一个连接从连接请求的发出到接一般来说,一个连接从连接请求的发出到接收到连接证实消息就可以建立一个连接,但收到连接证实消息就可以建立一个连接,但当网络丢失、存储,再重传重复分组时,一当网络丢失、存储,再重传重复分组时,一个连接也会被建立多次个连接也会被建立多次n三步握手三步握手n主机主机1选择一个序号选择一个序号x,并向主机并向主机2发送包含该序发送包含该序号的连接请求号的连接请求TPDUn主机主机2应答接受连接应答接受连接TPDU,TPDU中包含确认号中包含确认号x和序列号和序列号yn主机主机1在其发送的第一个数据中采用序列号为在其发送的第一个数据中采用序列号为x,并确认主机并确认主机2的序列号的序列号y8三步握手三步握手CR-连接请求;连接请求;ACK-接受连接接受连接图图a为正常操作时连接的建立;为正常操作时连接的建立;图图b为重复的为重复的CR突然出现;突然出现;图图c为重复的为重复的CR和重复的和重复的ACK9释放连接释放连接n非对称释放非对称释放n连接的任何一方都可以断开整个连接连接的任何一方都可以断开整个连接n对称释放对称释放n把连接看作是由两个独立的单向连接,并要把连接看作是由两个独立的单向连接,并要求单独释放每一个单向连接求单独释放每一个单向连接10非对称释放非对称释放当连接建立以后,主机当连接建立以后,主机1发送一个发送一个TPDU,它正确,它正确地到达了主机地到达了主机2,然后,然后,主机主机1又发送一个又发送一个TPDU,但是由于主机,但是由于主机2在第二在第二个个TPDU到达之前就已经到达之前就已经发送了发送了DISCONNECT TPDU,因此,该连接虽,因此,该连接虽然被释放,但是数据却然被释放,但是数据却丢失了。丢失了。CR-连接请求连接请求ACK-接受连接接受连接DR-连接断开请求连接断开请求11对称释放对称释放释放连接再次用到三步释放连接再次用到三步握手,一方发出释放连握手,一方发出释放连接请求后不立即拆除连接请求后不立即拆除连接,而要等待对方确认;接,而要等待对方确认;对方收到请求后,发送对方收到请求后,发送确认报文,并拆除连接,确认报文,并拆除连接,发起方收到确认后最后发起方收到确认后最后拆除连接。拆除连接。DR-连接断开请求连接断开请求ACK-接受断开接受断开12对称释放中的分组丢失对称释放中的分组丢失(a)final ACK lost(a)Response lost(a)Response lost and subsequent DRs lostDR-连接断开请求连接断开请求ACK-接受断开接受断开138.4 流量控制和拥塞控制流量控制和拥塞控制n面向连接的传输服务应该提供流量控制面向连接的传输服务应该提供流量控制和拥塞控制功能,核心是滑动窗口算法和拥塞控制功能,核心是滑动窗口算法n流量控制:根据接收方的缓存容量来动态地流量控制:根据接收方的缓存容量来动态地调整发送方的窗口大小,避免一个快速的发调整发送方的窗口大小,避免一个快速的发送方淹没一个慢速的接收方。送方淹没一个慢速的接收方。n拥塞控制:根据网络的承载容量来动态地调拥塞控制:根据网络的承载容量来动态地调整发送方的窗口大小,避免发送方同一时刻整发送方的窗口大小,避免发送方同一时刻有太多未被确认接收的有太多未被确认接收的TPDU148.4 Internet中的传输层协议中的传输层协议nInternet中定义了两个不同的传输层协议中定义了两个不同的传输层协议n用户数据报协议(用户数据报协议(UDP:User Datagram Protocol)n传输控制协议(传输控制协议(TCP:Transmission Control Protocol)n两个对等传输实体在通信时传送的数据单位称两个对等传输实体在通信时传送的数据单位称为传输协议数据单元(为传输协议数据单元(TPDU:Transport Protocol Data Unit)n在在UDP中,中,TPDU称为数据报称为数据报(datagram)TCP中,中,TPDU称为称为TCP数据段数据段(segment)15UDP与与TCPnUDP提供无连接的服务,在传送数据之前不需提供无连接的服务,在传送数据之前不需要先建立连接。对方的传输层在收到要先建立连接。对方的传输层在收到 UDP数数据报后,不需要给出任何确认。虽然据报后,不需要给出任何确认。虽然 UDP 不不提供可靠投递,但在某些情况下提供可靠投递,但在某些情况下 UDP 是一种是一种最简单有效的工作方式。例如视频点播等实时最简单有效的工作方式。例如视频点播等实时应用常使用应用常使用UDPnTCP 提供面向连接的服务。由于提供面向连接的服务。由于 TCP 要提供要提供可靠的、面向连接的传输服务,因此不可避免可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元地增加了许多的开销。这不仅使协议数据单元的头标增加了更多的域,还要占用许多的处理的头标增加了更多的域,还要占用许多的处理机资源。机资源。16端口端口n端口就是传输服务访问点(端口就是传输服务访问点(TSAP)。)。n端口的作用就是让各种应用进程都能将端口的作用就是让各种应用进程都能将其数据通过端口向下交付给传输层,以其数据通过端口向下交付给传输层,以及让传输层知道应当将其数据段或者报及让传输层知道应当将其数据段或者报文中的数据向上通过端口交付给应用层文中的数据向上通过端口交付给应用层相应的进程。相应的进程。n从这个意义上讲,端口是用来标识应用从这个意义上讲,端口是用来标识应用进程。进程。17基于端口的进程间通信基于端口的进程间通信应应用用层层传传输输层层网网络络层层TCP 数据段数据段UDP用户数据报用户数据报应用进程应用进程TCP 复用复用 IP 复用复用UDP 复用复用 TCP 数据段数据段UDP用户数据报用户数据报 应用进程应用进程端口端口端口端口TCP 解复用解复用UDP 解复用解复用IP 解复用解复用发送方发送方接收方接收方18端口号端口号n端口用一个端口用一个 16 bit 端口号进行标志,共端口号进行标志,共64K个端口号对一台主机来说是足够的。个端口号对一台主机来说是足够的。n端口号只具有本地意义,即端口号只是为了标端口号只具有本地意义,即端口号只是为了标识本机上的各个应用进程。在识本机上的各个应用进程。在Internet中不同中不同主机的相同端口号是没有联系的。主机的相同端口号是没有联系的。n端口号分为两类:一类是知名端口,其数值一端口号分为两类:一类是知名端口,其数值一般为般为 0-1023,一般分配给一些常用的服务进,一般分配给一些常用的服务进程。另一类则是一般端口,用来随时分配给请程。另一类则是一般端口,用来随时分配给请求通信的客户进程。求通信的客户进程。198.4.1 用户数据报协议用户数据报协议-UDPnUser datagram protocol,RFC 768n无连接的传输服务无连接的传输服务n不可靠(不可靠(Unreliable)n高效率高效率20UDP头标头标伪头标源端口目的端口长 度检验和数 据IP头标UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据UDP头标UDP 用户数据报UDP长度长度协议协议0目的目的IP地址地址源源IP地址地址IP伪头标伪头标21使用使用UDP协议传输消息协议传输消息22UDP应用应用n具有简单高效的特点具有简单高效的特点n客户客户-服务器模式应用服务器模式应用nDNS:Domain Name System nRPC:Remote Procedure Calln话音、视频等实时多媒体应用话音、视频等实时多媒体应用 238.4.2 传输控制协议传输控制协议-TCPTCP travels in IP datagrams Internet routers only look at IP header to forward datagrams TCP at destination interprets TCP messagesnTransmission Control Protocol-RFC 793 24TCP连接连接TCP TCP 使用使用“连接连接”(而不仅仅是而不仅仅是“端口端口”)作为最基本的抽象,同时将作为最基本的抽象,同时将 TCP TCP 连接的端点称为套接口连接的端点称为套接口(socket)(socket),或套接字、插口。,或套接字、插口。套接口和端口、套接口和端口、IP IP 地址的关系是:地址的关系是:IP 地址地址131.6.23.13 端口号端口号1500 131.6.23.13,1500套接口(socket)一条一条TCPTCP连接是由发送方套连接是由发送方套接口和接收方套接口加上协议类型来唯一接口和接收方套接口加上协议类型来唯一标识的,即标识的,即TCPTCP连接用连接用五元组五元组 来唯一标识来唯一标识。25TCP FeaturesnTCP具有以下特性具有以下特性:n数据流传输(数据流传输(Stream Data Transfer)n可靠(可靠(Reliability)n全双工(全双工(Full Duplex)n复用(复用(Multiplexing)n逻辑连接(逻辑连接(Logical Connections)n流量控制(流量控制(Flow Control)n拥塞控制拥塞控制(Congestion Control)26TCP Segment Format 27TCP Segment Formatn源端口源端口/目的端口(目的端口(Source/Destination Port)n16位的端口号位的端口号n序列号(序列号(Sequence Number)n标识本数据段中第一个字节在数据流中的位置标识本数据段中第一个字节在数据流中的位置。n 确认号(确认号(Acknowledgment Number)n标识本数据段的接收方下一个期待接收的字节编号。标识本数据段的接收方下一个期待接收的字节编号。n头标长度(头标长度(Header Length)n4bits 指明数据段的头标长度,单位是指明数据段的头标长度,单位是32位,随选项位,随选项长度而定长度而定 n保留(保留(Reserved):):6bits,置置028TCP Segment Format-6 FlagsnURG n指示紧急指针有效指示紧急指针有效.nACK n指示确认段有效指示确认段有效 nPSH nPush 操作,置操作,置1时,即将本段时,即将本段迅速发送迅速发送 nRST n重新连接重新连接.nSYN n同步序列号,用于建立连接同步序列号,用于建立连接nFIN n发送方已发送完数据,用于释发送方已发送完数据,用于释放连接放连接29TCP Segment Formatn窗口大小(窗口大小(Window size)n用于流量控制,窗口指示在对方确认了的字节之后用于流量控制,窗口指示在对方确认了的字节之后还可发送的字节数还可发送的字节数。n检验和(检验和(Checksum)n用来检验用来检验TCP报头和数据的完整性,检验时,要加报头和数据的完整性,检验时,要加上伪上伪IP头标头标n紧急指针(紧急指针(Urgent Pointer)n指向紧急数据的最后一个字节,该指针仅在指向紧急数据的最后一个字节,该指针仅在URG置置1时有效时有效n选项(选项(Options)30TCP在不可靠的在不可靠的IP上为应用进程提供可靠的数据上为应用进程提供可靠的数据传输服务传输服务连接建立:在发送主机和接收主机之间协商初始序列号连接建立:在发送主机和接收主机之间协商初始序列号连接管理:使用滑动窗口算法对数据传输进行管理,包括确认重发、流量控制和拥塞连接管理:使用滑动窗口算法对数据传输进行管理,包括确认重发、流量控制和拥塞控制等控制等连接释放:数据传输结束后释放连接,发送主机和接收主机释放为该连接分配的资源连接释放:数据传输结束后释放连接,发送主机和接收主机释放为该连接分配的资源31TCP采用三步握手的方法建立连接采用三步握手的方法建立连接n客户请求连接客户请求连接TCP数据段:数据段:SYN置置1,ACK置置0,选择初,选择初始序列号始序列号SEQ=xn服务器服务器响应响应连接连接TCP数据段:数据段:SYN置置1,ACK置置1,选择初,选择初始序列号始序列号SEQ=y,并且对,并且对x进进行确认,设置行确认,设置ACK=x+1n客户客户响应响应连接连接TCP数据段:数据段:ACK置置1,SEQ=x+1,对,对y进进行确认,设置行确认,设置ACK=y+1通过三步握手,通过三步握手,host1和和host2之间完成初始序列号、窗口大小、之间完成初始序列号、窗口大小、最大数据段尺寸等参数的协商,并且分配连接所需要的资源最大数据段尺寸等参数的协商,并且分配连接所需要的资源32TCP请求连接碰撞使用三步握手,即使使用三步握手,即使两台主机同时想在相两台主机同时想在相同的套接口之间建立同的套接口之间建立一个一个TCPTCP连接而发生冲连接而发生冲突,也可以正常工作。突,也可以正常工作。但此时只有一个但此时只有一个TCPTCP连连接建立起来。因此接建立起来。因此TCPTCP连接由五元组唯一标连接由五元组唯一标识。识。33TCP连接建立定时器Connection Establishment Timer当当SYN数据段发出时,数据段发出时,连接建立定时器就开连接建立定时器就开始计时,如果在一定始计时,如果在一定时间(例如时间(例如65秒,秒,可设置)内未收到响可设置)内未收到响应,则连接建立失败。应,则连接建立失败。34TCP采用对称释放法释放连接采用对称释放法释放连接nTCP的全双工连接可看成一个双单工的连接,每个单的全双工连接可看成一个双单工的连接,每个单工连接都独立地释放。工连接都独立地释放。n通通信双方必须都向对方发送信双方必须都向对方发送FIN=1的的TCP段并得到对段并得到对方的应答,连接才能被释放,有四个阶段。方的应答,连接才能被释放,有四个阶段。FINACK of FINFINACK of FINHost1Host2Timen可以将第一个可以将第一个ACK数据数据段和第二个段和第二个FIN数据段合数据段合并,从而变为三步握手。并,从而变为三步握手。n为防止半连接,必须使为防止半连接,必须使用定时器计时,对用定时器计时,对FIN数数据段的应答在两个最大据段的应答在两个最大分组生命期内未到达,分组生命期内未到达,就释放连接。对方也会就释放连接。对方也会超时释放。超时释放。35TCP释放连接相关定时器释放连接相关定时器n保持存活定时器保持存活定时器(Keep-Alive Timer):当一当一个连接长时间闲置时,保持存活定时器会超时个连接长时间闲置时,保持存活定时器会超时而使一方去检测另一方是否仍然存在,如果它而使一方去检测另一方是否仍然存在,如果它未得到响应,便终止该连接。未得到响应,便终止该连接。n闲置定时器闲置定时器(Quiet Timer):当当TCP连接断开连接断开后,为防止该连接上的数据段还在网络上,并后,为防止该连接上的数据段还在网络上,并被后续打开的相同五元组的连接接收,要设置被后续打开的相同五元组的连接接收,要设置闲置定时器以防止刚刚断开连接的端口号被立闲置定时器以防止刚刚断开连接的端口号被立即重新使用。即重新使用。36TCP 滑动窗口(滑动窗口(Sliding Window)n可靠有序的传输可靠有序的传输n使用发送缓存和接收缓存,只有被确认,窗口才滑使用发送缓存和接收缓存,只有被确认,窗口才滑动。动。n流量控制流量控制n接收方可根据可用剩余缓冲区来指定窗口大小,当接收方可根据可用剩余缓冲区来指定窗口大小,当缓冲区满,接收方可以发送一个窗口大小为缓冲区满,接收方可以发送一个窗口大小为0的数的数据段,指示发送方停止发送数据。但此时仍可以发据段,指示发送方停止发送数据。但此时仍可以发送紧急数据送紧急数据(如用户紧急停止进程)和一字节的通(如用户紧急停止进程)和一字节的通知对方更新窗口大小的数据段。知对方更新窗口大小的数据段。37TCP滑动窗口举例滑动窗口举例n发送端要发送发送端要发送 900 字节长的数据,划分为字节长的数据,划分为 9 个个 100 字节长的数据段,而发送窗口确定为字节长的数据段,而发送窗口确定为 500 字节字节n发送端只要收到了对方的确认,发送窗口就可发送端只要收到了对方的确认,发送窗口就可前移前移n发送发送 TCP 要维护一个指针。每发送一个数据要维护一个指针。每发送一个数据段,指针就向前移动一个数据段的距离段,指针就向前移动一个数据段的距离38n发送端已发送了发送端已发送了 400 字节的数据,但只字节的数据,但只收到对前收到对前 200 字节数据的确认,同时窗字节数据的确认,同时窗口大小不变。口大小不变。n现在发送端还可发送现在发送端还可发送 300 字节字节39n发送端收到了对方对前发送端收到了对方对前 400 字节数据的确认,字节数据的确认,但对方通知发送端必须把窗口减小到但对方通知发送端必须把窗口减小到 400 字字节。节。n现在发送端最多还可发送现在发送端最多还可发送 400 字节的数据。字节的数据。40举例:利用可变窗口大小进行流量控制。设主机举例:利用可变窗口大小进行流量控制。设主机A A向主机向主机B B发发送数据,双方确定的窗口值是送数据,双方确定的窗口值是400400字节。再设每一个数据段字节。再设每一个数据段的长度是的长度是100100字节,序号的初始值是字节,序号的初始值是1 1。SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=200主机主机 A主机主机 B允许允许 A 再发送再发送 300 字节(序号字节(序号 201 至至 500)A 还能发送还能发送 200 字节字节A 还能发送还能发送 200 字节(序号字节(序号 301 至至 500)A 还能发送还能发送 300 字节字节A 还能发送还能发送 100 字节(序号字节(序号 401 至至 500)A 超时重发,但不能发送序号超时重发,但不能发送序号 500 以后的数据以后的数据允许允许 A 再发送再发送 200 字节(序号字节(序号 501 至至 700)A 还能发送还能发送 100 字节(序号字节(序号 601 至至 700)不允许不允许 A 再发送(到序号再发送(到序号 600 的数据都已收到)的数据都已收到)SEQ=201丢失!丢失!我们可以注意到,主机我们可以注意到,主机B B进行了三次流量控制,第一将窗口减小为进行了三次流量控制,第一将窗口减小为300300字节,第二次又较少为字节,第二次又较少为200200字节,最后减少到字节,最后减少到0 0,既不允许对方,既不允许对方发送数据。直到主机发送数据。直到主机B B重新发出一个新的窗口值为止。重新发出一个新的窗口值为止。41TCP滑动滑动窗口窗口管理管理42傻瓜窗口症状傻瓜窗口症状Silly Window Syndromen以下情况被称为傻瓜窗口症状:以下情况被称为傻瓜窗口症状:n当发送方的当发送方的TCP每次接收到一字节的数据后就发送每次接收到一字节的数据后就发送n当接收方的当接收方的TCP缓冲区已满,接收方会向发送方发送窗口大小缓冲区已满,接收方会向发送方发送窗口大小为为0的数据,而此时接收方的应用进程以交互方式每次只读取的数据,而此时接收方的应用进程以交互方式每次只读取一个字节,于是接收方又发送窗口大小为一个字节的更新数一个字节,于是接收方又发送窗口大小为一个字节的更新数据段,发送方应邀发送一个字节的数据,于是窗口又满了,据段,发送方应邀发送一个字节的数据,于是窗口又满了,循环往复循环往复n解决方法:解决方法:n禁止发送方发送太小的数据段,而是等到有一定数量的数据禁止发送方发送太小的数据段,而是等到有一定数量的数据后再发送,后再发送,Nagle算法算法n禁止接收方发送禁止接收方发送1个字节大小的窗口更新信息,而是要等到有个字节大小的窗口更新信息,而是要等到有了一定数量的可用空间后再通知对方,了一定数量的可用空间后再通知对方,Clark算法算法 43TCP 重传定时器重传定时器nTCP在发送数据的在发送数据的同时,启动一个重同时,启动一个重传定时器,如果在传定时器,如果在超时前该数据段被超时前该数据段被确认,就关闭该定确认,就关闭该定时器,否则,一旦时器,否则,一旦超时则重发该数据超时则重发该数据段。段。44问题:超时间隔(问题:超时间隔(timeout)应)应设为多长呢?设为多长呢?n不适当的不适当的 timeout 会导致性能下降会导致性能下降:ntimeout太长太长-导致发送端的等待时间太长导致发送端的等待时间太长nTimeout太短太短 重发多余的不必要的数据重发多余的不必要的数据 n解决的方法是对网络的性能不断测试,解决的方法是对网络的性能不断测试,采用一种不断调整超时时间间隔的动态采用一种不断调整超时时间间隔的动态算法算法45Picking a Timeout Valuen对每条连接,对每条连接,TCP均保存变量均保存变量RTT,用于存放到目的用于存放到目的端的往返时间的最接近估计值。端的往返时间的最接近估计值。n当一个数据发送时,同时启动定时器,如果时间超时当一个数据发送时,同时启动定时器,如果时间超时就重发数据段,如果在超时之前得到确认,就重发数据段,如果在超时之前得到确认,TCP就测就测量所花费的时间,记为量所花费的时间,记为M,并根据下面公式修正并根据下面公式修正RTTnRTT=RTT+(1-)Mn 是修正因子,一般为是修正因子,一般为7/8n1988年年Jacobson提出了另一个公式提出了另一个公式nD=D+(1-)|RTT-M|这里的这里的 可能不同前面的可能不同前面的 n确定当前的超时间隔确定当前的超时间隔Timeout=RTT+4Dn对已经重发的数据段无需修改对已经重发的数据段无需修改RTT,而是在每次传输而是在每次传输失败时将超时时间加倍,直到该数据段被成功传输失败时将超时时间加倍,直到该数据段被成功传输Karn算法。算法。46ACK延时定时器延时定时器Delayed ACK Timern当当TCP实体收到数据段时它必须返回确实体收到数据段时它必须返回确认,但并不需要立即回复,它可以在认,但并不需要立即回复,它可以在(200ms?)内发送?)内发送ACK数据段,如果数据段,如果在这段时间内它恰好有数据段要发送,在这段时间内它恰好有数据段要发送,它就可以在数据段内包含确认信息,因它就可以在数据段内包含确认信息,因此需要此需要ACK延时定时器。延时定时器。47持续定时器持续定时器The Persistence Timern持续定时器管理的是一种较为少见的事件,即下面要持续定时器管理的是一种较为少见的事件,即下面要介绍的死锁情况。为了让发送方暂停发送数据,接收介绍的死锁情况。为了让发送方暂停发送数据,接收方发送一个接收窗口为方发送一个接收窗口为0的确认。后来,接收方又发送的确认。后来,接收方又发送了一个更新了窗口大小的数据段,但该数据段丢失,了一个更新了窗口大小的数据段,但该数据段丢失,于是,双方都处于等待。于是,双方都处于等待。n为了防止上述事情发生,发送方在收到接收方发来一为了防止上述事情发生,发送方在收到接收方发来一个窗口为个窗口为0的数据段时,就启动持续定时器,等该定时的数据段时,就启动持续定时器,等该定时器超时还没有收到对方修改窗口大小的数据段的话,器超时还没有收到对方修改窗口大小的数据段的话,发送方就发一个发送方就发一个1字节的探测数据段,对该探测数据段字节的探测数据段,对该探测数据段的响应应包含了窗口大小,若仍为的响应应包含了窗口大小,若仍为0,则定时器清,则定时器清0,否则则可以发送数据。否则则可以发送数据。48TCP流量控制与拥塞控制流量控制与拥塞控制n发送端的主机在确定发送数据段的速率发送端的主机在确定发送数据段的速率时,既要根据接收端的接收能力,又要时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。从全局考虑不要使网络发生拥塞。nTCP的流量控制防止了发送方过快地传的流量控制防止了发送方过快地传输数据使得接收方来不及处理的情形,输数据使得接收方来不及处理的情形,但是网络容量有限,这时必须通过拥塞但是网络容量有限,这时必须通过拥塞控制来防治网络过载。控制来防治网络过载。49TCP拥塞控制拥塞控制Congestion Controln什么是网络拥塞什么是网络拥塞n当大量分组进入通信子网,超出了网络的处理能力时,当大量分组进入通信子网,超出了网络的处理能力时,就会引起网络局部或整体性能下降,这种现象称为就会引起网络局部或整体性能下降,这种现象称为拥塞拥塞。n拥塞表拥塞表现为路由器的队列溢出,分组丢失现为路由器的队列溢出,分组丢失n拥塞会导致什么后果拥塞会导致什么后果n拥塞使许多分组重传拥塞使许多分组重传n导致更多的业务量,直至崩溃导致更多的业务量,直至崩溃n拥塞的原因拥塞的原因n路由器的处理速度、存储空间、带宽不匹配路由器的处理速度、存储空间、带宽不匹配n网络负载的不平衡网络负载的不平衡50接收端窗口和拥塞窗口接收端窗口和拥塞窗口n每一个每一个 TCP 连接需要维护两个窗口连接需要维护两个窗口n接收端窗口接收端窗口 rwnd(receiver window)又称为通又称为通知窗口知窗口(advertised window)n拥塞窗口拥塞窗口 cwnd(congestion window)n接收端窗口接收端窗口 rwnd是接收端根据其目前的可用是接收端根据其目前的可用接收缓存大小所许诺的最新的窗口值,是来自接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在接收端的流量控制。接收端将此窗口值放在 TCP 数据段头标中的窗口大小域传送给发送端。数据段头标中的窗口大小域传送给发送端。n拥塞窗口拥塞窗口 cwnd 是发送端根据自己估计的网络是发送端根据自己估计的网络拥塞程度而设置的窗口值拥塞程度而设置的窗口值51发送窗口发送窗口n发送窗口的上限值:发送窗口的上限值:n发送端的发送窗口的上限值应当取为接收端窗口发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口和拥塞窗口 cwnd 这两个变量中较小的一个,这两个变量中较小的一个,即应按以下公式确定:即应按以下公式确定:发送窗口的上限值发送窗口的上限值=Minrwnd,cwnd n当当 rwnd cwnd 时,是接收端的接收能力限时,是接收端的接收能力限制发送窗口的最大值。制发送窗口的最大值。n当当 cwnd threshold)Slowstart algorithmHost Aone segmentRTTHost Btimetwo segmentsfour segments55TCP拥塞控制算法过程拥塞控制算法过程n当一个连接初始化时,将拥塞窗口置为一个最大数据当一个连接初始化时,将拥塞窗口置为一个最大数据段长度,并设置慢启动阈值段长度,并设置慢启动阈值ssthresh。n发送端的发送窗口不能超过拥塞窗口和接收窗口中的发送端的发送窗口不能超过拥塞窗口和接收窗口中的最小值,并假定接收端不进行流量控制。最小值,并假定接收端不进行流量控制。n发送端若收到了对所有发出的数据段的确认,就在下发送端若收到了对所有发出的数据段的确认,就在下一次发送时将拥塞窗口加倍。可见拥塞窗口从一次发送时将拥塞窗口加倍。可见拥塞窗口从1开始按开始按指数规律增长指数规律增长n拥塞窗口增长到拥塞窗口增长到ssthresh时,就每次将拥塞窗口加时,就每次将拥塞窗口加1,使拥塞窗口按线性规律增长,使拥塞窗口按线性规律增长n如果出现超时,就将当时拥塞窗口值减半,作为新的如果出现超时,就将当时拥塞窗口值减半,作为新的ssthresh,同时将拥塞窗口变为,同时将拥塞窗口变为1n重复上述过程重复上述过程慢慢启启动动拥拥塞塞避避免免56TCP拥塞控制算法实例拥塞控制算法实例慢启动慢启动慢启动慢启动157SummarynTCP provides end-to-end reliable byte-stream delivery nIP used for delivery to destination host nProtocol ports demultiplex to destination application nPositive acknowledgement with retransmission nSequence numbers detect missing,duplicate and out-of-order data nSliding window flow control nThree-way handshake nCongestion control 588.5 Berkeley SocketnSocket的产生和发展的产生和发展n最初在最初在70年代由加州大学年代由加州大学Berkeley分校开发,其分校开发,其目的是为目的是为BSD(Berkeley Software Distribution)UNIX 4.1版操作系统提供网络通信版操作系统提供网络通信接口。接口。nSocket在各种平台下的发展在各种平台下的发展n随着随着Berkeley Sockets的广泛应用,九十年代初,的广泛应用,九十年代初,Sun、MS等公司共同制定了适应等公司共同制定了适应dos和和win平台的平台的windows sockets的规范的规范(WinSock)nSun Microsystems为为Java也制定了网络通信的也制定了网络通信的APInLinux下的下的socket继承了继承了BSD sockets的风格,但的风格,但有所改动有所改动59Socket原语原语原语含义SOCKET创建一个新的通信端点BIND将一个本地地址关联到一个套接字上LISTEN宣布愿意接收连接,给出队列大小ACCEPT阻塞调用方,直到有人企图连接上来CONNECT主动尝试建立一个连接SEND在指定的连接上发送数据RECV从指定的连接上接收数据CLOSE释放指定的连接ApplicationTransportNetwork(Internet)Data-link(Host-to-Network)Sockets APITCPUDPMyProgramIPTCP套接字原语60Socket到到Socket的通信的通信Client ProcesssocketportsTCP/UDPIPServer ProcesssocketportsTCP/UDPIP在在TCP/IP网络应用中,两个进程间的网络应用中,两个进程间的Socket通信的主要采用通信的主要采用客户客户/服务器(服务器(Client/Server,C/S)模式,即客户向服务器)模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务发出服务请求,服务器接收到请求后,提供相应的服务61n从上面所描述过程可知:从上面所描述过程可知:n客户与服务器进程的作用是非对称的,因此客户与服务器进程的作用是非对称的,因此编码不同。编码不同。n服务进程一般是先于客户请求而启动的。只服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正要系统运行,该服务进程一直存在,直到正常或强迫终止。常或强迫终止。客户需要知道服务器使用的客户需要知道服务器使用的IP地址、端口等信息地址、端口等信息62TCP Client-Server交互流程交互流程socket()bind()listen()accept()send()recv()recv()TCP Serverclosesocket()socket()TCP Clientconnect()send()recv()closesocket()建立连接请求数据响应数据文件结束标识63UDP Client-Server交互流程交互流程64小结小结n掌握传输层基本功能,特别是掌握传输层基本功能,特别是Internet的传输层协议的传输层协议TCP和和UDP,以及连接建,以及连接建立机制、流量控机制、拥塞控制机制。立机制、流量控机制、拥塞控制机制。n基于基于Socket的客户的客户/服务器编程服务器编程n作业作业n请比较数据链路层和请比较数据链路层和TCP的滑动窗口机制有的滑动窗口机制有什么不同,并说明为什么会有这些不同什么不同,并说明为什么会有这些不同.n书:书:20,23,25,28,3365
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!