计算机网络:传输层_第1页
计算机网络:传输层_第2页
计算机网络:传输层_第3页
计算机网络:传输层_第4页
计算机网络:传输层_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

传输层2025/4/13计算机网络讲义2主要内容基本概念TCP协议UDP协议基本概念NAT(网络地址转换)的基本概念基本概念2025/4/13计算机网络讲义3传输层1)传输层的职责是在两个不同系统的进程之间提供一种交换数据的可靠机制,协议具有端到端的意义。2)用户不能对通信子网加以控制,故无法采用更好的通信处理机制来解决网络层服务质量低劣的问题,更不可能通过改进数据链路层纠错能力来改善低层的条件。3)传输层的存在使得传输服务比网络服务更可靠,报文丢失、残缺等错误都可以被传输层检测到并可以采取相应的补救措施。2025/4/13计算机网络讲义4传输层传输协议(Transportprotocol)是整个网络体系结构中的关键协议之一实现进程到进程的可靠通信服务将多对进程通信复用到一条网络连接上向高层用户屏蔽了低层通信子网的细节(网络拓扑、协议等)传输层为应用进程之间提供逻辑通信,网络层为主机之间提供逻辑通信2025/4/13计算机网络讲义5传输层在系统中的位置WebIEHostAHostBNetworkLayerLinkLayerApplicationLayerTransportLayerO.S.O.S.HeaderDataHeaderDataHDHDHDHDHDHD2025/4/13计算机网络讲义6传输层功能连接管理定义允许两个用户象直接连接一样交谈的规则流量控制(FlowControl)传输层定义了端用户之间的流量控制,数据链路协议定义了两个中间相邻接点的流量控制差错检测(ErrorDetection)数据链路层提供了可靠的链路传输,但在路由器将含有分组的帧重新格式化,可能会出现影响分组内容的错误。帧校验和是在新帧创建后计算的,包含了错误数据。传输层的差错检测用于检测此错误。对用户请求的响应包括发送和接收数据建立无连接和面向连接的通信拥塞控制(congestioncontrol)2025/4/13计算机网络讲义7AP2传输层网络层链路层物理层AP5传输层网络层链路层物理层通信子网传输层:进程到进程的通信网络AP1AP2AP3AP4AP5AP6主机A主机BAP为应用网络层:主机到主机的通信2025/4/13计算机网络讲义8以FTP举例NetworkLinkTransportApplicationPresentationSessionTransportNetworkLinkPhysicalThe7-layerOSIModelThe4-layerInternetmodelApplicationFTPASCII/BinaryIPTCPEthernet2025/4/13计算机网络讲义9applicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicallogicalend-endtransport2025/4/13计算机网络讲义10解决的问题不可靠的网络层服务可靠的通讯需求

Clickhere2025/4/13计算机网络讲义11提供两种服务TCP和UDP适应不同的应用需求2025/4/13计算机网络讲义12传输层协议可靠的,面向连接的,单播(Unicast)协议:TCP拥塞控制(CongestionControl)流控制(FlowControl)有连接(ConnectionManagement)不可靠的(Best-effort),面向无连接的,单播、多播或广播(multicast、broadcast)的协议:UDP应用协议TCPUDPIP链路层物理层2025/4/13计算机网络讲义13apptransportnetworkMP2apptransportnetworkreceiverHtHnsegmentsegmentMapptransportnetworkP1MMMP3P4segmentheaderapplication-layerdata复用2025/4/13计算机网络讲义14端口号定义传输层根据端口号来决定把报文提交给某个应用进层熟知端口(Well-knownport):IANA负责分配给一些常用的应用程序,范围:1~1024。如ftp21,telnet23,smtp25等。注册端口:1024~49151。IANA不指派也不控制。可在IANA注册以防止重复。动态端口:49152~65535。IANA不指派也不控制。客户端进程动态生成。2025/4/13计算机网络讲义152025/4/13计算机网络讲义16IPTCPUDPWWWSMTPTELNETSNMPTFTP应用80252316169通过IP协议确定主机通过端口确定进程2025/4/13计算机网络讲义17复用/分用:举例hostAserverBsourceport:xdest.port:23sourceport:23dest.port:xportuse:simpletelnetappWebclienthostAWebserverBWebclienthostCSourceIP:CDestIP:Bsourceport:xdest.port:80SourceIP:CDestIP:Bsourceport:ydest.port:80portuse:WebserverSourceIP:ADestIP:Bsourceport:xdest.port:802025/4/13计算机网络讲义18端口与连接端口标志的是应用一个应用连接用目的与源的IP地址+端口来标识:源IP地址,源端口号;目的IP地址,目的端口号,如:(0,1025)和(0,23)102510268023801025服务器:客户1:客户2:连接1连接2连接3连接1:,1025;,80连接2:,1026;,23连接3:,1025;,80以上概念同时适用于TCP与UDP,IP地址与端口对即构成套接字Socket2025/4/13计算机网络讲义19(协议、源地址、目的地址、源端口号、目的端口号)

利用这样一个五元组就来唯一标识一次传输层通信2025/4/13计算机网络讲义20TCP/IP协议族中的传输层协议用户数据报协议UDP和传输控制协议TCPUDP和TCP都使用IP协议,即他们的协议数据单元都作为IP数据报的数据

UDP是无连接的

TCP提供的是面向连接的服务。2025/4/13计算机网络讲义21主要内容基本概念TCP协议UDP协议基本概念NAT(网络地址转换)的基本概念TCP协议2025/4/13计算机网络讲义22TCP协议概述报文格式连接管理流量控制状态图概述2025/4/13计算机网络讲义23TCP协议最早由斯坦福大学的两名研究人员于1973年提出。1983年,TCP/IP被Unix4.2BSD系统采用。随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议。取代ARPANET最初使用的NCP(NetworkControlProtocol)协议,成为Internet的标准协议。2025/4/13计算机网络讲义24TCP协议是专门设计用于在不可靠的网络当中提供可靠的、端对端的字节流通信协议。TCP协议能够满足不同的拓扑结构、带宽、延迟、分组大小以及其他特性。TCP协议在RFC793当中定义,在RFC1122和RFC1323当中得到修订和改进运输实体:负责管理TCP流以及同IP层的接口2025/4/13计算机网络讲义25TCP协议具有优良的性能虽然TCP中包含许多比其它运输层更为复杂的任务,但分析表明,其性能并没有因此而降低。几个最大吞吐量的理论计算值(或测得的):在以太网(10M)上:8兆在FDDI(100M)上:80-90兆两台GrayY-MP计算机在800兆的高速通道上:781兆2025/4/13计算机网络讲义26TCP最主要的特点TCP是面向连接的运输层协议。每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP提供可靠交付的服务。

TCP提供全双工通信。面向字节流。2025/4/13计算机网络讲义27应当注意TCP连接是一条虚连接而不是一条真正的物理连接。TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。TCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。2025/4/13计算机网络讲义28TCP的连接TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenatedwith)IP地址即构成了套接字。2025/4/13计算机网络讲义29套接字(socket)

套接字socket=(IP地址:端口号)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}2025/4/13计算机网络讲义30同一个名词socket

有多种不同的意思应用编程接口

API

称为socketAPI,简称为socket。socketAPI中使用的一个函数名也叫作socket。调用socket函数的端点称为socket。调用socket函数时其返回值称为socket描述符,可简称为socket。在操作系统内核中连网协议的Berkeley实现,称为socket实现。2025/4/13计算机网络讲义31TCP协议概述报文格式连接管理流量控制状态图报文格式2025/4/13计算机网络讲义32TCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32位SYNRSTPSHACKURG位08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP报文段的首部格式

2025/4/13计算机网络讲义33TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。2025/4/13计算机网络讲义34TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。2025/4/13计算机网络讲义35TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。2025/4/13计算机网络讲义36TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充数据偏移(即首部长度)——占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(以4字节为计算单位)。2025/4/13计算机网络讲义37TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留为今后使用,但目前应置为0。2025/4/13计算机网络讲义38TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充紧急URG——当URG

1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。2025/4/13计算机网络讲义39TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充确认ACK——只有当ACK

1时确认号字段才有效。当ACK

0时,确认号无效。2025/4/13计算机网络讲义40TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充推送PSH(PuSH)——接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。2025/4/13计算机网络讲义41TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充复位RST(ReSeT)——当RST

1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。2025/4/13计算机网络讲义42TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充同步SYN——同步SYN=1表示这是一个连接请求或连接接受报文。2025/4/13计算机网络讲义43TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充终止FIN(FINis)——用来释放一个连接。FIN

1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。2025/4/13计算机网络讲义44TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充窗口字段——

占2字节,用来让对方设置发送窗口的依据,单位为字节。2025/4/13计算机网络讲义45TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。2025/4/13计算机网络讲义46TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充紧急指针字段——占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

2025/4/13计算机网络讲义47TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充选项字段——长度可变。TCP最初只规定了一种选项,即最大报文段长度

MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”MSS(MaximumSegmentSize)是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。2025/4/13计算机网络讲义48其他选项窗口扩大选项——占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。时间戳选项——占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)。选择确认选项——在后面的5.6.3节介绍。2025/4/13计算机网络讲义49TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充填充字段——这是为了使整个首部长度是4字节的整数倍。2025/4/13计算机网络讲义50伪首部并不真正传输,但是参与计算校验和。在计算校验和的时候临时生成,同TCP报文连接在一起,得到一个过渡报文,用来计算校验和格式:

4字节4字节1字节1字节2字节计算方法将得到的临时报文看作n个16bit的字(如果数据字段为奇数个字节就补上一个全零的字节,但是不发送),得到所有这些16bit的字的反码和,校验值就是该和的反码。校验方法接受到报文后,连同伪首部和可能的填充字节,进行反码求和运算。如果无错误应该得到全1,否则表明有错误出现。2025/4/13计算机网络讲义51标识位有六个标识:紧急位(URG):紧急指针有效,紧急指针是一个正的偏移量,与序号字段的值相加等于该数据的最后一个字节的序号。

确认位(ACK):表示确认序号字段有意义急迫位(PSH):表示请求接收端的传输实体尽快交付应用层重建位(RST):表示出现严重差错,必须释放连接重建同步位(SYN):SYN=1,ACK=0表示连接请求消息

SYN=1,ACK=1表示同意建立连接消息终止位(FIN):表示数据已发送完,要求释放连接圣诞树攻击:全部6个标识位置一2025/4/13计算机网络讲义52TCP协议概述报文格式连接管理流量控制状态图连接管理2025/4/13计算机网络讲义53连接管理连接的建立通信双方知道对方存在协商通信参数分配运输实体资源连接的释放保证数据被正确接收释放所申请资源2025/4/13计算机网络讲义54TCP连接建立过程三段握手协议(Three-wayHandshaking):主机A主机B主动打开被动打开(PassiveOpen)SYN,SEQ=XSYN,SEQ=Y,ACK=X+1ACK=Y+1防止失效的连接请求报文的复活。

SynFlooding攻击

双方声明:ISN,初始序列号;MSS,最大报文段长度2025/4/13计算机网络讲义55两军问题两支蓝军欲同时发动进攻,而且唯一的通信方式是派遣信使步行奔过山谷去传递信息。在山谷中,信使有可能被俘虏而丢失信件。问题:存在使蓝军获胜的协议吗?2025/4/13计算机网络讲义56结论是:不存在使蓝军必胜的通信约定证明:假如存在某种协议的话,那么,协议中最后一条信息要么是必要的,要么不是。如果不是,可以删除它,直到剩下的每条消息都是至关重要的。若最后一条消息没有安全到达目的地,则会怎样呢?刚才说过每条信息都是必要的,因此,若它丢了,则进攻不会如期进行。由于最后发出信息的指挥官永远无法确定该信息能否安全到达,所以,他不会冒险发动攻击。同样,另一支蓝军也明白这个道理,所以也不会发动进攻。释放一个可能有数据丢失的网络连接并不像人们初看起来那样简单。2025/4/13计算机网络讲义57TCP连接释放过程主机A主机B应用进程释放连接通知应用进程FIN,SEQ=XACK=X+1ACK=Y+1

半关闭(Half-Close)FIN,SEQ=Y,ACK=X+1应用进程释放连接2025/4/13计算机网络讲义58TCP协议概述报文格式连接管理流量控制状态图流量控制TCP序号与确认滑动窗口慢启动算法2025/4/13计算机网络讲义59可靠传输的工作原理(a)无差错情况A发送M1确认M1B发送M2发送M3确认M2确认M3A发送M1B超时重传M1发送M2确认M1丢弃有差错的报文

(b)超时重传tttt2025/4/13计算机网络讲义60请注意在发送完一个分组后,必须暂时保留已发送的分组的副本。分组和确认分组都必须进行编号。超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。2025/4/13计算机网络讲义61确认丢失和确认迟到A发送M1B超时重传M1发送M2丢弃重复的M1重传确认M1

(a)确认丢失确认M1A发送M1B超时重传M1发送M2丢弃重复的M1重传确认M1

(b)确认迟到确认M1收下迟到的确认但什么也不做tttt2025/4/13计算机网络讲义62可靠通信的实现使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeatreQuest)。ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。2025/4/13计算机网络讲义63信道利用率停止等待协议的优点是简单,但缺点是信道利用率太低。TDRTTATD+RTT+TAB分组确认tt分组确认2025/4/13计算机网络讲义64信道的利用率U

2025/4/13计算机网络讲义65流水线传输发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。B分组ttAACK2025/4/13计算机网络讲义66TCP的序号与确认TCP协议是面向字节的。TCP将要传送的整个报文看作一个字节流,并且使每一个字节对应一个编号。对要传输的每个字节进行编号;发送方序号:数据部分的第一个字节的序号;接受方的确认期望下一次收到的数据当中的异地个字节的序号;2025/4/13计算机网络讲义67以字节为单位的滑动窗口前移不允许发送已发送并收到确认A的发送窗口=20允许发送的序号26272829303132333435363738394041424344454647484950515253545556B期望收到的序号前沿后沿前移收缩根据B给出的窗口值A构造出自己的发送窗口TCP标准强烈不赞成发送窗口前沿向后收缩2025/4/13计算机网络讲义68不允许发送已发送并收到确认A的发送窗口位置不变允许发送但尚未发送262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机B的接收窗口允许接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A发送了11个字节的数据P3–P1=A的发送窗口(又称为通知窗口)P2–P1=已发送但尚未收到确认的字节数P3–P2=允许发送但尚未发送的字节数(又称为可用窗口)2025/4/13计算机网络讲义69允许发送但尚未发送A的发送窗口向前滑动262728293031323334353637383940414243444546474849505152535455已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收B的接收窗口向前滑动262728293031323334353637383940414243444546474849505152535455已发送确认并交付主机不允许接收56未按序收到A收到新的确认号,发送窗口向前滑动先存下,等待缺少的数据的到达2025/4/13计算机网络讲义70不允许发送已发送并收到确认A的发送窗口已满,有效窗口为零262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3A的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。2025/4/13计算机网络讲义71发送缓存最后被确认的字节发送应用程序发送缓存最后发送的字节发送窗口已发送TCP序号增大2025/4/13计算机网络讲义72接收缓存接收应用程序已收到接收窗口TCP接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)2025/4/13计算机网络讲义73发送缓存与接收缓存的作用发送缓存用来暂时存放:

发送应用程序传送给发送方TCP准备发送的数据;

TCP已发送出但尚未收到确认的数据。接收缓存用来暂时存放:

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

不按序到达的数据。

2025/4/13计算机网络讲义74需要强调三点A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)。TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。2025/4/13计算机网络讲义75超时重传时间的选择重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。2025/4/13计算机网络讲义76往返时延的方差很大由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大。因而运输层的往返时间的方差也很大。时间数据链路层运输层T1T2T3往返时间的概率分布2025/4/13计算机网络讲义77加权平均往返时间TCP保留了RTT的一个加权平均往返时间

RTTS(这又称为平滑的往返时间)。第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:

新的RTTS

(1

)

(旧的RTTS)

(新的RTT样本)式中,0

1。若

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

接近于1,则表示RTT值更新较快。RFC2988推荐的

值为1/8,即0.125。2025/4/13计算机网络讲义78超时重传时间RTO(RetransmissionTime-Out)

RTO应略大于上面得出的加权平均往返时间RTTS。RFC2988建议使用下式计算RTO:

RTO

RTTS+4

RTTD

RTTD是RTT的偏差的加权平均值。RFC2988建议这样计算RTTD。第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:新的RTTD=(1

)

(旧的RTTD)+

RTTS

新的RTT样本

是个小于1的系数,其推荐值是1/4,即0.25。2025/4/13计算机网络讲义79往返时间RTT?往返时间的测量相当复杂TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?发送一个TCP报文段超时重传TCP报文段收到ACK时间12往返时间RTT?是对哪一个报文段的确认?2025/4/13计算机网络讲义80Karn

算法在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均平均往返时间RTTS

和超时重传时间RTO就较准确。2025/4/13计算机网络讲义81报文段每重传一次,就把RTO增大一些:新的RTO

(旧的RTO)系数

的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。实践证明,这种策略较为合理。修正的Karn

算法2025/4/13计算机网络讲义82选择确认SACK

(SelectiveACK)

接收方收到了和前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。2025/4/13计算机网络讲义83110001501300035014500确认号=1001L1=1501L2=3501R1=3001R1=4501接收到的字节流序号不连续……连续的字节流………第一个字节块第二个字节块

和前后字节不连续的每一个字节块都有两个边界:左边界和右边界。图中用四个指针标记这些边界。第一个字节块的左边界L1=1501,但右边界R1=3001。左边界指出字节块的第一个字节的序号,但右边界减1才是字节块中的最后一个序号。第二个字节块的左边界L2=3501,而右边界R2=4501。2025/4/13计算机网络讲义84RFC2018的规定如果要使用选择确认,那么在建立TCP连接时,就要在TCP首部的选项中加上“允许SACK”的选项,而双方必须都事先商定好。如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。只是以后在TCP报文段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。由于首部选项的长度最多只有40字节(TCP首部最长为60字节,其中固定长度为20字节),而指明一个边界就要用掉4字节,因此在选项中最多只能指明4个字节块的边界信息。2025/4/13计算机网络讲义85TCP的流量控制

利用滑动窗口实现流量控制一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。2025/4/13计算机网络讲义86seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许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(字节)”。2025/4/13计算机网络讲义87持续计时器

(persistencetimer)。TCP为每一个连接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。若窗口不是零,则死锁的僵局就可以打破了。2025/4/13计算机网络讲义88必须考虑传输效率可以用不同的机制来控制TCP报文段的发送时机:第一种机制是TCP维持一个变量,它等于最大报文段长度MSS。只要缓存中存放的数据达到MSS字节时,就组装成一个TCP报文段发送出去。第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送(push)操作。第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS)发送出去。2025/4/13计算机网络讲义89TCP的拥塞控制

拥塞控制的一般原理

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。出现资源拥塞的条件:

对资源需求的总和>可用资源

若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。2025/4/13计算机网络讲义90拥塞控制与流量控制的关系拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。拥塞控制是寻找使得不等式(5-7)不再成立的条件,或者是增大网络可用资源,或者是减少用户资源需求2025/4/13计算机网络讲义91拥塞控制所起的作用提供的负载吞吐量理想的拥塞控制实际的拥塞控制0死锁(吞吐量=0)无拥塞控制拥塞轻度拥塞2025/4/13计算机网络讲义92拥塞控制的一般原理拥塞控制是很难设计的,因为它是一个动态的问题。当前网络正朝着高速化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因。这点应特别引起重视。2025/4/13计算机网络讲义93开环控制和闭环控制开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:监测网络系统以便检测到拥塞在何时、何处发生。将拥塞发生的信息传送到可采取行动的地方。调整网络系统的运行以解决出现的问题。2025/4/13计算机网络讲义94几种拥塞控制方法慢开始、拥塞避免发送方由小到大逐渐加大发送窗口(增加的速度很快);发送窗口缓慢增加;快重传、快恢复重复序号立即确认,不等待确认捎带;接收方收到三个重复确认立即重传,不等待超时到达。加法增大2025/4/13计算机网络讲义95慢开始和拥塞避免发送方维持一个叫做拥塞窗口cwnd(congestionwindow)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。2025/4/13计算机网络讲义96拥塞窗口的设置算法流程:在建立连接时设置慢启动门限sstrhresh

(slowstartthreshold)的初始值在开始新的连接,拥塞窗口的初始值为1慢启动算法:拥塞窗口按指数增加,即每连续正确发送了N个数据后拥塞窗口值为2N,窗口增大到慢启动门限后按照线形增加(每次加1)。拥塞控制算法:检测到网络发送拥塞后:慢启动门限置为当前拥塞窗口的一半,同时拥塞窗口变为1注意:当cwnd=ssthresh

时,既可使用慢开始算法,也可使用拥塞避免算法。2025/4/13计算机网络讲义972216慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ssthresh=16。“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh

值网络拥塞指数规律增长ssthresh

的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次2025/4/13计算机网络讲义98TCP的流量控制发送窗口=Min[通知窗口,拥塞窗口]通知窗口(advertisedwindow)接收端根据资源情况许诺的窗口值拥塞窗口(congestionwindow)发送端根据网络拥赛情况得到的窗口值2025/4/13计算机网络讲义99慢启动:报文段慢慢注入网络(每次超时拥塞窗口减为1)乘法减小:出现频繁超时时,拥塞窗口指数减小(每次超时,门限窗口减半)加法增大:避免网络拥塞,线形增加。(达到门限值后线性增加)2025/4/13计算机网络讲义100必须强调指出“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。2025/4/13计算机网络讲义101快重传和快恢复快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。2025/4/13计算机网络讲义102快重传举例发送方接收方发送M1

确认M1t

确认M2发送M2发送M3发送M4

?发送M5发送M6

重复确认M2立即重传M3

重复确认M2

重复确认M2t发送M7收到三个连续的对M2

的重复确认立即重传M3丢失2025/4/13计算机网络讲义103快恢复算法(1)当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh

减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口cwnd

现在不设置为1,而是设置为慢开始门限ssthresh

减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。2025/4/13计算机网络讲义10424从连续收到三个重复的确认

转入拥塞避免2468101214161820220048121620传输轮次拥塞窗口cwnd收到3个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCPReno版本TCPTahoe版本(已废弃不用)ssthresh

的初始值拥塞避免“加法增大”新的ssthresh

值慢开始快恢复2025/4/13计算机网络讲义105发送窗口的上限值发送方的发送窗口的上限值应当取为接收方窗口rwnd

和拥塞窗口cwnd

这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值

Min[rwnd,cwnd]当rwnd<cwnd

时,是接收方的接收能力限制发送窗口的最大值。当cwnd<rwnd

时,则是网络的拥塞限制发送窗口的最大值。

2025/4/13计算机网络讲义106TCP协议概述报文格式连接管理流量控制状态图状态图2025/4/13计算机网络讲义107TCP的有限状态机TCP有限状态机的图中每一个方框都是TCP可能具有的状态。每个方框中的大写英文字符串是TCP标准所使用的TCP连接状态名。状态之间的箭头表示可能发生的状态变迁。箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。图中有三种不同的箭头。粗实线箭头表示对客户进程的正常变迁。粗虚线箭头表示对服务器进程的正常变迁。另一种细线箭头表示异常变迁。

2025/4/13计算机网络讲义108TCP

机CLOSEDESTABLISHEDLISTENCLOSE_WAITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主动打开被动打开被动关闭主动关闭起点被动打开主动打开发送SYN同时打开收到SYN,发送SYN,ACK收到ACK数据传送阶段

关闭发送FIN

关闭发送FIN

关闭发送FIN收到RST

收到SYN发送SYN,ACK

关闭或超时收到ACK

收到SYN,ACK发送ACK收到ACK收到ACK收到FIN发送ACK收到FIN,ACK

发送ACK收到FIN发送ACK同时关闭收到FIN发送ACK发送SYN定时经过两倍报文段寿命后关闭2025/4/13计算机网络讲义109主要内容基本概念TCP协议UDP协议基本概念NAT(网络地址转换)的基本概念UDP协议基本概念2025/4/13计算机网络讲义110UDPUserDatagramProtocol为什么需要UDP协议:不需建立连接(连接会增加延时)简单:发方与收方均不需要维护连接状态包头更小特性不可靠(BestEffort),UDP包可能:丢失(Lost)重复(duplicated)错序(Deliveredoutoforder)无连接发方与收方之间无需握手每个UDP包均单独处理UDP与IP比较:只是在IP基础上增加了端口号2025/4/13计算机网络讲义111UDP是一个简单的面向数据报的运输层的协议,它提供协议端口,使得应用进程能够向其他进程发送数据报,进行进程间的数据通信。UDP数据报是无连接、不可靠的。不提供确认、消息反馈控制,与IP数据报相同。可靠性要需要由应用程序本身提供。UDP规范(RFC-768,1980)。UDP利用IP进行主机到主机的数据报传输。UDP数据封装:2025/4/13计算机网络讲义112UDP报头:源端口可选,若无,则必须全为零。报文长度以8位组计算,包括UDP报头和数据,最小值为8,即仅有报头。检校和也是可选的,方法与TCP头检验和计算方法相同:16位累加和求补UDP包长度:为整个UDP包的长度,包括头部通常一个UDP包的长度最大为512字节头,2025/4/13计算机网络讲义113UDP应用多媒体应用对丢包不敏感多播UDP常见应用DNS:域名服务SNMP:简单网络管理协议RIP:路由信息协议P2P:点对点通信UDP上的可靠传输2025/4/13

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论