版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《多媒体通信》
西安电子科技大学通信工程学院第四章通信协议多媒体应用对网络的需求TCP/IP第四章通信协议RTP/RTCPRSVP多媒体应用对网络的需求TCP/IP一、多媒体应用对网络的需求RTP/RTCPRSVP音频流和视频流通信模式对话及其多方通信存储式实时流交互式一对一会议单播组播广播流媒体(StreamingMedia)应用主要是音频流和视频流的应用特点发送端(服务器)不断地发送媒体数据,数据在网络上传送接收端持续接收,同时播放出来从发送端到接收端,媒体信息通过网络有向流动,称之为流媒体,以区别于下载后播放的模式媒体服务器缓冲区计算机流媒体语音通话及多方通信单向时延要求小于100ms,超过350ms的时延,对话过程就难以继续特点数据双向流动持续接收,同时播放出来对实时性要求更高缓冲区计算机双向语音通话缓冲区计算机通信模式单播、组播、广播Client-Server模式、P2P模式广播(broadcast)组播(multicast)单播(unicast)P2P模式客户端进程服务器进程请求响应Client-Server模式多媒体应用的特点恒定比特率vs可变比特率下载传输vs流式传输对称信道vs非对称信道实时vs非实时多媒体应用的需求综合业务要求多种传输模式要求带宽要求时延和抖动要求实时性要求可靠性(差错率)要求协议体系结构应用/业务(文件/话音/视频/会议/邮件/远程共享)媒体流编解码协议H.264/iLBC/G.729RTP信令/协议DNSRTCPSIP/XMPPHTTPUDPTCPIP多媒体应用对网络的需求TCP/IP二、TCP/IPRTP/RTCPRSVP2.1网络体系结构协议、层、接口协议(Protocol):为网络数据交换而制定的规则、约定与标准网络协议的三要素:语义、语法与时序语义:用于解释比特流的每一部分的意义语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序的意义时序:事件实现顺序的详细说明层(Layer)层次是人们对复杂问题处理的基本方法;将总体要实现的很多功能分配在不同层次中对每个层次要完成的服务及服务要求都有明确规定不同的系统分成相同的层次最低层之间存在着”物理”通信对等层次之间存在着“虚拟”通信对不同系统的对等层之间的通信有明确的通信规定高层使用低层提供的服务时,并不需要知道低层服务的具体实现方法接口(Interface)接口是同一系统内相邻层之间交换信息的连接点同一个结点的相邻层之间存在着明确规定的接口,低层向高层通过接口提供服务只要接口条件不变、低层功能不变,低层功能的具体实现方法与技术的变化不会影响整个系统的工作网络体系结构(NetworkArchitecture)一个功能完备的计算机网络需要制定一整套复杂的协议集网络层次结构模型与各层协议的集合称为网络体系结构网络体系结构对计算机网络应该实现的功能进行了精确的定义有两种经典的体系结构模型:OSI模型和TCP/IP模型OSI7层参考模型12PhysicalDataLinkNetworkTransportSessionPresentationApplication34567TCP/IP参考模型12PhysicalDataLinkNetworkTransportSessionPresentationApplication34567NetworkInterfaceInternetTransportApplicationOSIModelTCP/IPModel层描述协议Application定义了TCP/IP应用协议以及主机程序与要使用网络的传输层服务之间的接口HTTP,
Telnet,FTP,DNS,SMTPTransport提供主机之间的通讯会话管理。定义了传输数据时的服务级别和连接状态TCP,UDPInternet将数据装入IP数据报,包括用于在主机间以及经过网络转发数据报时所用的源和目标的地址信息。实现IP数据报的路由IP,ICMP,ARP,RARPNetworkInterface详细指定如何通过网络实际发送数据,包括直接与网络媒体(如同轴电缆、光纤或双绞铜线)接触的硬件设备如何将比特流转换成电信号Ethernet,TokenRing,FDDIUnderlyingLANorWANtechnologyNetworkInterface
LayerNetworkLayerIPICMPIGMPARPRARPTransportLayerTCPSCTPUDPApplicationLayerFTPDNSHTTPSNMPSIP•••2.2IP协议InternetProtocol根据IP地址进行路由不保证服务质量IPv4IPv6(本节针对的是IPv4)IP地址(IPv4)长度为32bit,共4,294,967,296点分十进制记法(Dotted-decimalnotation)0111100000100011000101101111100048分为“子网地址”和“主机地址”二级结构Privateaddress10.x.x.x172.16.x.x
~172.31.x.x192.168.x.xIPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65536bytesIPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65536bytes版本字段,表示IP协议的版本号。对于IPv4,此值为4IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65536bytes以32比特字长为单位的首部长度,即长度=n*4bytes,n取值为5~15,所以首部长度为20~60bytesIPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65536bytesDifferentiatedServices,规定了本数据报的处理方式IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytes总长度,以字节为单位的IP数据报长度,包括首部和数据中的字节数,20~65535之间IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytes在分片(Fragment)的情况下,此字段为惟一标识该数据报的整数。其主要目的是为了让目的主机知道到达的数据报片属于哪个数据报IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytesbit0:保留,必须为0bit1:Don’tFragment(DF)如果此bit置1,则不允许分片bit2:MoreFragment(MF)如果当前数据报片为最后一片,则为0,否则为1IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytes在分片的情况下,表示此分片所携带的数据在原始数据报中以8字节为单位的偏移量,从零开始计数。如果未分片,则为0分片(Fragmentation)HeaderMTU(最大传输单元)IP数据报Trailer网络层链路层网络MTUTokenRing(16Mbps)17914TokenRing(4Mbps)4464FDDI4352WLAN7981EthernetV21500EthernetwithLLC/SNAP/PPPoE1492在传输过程中,如果IP数据报长度,超过了链路层的MTU,则:1)分片2)不分片(如DF=1),丢弃数据报在传输过程中,可能会被多次分片在最后的接收端进行重装IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytesTimetoLive,为该数据报在互联网中允许存在的时间,以秒为单位。绝大多数路由器只是简单地在数据报经过时将该值减1,减为0时丢弃该数据报IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytes指出此数据报携带的传输层数据使用何种协议,常见的有:ICMP(1),IGMP(2),TCP(6),UDP(17),SCTP(132)IPv4header可选项目的IP地址(32bits)源IP地址(32bits)TTL8bitsHeaderChecksum16bitsProtocol8bitsIdentification16bitsFragmentationOffset13bitsFlag3bitsVER4bitsDS8bitsHLEN4bitsTotalLength16bitsIPHeaderData20~60bytes20~65535bytes此字段只检验数据报的首部,不包括数据部分。校验时也不包括checksum自己UnderlyingLANorWANtechnologyNetworkInterface
LayerNetworkLayerIPICMPIGMPARPRARPTransportLayerTCPSCTPUDPApplicationLayerFTPDNSHTTPSNMPSIP•••2.3UDP协议UDP(UserDatagramProtocol)简单、高效无连接服务,不保证可靠传输相对于IP协议来说,唯一增加的功能是提供对协议端口的管理在多媒体系统中大量应用没有确认、重传等机制可靠传输问题,由应用层的协议来处理PortandSocketNetworkInterfaceNetworkTransportApplicationP1NetworkInterfaceNetworkTransportApplicationP2P3NetworkInterfaceNetworkTransportApplicationP4ProcessSocketSocket=IPAddress+Port端口UDP/TCP协议7TCP/UDPEchoProtocol20TCP/UDPFTPdatatransfer21TCPFTPcontrol(command)22TCP/UDPSecureShell23TCP/UDPTelnet80TCPHTTP161UDPSNMPWellKnownPort/assignments/service-names-port-numbers/service-names-port-numbers.txtUDPheaderTotalLength16bitsChecksum16bitsSourcePortNumber16bitsDestinationPortNumber16bitsUDPHeaderData8bytesDataIPHeaderTotalLength16bitsChecksum16bitsSourcePortNumber16bitsDestinationPortNumber16bitsUDPHeaderData8bytesUDPheaderUDP报文总长度,包括UDP头2.4TCP协议UnderlyingLANorWANtechnologyNetworkInterface
LayerNetworkLayerIPICMPIGMPARPRARPTransportLayerTCPSCTPUDPApplicationLayerFTPDNSHTTPSNMPSIP•••TCP(TransferControlProtocol)面向连接的服务,提供可靠的全双工数据传输非常复杂的协议应用于对数据正确性要求高的场合连接建立、拆除编号、确认差错控制、重传流量控制拥塞控制端到端流式传输TCP连接某台主机IP地址是,有一个进程在1234端口上监听,等待客户端的连接。请问此进程最多可以建立多少条TCP连接?一条TCP连接,由5个元素唯一确定:Socket
(IP,Port)Socket
(IP,Port)TCPTCPTCP流式传输字节流接收进程发送进程发送和接收缓冲区TCP报文段(Segment)TCPHeader可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)TCP头分为固定长度部分和可选项部分。固定长度部分:固定为20Bytes可选项部分:长度为0~40BytesTCP头长度必须是4的整数倍(按字节数算)可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)发送序号。TCP的序号编号是对每一个字节进行编号,因此在这个字段中给出的数字是本报文段所发送的数据部分的第一个字节的序号可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)确认序号。指的是期望收到对方下次发送的数据报的第一个字节的序号,也就是期望收到的下一个报文段的首部中的发送序号,同时确认以前收到的报文可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)TCP头长度,以4字节为一单位,取值范围为5~15,即TCP头长度范围是20~60字节URGACKPSHRSTSYNFIN标志含义URG后面的UrgentPointer是否有效ACKAcknowledgment是否有效PSH紧迫比特(Requestforpush)RSTReset连接SYN同步比特(Synchronizesequencenumber)FIN终止连接可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)为发送方接收窗口的大小,单位为字节,2~65535通过Windowscale选项,可以将窗口大小扩大到65535~1GB可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)校验和,用来检验首部和数据部分以及伪首部之和可选项及填充Checksum(16bits)Acknowledgment
Number(32bits)SequenceNumber(32bits)SourcePortAddress16bitsDestinationPortAddress16bitsTCPHeaderDataHLEN4bitsURGReserved6bitsACKPSHRSTSYNFINWindowSize16bitsUrgentPointer(16bits)当URG=1时有效,UrgentPointer指示了Urgent数据长度(从TCP
Data部分的第一个字节起算)。在现代的TCP实现中,基本不用。可选项和填充可选项及填充单字节多字节Endofoptionlist(EOP)Nooperation(NOP)MaximumSegementSize(MSS)WindowscalefactorTimestampSACKpermittedSACKTCPOption部分最多40字节可以有多个Option,每个Option的结构为:Option-Kind1ByteOption-Length1ByteOption-Data变长Kind0123845Endofoptionlist(单字节)EOP只能用一次,表示可选项结束用于填充,保证可选项总长度是4字节的倍数Kind:000000000Nooperationoption(单字节)NOP可用多次用于对齐每个选项(4字节的整数倍)Kind:100000001Maximumsegmentsize(4字节)在连接建立阶段协商,在通信过程中保持不变Kind:200000010Length:400000100MSSvalue2bytesWindowscalefactor(3字节)在连接建立阶段协商,在通信过程中保持不变Kind:300000010Length:300000011factorvalue1bytesTimestamp(10字节)Kind:800001000Length:1000001010Data8bytesSACKpermitted(2字节)是否允许选择重传Kind:400000100Length:200000010SACKoption(n字节)Kind:500000101LengthDataTCP的编号与确认在TCP报文段首部含有确认序号字段,通过它可以完成TCP报文的确认捎带确认ACK标志置1对接收到的数据的最高序号进行确认,返回的确认序号是已经收到的数据的最高序号加1由于TCP采用全双工的通信方式,因此进行通信的每一方都不必专门发送确认报文段,可以在传送数据的同时进行确认TCP连接建立seq:1000SSYNseq:1001ack:6001rwnd:10000ACKAseq:6000ack:1001rwnd:5000SSYN+ACKAClientServerA:ACK标志S:SYN标志ActiveOpenPassiveOpenSYN报文不允许携带任何数据,但是占用一个sequencenumberSYN+ACK报文不允许携带任何数据,但是占用一个sequencenumberACK中同时指定了Server端的接收窗口ACK报文如果不携带数据,则不占用sequencenumber。在此例中,意味着Client发出的下一个数据包,seq仍然是1001ACK中指定了Client端的接收窗口TCP数据传输seq:3000ack:6501AClientServerA:ACK标志P:PSH标志seq:1001ack:6001PDatabytes:1001~2000Aseq:2001ack:6001PDatabytes:2001~3000Aseq:6001ack:3001Databytes:6001~6500APSH和URG标志在接收端,有TCP缓冲区。正常情况下,会等到TCP缓冲区都填满后才向上层(应用层)交付。PSH=1:控制接收方,接收方在收到PSH标志的TCP报文后,需立即将这个报文(包括在缓冲区中滞留的数据)递交给上层(应用层)进程URG=1:TCP报文中第一字节到UrgentPointer中所指的字节,这部分数据被称为“紧急数据”,接收方在收到这些紧急数据后,不进入TCP缓冲区,直接递交给上层进程,而报文中非“紧急”的数据,仍然需要放入TCP缓冲区的TCP连接拆除(3步拆除)seq:xack:y+1ACKAseq:yack:x+1FFIN+ACKAClientServerA:ACK标志F:FIN标志ActiveClosePassiveCloseFIN报文如果不携带任何数据,则占用一个sequencenumberseq:xack:yFFINACK报文如果不携带数据,则不占用sequencenumberFIN+ACK报文如果不携带任何数据,则占用一个sequencenumberTCP连接半关闭
(4步拆除)seq:xack:z+1ACKAClientServerA:ACK标志F:FIN标志ActiveClosePassiveCloseseq:xack:yFFINseq:y+1ack:x+1ACKAseq:zack:x+1FFINServer可继续向Client发数据Client可向Server发ACKTCP状态机状态含义CLOSEDThereisnoconnectionLISTENPassiveopenreceived;waitingforSYNSYN-SENTSYNsent;waitingforACKSYN-RCVDSYN+ACKsent;waitingforACKESTABLISHEDConnectionestablished;datatransferinprogressFIN-WAIT-1FirstFINsent;waitingforACKFIN-WAIT-2ACKtofirstFINreceived;waitingforsecondFINCLOSE-WAITFirstFINreceived,ACKsent;waitingforapplicationtocloseTIME-WAITSecondFINreceived,ACKsent;waitingfor2MSLtimeoutLAST-ACKSecondFINsent;waitingforACKCLOSINGBothsideshavedecidedtoclosesimultaneously正常情况下的状态变化图TCP流量控制机制防止快速的发送数据时超过接收者的能力基于滑动窗口的流控机制以Byte为单位可变窗口大小接收窗口大小:由接收端确定•••m-1mm+1•••n-1nn+1•••ClosingOpening滑动窗口WindowsSize=min(rwnd,cwnd)rwnd:接收窗口cwnd:拥塞窗口rwnd:接收窗口,表明接收方当前的窗口大小,由对方(接收方)决定cwnd:冲突窗口,由己方根据拥塞算法计算得到•••m-1mm+1•••n-1nn+1•••收到ACK后窗口前移滑动窗口已发送并被确认的已发送未确认的可继续发送不可发送的1100已发送并被确认1012002013003014004015005016006017007018008019009011000可继续发送发送窗口指针收到确认后窗口前移不可发送(1)窗口大小为40011001012002013003014004015005016006017007018008019009011000发送窗口不可发送(2)发送400B,收到ACK=201,rwnd=400,还可继续发送200已发送未确认可以继续发送指针已发送并被确认11001012002013003014004015005016006017007018008019009011000发送窗口不可发送(3)收到ACK=401,rwnd=500可以继续发送指针糊涂窗口综合症(SillyWindowSyndrome)现象当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头)这种现象就叫糊涂窗口综合症类别发送端:像Telnet应用接收端:TCP缓冲区慢,上层处理慢,导致窗口很小措施发送端:避免在每个数据段中只传送少量数据(延迟通告、推迟确认)接收端:避免发送小容量的窗口通告TCP的差错控制(ErrorControl)差错检测的三种途径:检验和、确认和超时每一个报文段都包括检验和字段,用来检查报文段是否受损;若报文段受到损伤,就由目的TCP将其丢弃TCP使用确认的方法来证实收到了某些报文段,表明它们已经无损伤地到达了目的TCPTCP不使用否认(NAK,Negativeacknowledge)。若一个报文段在超时截止期之前未被确认,则被认为是受到损伤或已丢失ClientServerseq:1201-1400ack:4001seq:4001-5000ack:1401ack:5001seq:5001-6000ack:1401seq:6001-7000ack:1401ack:7001正常流程规则:ACK报文不消耗sequence
number,并且不需要确认往返时延(RTT:Round-TripTime)报文丢失ClientServerseq:501-600ack:xseq:601-700ack:xseq:701-800ack:xseq:801-900ack:xack:701ack:701seq:701-800ack:xack:901timeout接收缓冲区空洞规则:如果重传定时器超时,立即重传ACK报文不需要重传定时器接收到的报文,可能
乱序,此时TCP会缓存
之。TCP保证向应用层
递交的数据,一定是正
常顺序的。快速重传ClientServerseq:101-200ack:xseq:201-300ack:xseq:301-400ack:xseq:401-500ack:xack:301seq:301-400ack:xtimeout接收缓冲区空洞ack:301seq:501-600ack:xack:301seq:601-700ack:xack:301ack:701规则:如果收到连续的3个重复的ACK,立即重传ACK丢失(自动恢复)ClientServerseq:101-200ack:xseq:201-300ack:xseq:301-400ack:xseq:401-500ack:xack:301ack:501ACK丢失(超时重传)ClientServerseq:101-200ack:xseq:201-300ack:xack:301ack:301timeoutseq:101-200ack:x超时时间在传输层中,TCP确认到达的时间概率分布不是很集中,所以确定超时重发的时间就很困难TCP采用了一种自适应算法来计算重发超时时间。这种算法把每次每个报文段发出的时间和收到此报文段确认的时间都记录下来,两时间之差称为报文段的往返时延注:重传报文不参与计算针对所有发送正确的报文段的往返时延进行加权平均,得到报文段的平均往返时延RT,而将TCP测量到的本次往返时延设为M,则按照下列公式进行计算修正的RT:
α是修正因子,一般取7/8TCP的拥塞控制(CongestionControl)路由器中的队列负载和时延、吞吐量的关系ClientServersegment1ack2segment2segment3ack4segment4segment5segment6segment7ack8cwnd=2cwnd=4cwnd=1cwnd=8慢启动阶段:cwnd指数递增(Exponentialgrowth)TCP在连接建立成功后,如果立即向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生cwnd的单位:MSS(最大报文段)在以太网中,MSS一般为1460,PPPoE为1452慢启动(Slowstart)ClientServersegment1ack2segment2segment3ack4segment4segment5segment6ack7cwnd=x+1cwnd=x+2cwnd=xcwnd=x+3拥塞避免阶段:cwnd加性递增(Additiveincrese)慢启动算法中,cwnd增长的很快,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制TCP使用了一个叫慢启动门限(ssthresh,slowstartthreshold)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段在拥塞避免阶段,cwnd加性递增。这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值拥塞避免(Congestionavoidance)如何检测拥塞?TCP认为,如果发生了重传,则说明发生了“拥塞”发生“拥塞”(重传)的两个原因:收到3个相同ACK(快速重传)超时重传重新开始一个“慢启动”过程重新开始一个“拥塞避免”过程冲突避免慢启动closecwnd≥ssthreshclose3ACKsTimeout连接终止拥塞ssthresh=1/2windowcwnd=ssthreshssthresh=1/2windowcwnd=1MSS拥塞连接建立连接终止一个例子UnderlyingLANorWANtechnologyNetworkInterface
LayerNetworkLayerIPICMPIGMPARPRARPTransportLayerTCPSCTPUDPApplicationLayerFTPDNSHTTPSNMPSIP•••2.5SCTP协议SCTP(StreamControlTransmissionProtocol)SCTP是IETF新定义的一个传输层协议(2000年)可靠的通用传输层协议。综合了UDP和TCP的优点提供稳定、有序的数据传递服务(类似于TCP)面向消息(Message)的服务(类似于UDP)在H.323,SIP中有应用SCTP的高级特性多宿主(Multi-homing)多流(Multi-streaming)初始化保护(Initiationprotection)消息分帧(Messageframing)可配置的无序发送(Configurableunordereddelivery)平滑关闭(Gracefulshutdown)SCTP特性:多宿主(Multi-homing)多宿主主机就是一台具有多个网络接口的主机,因此可以通过多个IP地址来访问这台主机在TCP中,连接(connection)是指两个端点之间的一个通道SCTP引入了联合(association)的概念,它也是存在于两台主机之间,但可以使用每台主机上的多个接口进行协作多宿主特性为应用程序提供了比TCP更高的可用性ServerHost(TCP)ClientHost(TCP)c0s0NetworkServerHost(SCTP)ClientHost(SCTP)c0s0Network1c1s1Network2TCPSCTP一个主机有多个接口(网卡),绑定到多个IP地址Association:有两条连接:c0–s0,c1—s1SCTP负责使用内嵌的heartbeat机制来监视联合的路径;在检测到一条路径失效时,协议就会通过另外一条路径来发送通信数据。应用程序甚至都不必知道发生了故障恢复。SCTP特性:多流(Multi-streaming)SCTP能够在一个联合中支持多流机制一个联合中的所有流都是独立的,但均与该联合相关Stream0Stream1•••StreamNSCTPAssociation每个流都给定了一个流编号,它被编码到SCTP报文中,通过联合在网络上传送SCTP特性:初始化保护(Initiationprotection)TCP采用三次握手服务器收到SYN后,回复SYN+ACK,同时分配服务器资源SYNFlooding攻击:客户端而已发起大量SYN请求,但不响应后续的服务器应答报文。服务器最终资源耗尽。SCTP采用四次握手ClientServer①INIT②INIT-ACK③COOKIE-ECHO④COOKIE-ACK客户端使用INIT发起连接服务器使用INIT-ACK进行响应,其中包括了cookie(这个连接的唯一标识)客户机然后就使用一个COOKIE-ECHO报文进行响应,其中包含了服务器所发送的cookie服务器要为这个连接分配资源,并通过向客户机发送一个COOKIE-ACK报文对其进行响应分配资源SCTP特性:消息分帧(Messageframing)使用消息分帧机制,就可以保护消息只在一个边界内通过socket进行通信面向消息的协议:如果客户机向服务器先发送100个字节,然后又发送50个字节。那么服务器就会在两次读取操作中分别读取到100个字节和50个字节UDP也是这样进行操作,这对于面向消息的协议非常有益与此不同,TCP是按照字节流的方式进行操作,需要在接收方应用层进程进行帧识别和定界TCPConnectionWritet0Writet1ReadtnUDPSocket/SCTPAssociationWritet0Writet1ReadtnReadtn-1SCTP特性:可配置的无序发送(Configurableunordereddelivery)SCTP是基于消息的可靠传输协议这种特性在有些面向消息的应用中可能非常有用(如果其中的消息都是独立的,次序并不重要的话)如果需要,可以在SCTP中配置流来接受无序的消息SCTP特性:平滑关闭(Gracefulshutdown)TCP有“半关闭(Half-close)”状态,但是在实际应用中很少使用所以SCTP就放弃了这个特性:当一端关闭自己的套接字时(导致产生一个SHUTDOWN原语),对等的两端全部需要关闭,将来任何一端都不允许再进行数据的传输了PeerPeerSHUTDOWNSHUTDOWN-ACKSHUTDOWN-COMPLETION多媒体应用对网络的需求TCP/IP三、RTP/RTCPRTP/RTCPRSVPCasestudy:实时多媒体流的传输Internet服务器客户端VideoframeInternet服务器客户端00:00:0000:00:1000:00:2000:00:3000:00:0100:00:1100:00:2100:00:31FirstPacketSecondPacketThirdPacket每个Packet包含10秒的video数据假设:时延固定为1秒实时视频流传输发送时间接收并立即播放时间Internet服务器客户端00:00:0000:00:1000:00:2000:00:3000:00:0100:00:1500:00:2700:00:37FirstPacket
(delay:1s)SecondPacket(delay:5s)ThirdPacket(delay:7s)发送时间接收并立即播放时间Jitter每个Packet时延不一致,时延的变化量称为Jitter。此时,如果客户端在收到数据立即播放时,会出现停顿(数据有空白期)。如果Jitter太大,虽然Packet最终到达了客户端,但由于错过了播放时间,仍然会被丢掉4秒2秒Internet服务器客户端00:00:0000:00:1000:00:2000:00:3000:00:0100:00:1500:00:2700:00:37FirstPacket
(timestamp=0)SecondPacket(timestamp=10)ThirdPacket(timestamp=20)发送时间接收时间解决办法为每个packet加上时间戳(timestamp),这个时间戳是每个Packet相对于第一个Packet的时延(相对时延)。时间都是在发送端计算的。接收到packet后,不要立即播放。这里是等待了7秒播放时间00:00:0800:00:1800:00:2800:00:387秒4秒2秒2ndPacket(TS=10)为了解决这个问题,需要使用Playbackbuffer
(又称Jitterbuffer)1stPacket(TS=0)播放(定速)00:00:01到达(变速)00:00:08(1stpacket到达时间)(1st
packet播放时间)buffer中有7秒的数据1stPacket(TS=0)播放(定速)00:00:15到达(变速)00:00:18(2ndpacket到达时间)(2nd
packet播放时间)buffer中有3秒的数据3rdPacket(TS=20)2ndPacket(TS=10)1stPacket(TS=0)播放(定速)00:00:27到达(变速)00:00:28(3rdpacket到达时间)(3rdpacket播放时间)buffer中有1秒的数据3rdPacket(TS=20)2ndPacket(TS=10)1stPacket(TS=0)播放(定速)00:00:27到达(变速)00:00:38(到达时间)buffer已空00:00:1500:00:01TimeBytes(Sequencenumbers)播放(CBR)数据产生(CBR)数据到达(VBR)时延最大播放时延(orMaxBufferDuration)(or允许的最大Jitter)CBR:ConstantBitRateVBR:VariableBitRateBuffersizeBufferdurationBuffer将空流畅播放区域Buffer空了,播放被迫停止实时媒体传输需要:为了保证重放时的时间顺序,以及去除Jitter,需要时间戳(timestamp)为了保证数据的顺序,需要序号(sequencenumber)很多应用,比如视频会议,需要向多个客户端发送数据,所以有时候需要多播(multicast)在拥塞控制等场合,可能需要修改编码参数(encodingparameter)为了在接收端能正确地重放,可能需要提供编码协商(choiceofencoding)同时播放音视频,需要提供混合器(mixer)为了在低带宽网络上传输高带宽流,需要提供转换器(translator)实时数据可否用TCP传输?TCP在丢包的时候,需要等待重传,导致了大的时延TCP不支持多播TCP的拥塞控制机制,当丢包时,进入慢启动流程,cwnd降低的太快。对音视频流传输有影响TCP头开销太大(TCP:20bytes,UDP:8bytes)TCP报文中没有包含必要的时间戳
信息TCP不允许丢包,而在音视频应用中,可以容忍一定程度的丢包和多媒体通信相关的一些协议功能协议含义媒体描述SDPSessionDescriptionProtocol描述了会话数据和媒体内容媒体通信控制RTCPReal-TimeControlProtocol用于多媒体会话中的通信控制媒体传输RTPReal-timeTransportProtocol用于多媒体会话中的媒体流传输资源预约RSVPResourceReservationProtocol实现QoS会话管理SIPSessionInitiationProtocol媒体会话建立实时流传输RTSPReal-TimeStreamingProtocol实时流传输,用户可控制(启停、快进、暂停….)SonetATMPPPAAL3/4AAL5EthernetV.34PPPIPv4,IPv6TCPUDPH.323SIPSDPRTSPRSVPRTCPRTPH.261,MPEGKernelApplicationdaemonSignalingQualityofServiceMediatransportReservationMeasurement物理层链路层网络层传输层应用层3.1RTP协议RTP(Real-timeTransportProtocol)提供实时数据(如交互式的音频和视频)的端到端传输服务RTP没有连接的概念,它不是典型意义上的传输层协议,必须建立在底层的面向连接或无连接的传输协议之上传输层协议通常使用UDP,但也可以使用其它协议,如SCTP介于应用层和UDP之间的协议(RTP属于那一层,尚有争论)RTP本身不提供任何可靠性机制,但可以:通过加入时间戳,使得终端系统可以消除/降低时延抖动在一个多媒体会话中,同步多路音视频流音视频流的复用(Multiplexing)一种编码到另外一种编码的转换RTCP协议可提供QoS反馈,多个媒体流同步等,一般和RTP配合使用在实际系统中,一般和如下协议配合使用RTCP信令协议,如H.323,SIP,XMPP等媒体描述协议,如SDPRTPSession每个多媒体流都建立一个RTPSession一个Session由IP地址和一对RTP/RTCP端口组成一般RTP使用偶数端口,RTCP使用相邻的大的奇数端口(注意不是固定端口)这些端口号一般由其它会话建立协议商定(out-of-band)比如,audio和video用不同的stream,接收方可选择某个特定的流RTP协议中的数据单元是
PacketUnderlyingLANorWANtechnologyNetworkInterface
LayerNetworkLayerIPICMPIGMPARPRARPTransportLayerRTPUDPApplicationLayerH.261MPEGAudioPCMMPEG1VideoMotionJPEG•••MPEG2VideoRTP
PacketUDPheaderRTPheaderRTPPayloadPaddingPadcount变长,最小12字节RTP端口为在会话初始阶段随机选取的偶数Payload的长度,需要在开销和时延之间做权衡;一般来说,packet尽可能小,这样的话packet丢失造成的媒体质量损失也越小;比如20ms的未压缩话音数据时160bytes,丢失20ms的话音数据,基本感觉不到。有的系统要求固定大小的packet,此时需要进行填充1字节Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)RTP
HeaderVERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XM最少12bytesSynchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMVersion,2bits,现在是2Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMPadding,1bit,用来指示在RTP
Packet的末尾,是否有填充(padding)数据。在有填充的情况下,最后一个byte的值用来指示填充字节的长度(包括长度自己)Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMExtension,1bit,用来指示在标准RTP头(12bytes)和payload之间,是否存在扩展数据Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMCSRCCount,4bits,CSRCidentifier的数目。取值0~15,每个Identifier为32bitsSynchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMMarker(标记),1bit,由profile定义,。允许重要事件如帧边界在数据包流中进行标记Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMPayloadType,7bits,表示Payload部分的数据类型TypeApplicationTypeApplicationTypeApplication0PCMμAudio7LPCAudio15G.728Audio110168PCMAAudio26MotionJPEG2G.721Audio9G.722Audio31H.2613GSMAudio10~11L16Audio32MPEG1Video5~6DV14Audio14MPEGAudio33MPEG2VideoPayloadTypeSynchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMRTPPacket序号,16bits,每发送一个RTP数据包,序列号增加1。接收方可以依次检测数据包的丢失并恢复数据包序列。16bits到达最大值后,可以回卷Synchronizationsourceidentifier(SSRC)(32bits)Timestamp(32bits)SequenceNumber16bitsRTPHeaderMediaData(Payload)VERPCCPTContributoridentifier(CSRC)(32bits)Contributoridentifier(CSRC)(32bits)•••XMTimestamp,32bits,反映RTP数据包中的第一个八位组(Octet)的采样时间。采样时间必须通过时钟及时提供线性无变化增量获取,以支持同步和抖动计算Timestamp和SequenceNumberTimestamp:是一个相对时间,表示本Frame的第一个octet的“时间戳”,起始值要求是随机数。Timestamp的单位一般是“sampling”。比如8K采样,那么timestamp的单位就是125us。也可以理解为“样点数”。SequenceNumber:RTPpacket序号。如果一个Frame比较大,被分成了多个Packet传输,则这些packet的Timestamp相同,sequencenumber不同。Timestamp和SequenceNumber(Audio)8000Hz采样(125μs)一个RTPpacket承载20ms的话音,每个RTPpacket由独立的UDPdatagram传送Timestamp增长幅度:20ms/125μs=160(20ms中包含了160个采样点)Packetrate:1sec/20ms=50Hz每个RTPpayload长度:160*8=1280Sequencenumber:每个RTPpacket加1ts=xsn=yAudioStreamts=x+160sn=y+1AudioStreamRTP
packetn-1RTP
packetnTimestamp和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 04年租赁合同(写字间)
- 2024年度市场推广合同:甲方委托乙方在其市场营销和推广
- 内表面磨床市场发展现状调查及供需格局分析预测报告
- 2024年度文化演艺经纪合同
- 蒸汽压路机市场需求与消费特点分析
- 用于骨折治疗的药剂市场需求与消费特点分析
- 2024年度房产交易过户服务合同
- 2024年度成都市二手住宅买卖合同范本
- 电脑专用包市场发展预测和趋势分析
- 2024年度实验室场地经营管理合同
- 小学一年级20以内数学口算练习题大全
- 2024广东省高中学业水平考试数学试题真题分类汇编(含答案)
- 水泥预制构件购买合同范本(2024版)
- DB31-T 1487-2024 国际医疗服务规范
- SCIE数据库使用方法课件
- 供电中心变电站考核标准
- 工程劳务作业能力方案
- 上海2023年上海证券交易所社会招聘笔试历年典型考题及考点附答案解析
- 【贵州茅台公司基于近五年数据的财务报表探析案例(定量论文)7000字】
- 课题论文:大力发展新质生产力以促进经济稳定增长的研究
- GB/T 43988-2024滑板课程学生运动能力测评规范
评论
0/150
提交评论