TCP/IP协议

       因特网上使用的通信协议——TCP/IP协议与OSI相比,简化了高层的协议,简化了会话层和表示层,将其融合到了应用层,使得通信的层次减少,提高了通信的效率。
    下图示意了TCP/IP 与 ISO OSI 参考模型之间的对应关系。
OSI体系结构
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
 
TCP/IP协议集
应用层TELNET、FTP、HTTP、SMTP、DNS等
传输层TCP、UDP
网络层IP、ICMP、ARP、RARP
网络接口层各种物理通信网络接口

    因特网协议集:
        因特网的协议集称为TCP/IP协议集,协议集的取名表示了TCP和IP协议在整个协议集中的重要性。因特网协议集是对ISO/OSI的简化,其主要功能集中在OSI的第3-4层,通过增加软件模块来保证和已有系统的最大兼容性。


 TCP/IP协议集的分层实施:



 基于因特网的信息流示意图:


         

  IP协议 

       IP协议用来封装TCPUDP消息段。IP为网络硬件提供了一个逻辑地址。这一逻辑地址是一个32位的地址,即IP地址,可以用来将由路由器连接在一起的各个物理网络区分开。IP协议所提供的逻辑IP地址还表示了数据发往的目的网络及在那一网络上的主机地址。这样它就可以用于将数据单元(称为数据报)引向正确的目的地。




IP协议提供的服务

  IP协议是因特网中的基础协议,由IP协议控制传输的协议单元称为IP数据报。IP协议屏蔽下层各种物理网络的差异,向上层(主要是TCP层或UDP层)提供统一的IP数据报。
   IP
协议提供不可靠的、 无连接的、尽力的数据报投递服务。
    
1)不可靠的投递服务

    IP协议无法保证数据报投递的结果。在传输过程中,IP数据报可能会丢失、重复传输、延迟、乱序,IP服务本身不关心这些结果,也不将结果通知收发双方。

   当可靠性很重要时,IP必须与一个可靠的协议(如TCP)配合起来使用。

2)无连接的投递服务

        IP协议是一个无连接的协议,它无需为发送数据报建立虚电路。每一个IP数据报是独立处理和传输的,由一台主机发出的数据报,在网络中可能会经过不同的路径,到达接收方的顺序可能会乱,甚至其中一部分数据还会在传输过程中丢失。

3)尽力的投递服务

    尽最大努力的意思是IP不提供差错检测或跟踪。IP假定了底层是不可靠的,因此尽最大努力传输到目的地,但没有保证。 IP协议软件决不简单地丢弃数据报,只要有一线希望,就尽力向前投递。 IP协议软件执行数据报的分段,以适应具体的网络传输,数据报的合段则由最终结点的IP模块完成。 

IPV4
协议

  目前因特网上广泛使用的IP协议为IPv4,IPv4协议的设计目标是提供无连接的数据报尽力投递服务。

    在一个物理网络上传送的单元是一个包含首部和数据的帧,首部给出了诸如(物理)原网点和目的网点的地址。互联网则把它的基本传输单元叫做一个Internet数据报(datagram),有时称为IP数据报或仅称为数据报。像一个典型的物理网络帧一样,数据报被分为首部和数据区。而且,数据报首部也包含了原地址和目的地址以及一个表示数据报内容的类型字段。数据报与物理网络帧的区别在于:数据报首部包含的是IP地址,而帧的首部包含的是物理地址。下图显示了一个数据报的一般格式。

数据报首部 数据报的数据区

IP数据报的一般格式。IP规定数据报首部格式,包括源和目的IP地址。
IP不规定数据区的格式,它可以用来传输任意数据

    下图显示了在一个数据报中各字段的安排:


 IP数据报的封装
一个网络帧携带一个数据报的这种运输方式叫作封装(Encapsulation)。对底层网络来说,数据报与其他任何要发送的报文是一样的。硬件并不识别数据报的格式,也不利节目的网点的IP地址。因此,当一台机器把一个IP数据报发送到另一台机器时,整个数据报在网络帧的数据部分中运输。

    IP协议屏蔽下层各种物理网络的差异,向上层(主要是TCP层或UDP层)提供统一的IP数据报。相反,上层的数据经IP协议形成IP数据报。IP数据报的投递利用了物理网络的传输能力,网络接口模块负责将IP数据报封装到具体网络的帧(LAN)或者分组(X25网络)中的信息字段。如下图所示,将IP数据报封装到以太网的MAC数据帧。


IP数据报封装在一个帧中,物理网络把包括首部的整个数据报都看作数据传输


IP数据报的寿命:
       寿命TTL(Time To Live,又称生存时间)指明了该数据报在互联网中允许存在的时间,以秒为单位。只要一台机器向网上输入一个数据报,就为它设置一个最大生存时间。当数据报通过的主机和路由器对该数据报进行处理时,要递减其寿命字段的值。若此值为0,就将该数据报从网络上删除。只要一个TTL为0,路由器就丢弃该数据报,并向源网点发送一个出错信息。为数据报设置定时器的思想,保证了即使路由表不可靠而选择了一个循环路由,数据报都不会在网络中无休止的流动下去。
IP路由

  IP数据报的传输可能需要跨越多个子网,子网之间的数据报传输由路由器实现。IP路由算法描述如下:

  IP模块根据IP数据报中的收方IP地址确定是否为本网投递;

  (1)本网投递:(收发方的IP地址具有相同的IP网络标识Netid)

    a)利用ARP协议,取得对应IP地址的物理地址;

    b)将IP数据报进行分段和封装;

    c)将封装后的数据帧(或分组)发往目的地;结束IP路由算法。

  (2)跨网投递:(收发方的IP地址具有不同的IP网络标识Netid)

    a)利用ARP协议,获得路由器的对应端口的物理地址;

    b)将IP数据报进行分段和封装;
    c)将数据帧(或分组)发往路由器;
    d)路由器软件取出IP数据报,重复IP路由算法,将IP数据报向前传递。

  (3)提高IP路由处理效率的方法:

  为了提高处理的效率,执行ARP的主机动态维护IP地址/物理地址的映射表,传输IP数据报之前,查找该映射表。如果表中无对应项,发送ARP报文,取得物理地址,并将IP地址/物理地址的映射关系记入该映射表;如果表中有对应项,直接取得物理地址。由于通信双方传输的信息往往包括多个IP数据报,这种动态缓存的方法可以大大提高ARP的执行效率,并减少为获得物理地址而需的网络流量。


      

ICMP:Internet控制报文协议


        ICMP在IP系统间传递差错和管理报文,是任何IP实现必须和要求的组成部分。可以把ICMP分成两类:差错和查询。查询报文是用一对请求和回答定义的。差错报文通常包含了引起错误的IP包的第一个分片的IP首部(和选项),加上该分片数据部分的前8个字节。

下图显示了所有目前定义的ICMP报文。双线上面的是请求和回答报文,双线下面的是差错报文。



PRC_栏显示了Net/3处理的与协议无关的差错码和ICMP报文之间的映射。对请求和回答,这一列是空的。因为在这种情况

下不会产生差错。如果对一个ICMP差错,这一行为空,说明Net/3不识别该码,并自动丢弃该差错报文。


1.icmp结构

Net/3通过下图中的icmp结构访问某个ICMP报文。



icmp_type标识特定报文,icmp_code进一步制定报文。icmp_cksum的算法与IP首部检验和相同。

联合icmp_hun(首部联合)和icmp_dun(数据联合)按照icmp_type和icmp_code访问多种icmp报文。每个icmp报文都使用

icmphun;只有一部分报文使用icmp_dun。没有使用的字段必须设置为0.

icmp报文时封装在IP数据报中的。


2.ICMP的protosw结构

inetsw[4]的protosw结构描述了icmp,并支持内核和进程对协议的访问。下图显示了该结构。


ipintr对数据报进行分用是根据IP首部中的传输协议编号ip_p。对于ICMP报文,ip_p是1,通过ip_protox选择inetsw[4]。




3.输入处理:icmp_input函数

当一个icmp报文到达时,IP层通过inetsw[4]的pr_input函数,间接调用icmp_input。

在icmp_input中,每一个ICMP报文被处理3次:被icmp_input处理一次;被与ICMP差错报文中的IP分组相关联的传输层协

议处理一次;被记录收到ICMP报文的进程处理一次。

ICMP输入处理过程的总的构成情况如下:


下面分五部分讨论icmp_input:

1.验证收到的报文

2.icmp差错报文

3.icmp请求报文

4.icmp重定向报文

5.icmp回答报文


函数大致流程如下:

判断icmp的报文长度,如果太短,就直接丢弃

          ↓

icmp包结构中包含校验和字段,使用该字段检查icmp的校验和

          ↓

判断icmp的报文类型,如果能够识别,根据报文类型执行相应操作;如果无法识别,则直接执行raw操作rip_input

          ↓

执行raw操作rip_input,rip_input根据报文里含有的协议及源站和目的地址信息,把报文发布给正在监听的进程。


3.1.差错报文处理

当主机发出的数据报无法成功提交给目的主机时,目的主机或中间的路由器生成这些报文,并将它们返回到原来的系统。

下图显示了多种ICMP差错报文的格式:


icmp_input将icmp_type和icmp_code映射到一个协议无关的差错集码上,该差错码是由PRC_常量表示的,且PRC_常量是有

顺序的。如下图所示:


然后icmp_input调用传输层协议的pr_ctlinput函数,该函数根据原始数据报的ip_p,把分组分用到正确的协议,从而构造

出原始的IP数据报。


3.2.请求处理

Net/3响应具有正确格式的ICMP请求报文,把无效的ICMP请求报文传给rip_input。除路由器通告报文外,大多数Net/3所接收

的ICMP请求报文都生成回答报文。为避免回答报文分配新的mbuf,icmp_input把请求报文的缓存转成成回答缓存,并返回给

发送方。

3.2.1.回显询问:ICMP_ECHO和ICMP_ECHOREPLY

ping程序就是使用了回显询问请求。下图是ICMP回显请求和回答报文的结构。


icmp_code总是0,icmp_id和icmp_seq设置成请求的发送方,回答中也不做修改。源系统可以用这些字段匹配请求和回答。

icmpdata中到达的所有数据也被反射。


3.2.2.时间戳询问:ICMP_TSTAMP和ICMP_TSTAMPREPLY

ICMP时间报文如下图所示:


请求的发送方设置icmp_otime(发出请求的时间),icmp_rtime(收到请求的时间)和icmp_ttime(发出回答的时间)由回答

的发送方设置。所有时间都是从UTC午夜开始的毫秒数。如果时间值没有以标准单位记录,就把高位置位,与IP时间戳选项

一样。


3.2.3.地址掩码询问:ICMP_MASKREQ和ICMP_MASKREPLY

该请求可以发现某个网络上使用的子网掩码。

除非系统被明确地配置成地址掩码的授权代理,否则,RFC1122禁止向其发送掩码回答。这样就避免系统与所有向它发送请求

的系统共享不正确的地址掩码。如果没有管理员授权回答,系统也要忽略地址掩码请求。

ICMP地址掩码请求和回答如下图所示:



3.2.4.信息查询:ICMP_IREQ和ICMP_IREQREPLY
ICMP信息报文已经过时。它们企图广播一个源和目的站地址字段的网络部分为全0的请求,使系统发现连接的IP网络的数量。
响应该请求的主机将返回一个填好网络号的报文,主机还需要其他办法找到地址的主机部分。


3.2.5.路由器发现:ICMP_ROUTERADVERT和ICMP_ROUTESOLICIT

RFC1256定义了ICMP路由器发现报文,Net/3内核不直接处理这些报文,而由rip_input把它们传给一个用户级守护程序,由它

发送和响应这种报文。


3.3.重定向处理

下图显示了ICMP重定向报文的格式。


        重定向信息被传给rtredirect,由这个函数更新路由表。重定向的目的地址被传给pfctlinput,由它通告重定向的所有协议域,使

协议有机会把缓存的到目的站的路由作废。


3.4.回答处理

内核从不处理任何ICMP回答报文,ICMP请求由进程产生,内核从不产生请求。所以内核把它接收的所有回答传给等待ICMP

报文的进程。内核直接将报文传给rip_input交给传输层进行处理。


3.5.输出处理

有几种方法产生外出的报文。IP调用icmp_error来产生和发送ICMP差错报文。icmp_reflect发送回答报文。同时,进程也可能

通过原始ICMP协议生成ICMP报文。下图显示了这些函数与ICMP外出处理之间的关系。



3.6.icmp_sysctl函数

IP的icmp_sysctl函数只支持下图中列出的选项。系统管理员可以用sysctl程序修改该选项。


ARP协议

还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么?我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。

ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机,而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

一个典型的arp缓存信息如下,在任意一个系统里面用“arp -a”命令:

Interface: 192.168.11.3 --- 0x2
  Internet Address      Physical Address      Type
  192.168.11.1          00-0d-0b-43-a0-2f     dynamic
  192.168.11.2          00-01-4a-03-5b-ea     dynamic

 

 
都会得到这样的结果。

这样的高速缓存是有时限的,一般是20分钟(伯克利系统的衍生系统)。


TCP协议

      TCP/IP协议簇指明了两个运输层协议:UPD和TCP。TCP在应用层和IP层之间,是应用程序和网络操作的中介物。运输层协议具有几种责任,一种责任就是创建进程到进程(程序到程序)的通信,TCP是用端口号来完成这种通信。另一种责任就是在运输层提供流量控制和差错控制机制,TCP是用滑动窗口协议完成流量控制,它使用确认分组、超时和重传来完成差错控制。

    运输层还应负责为应用程序提供连接机制,这些应用程序应当能够向运输层发送数据流。在发送端运输层的责任应当是和接收端之间建立连接,将数据流分割成为可运输的单元,将他们编号,然后逐个发送他们。运输层在接收端的责任是等待属于同一个进程的所有不同单元的到达,检查并传递那些没有差错的单元,并将他们作为一个流交付给接收进程。当整个流发送完毕后,运输层应当关闭这个连接,TCP完成所有上述的任务。

    TCP叫做面向连接的、可靠的运输协议,它给IP服务添加了面向连结和可靠性的特点。

TCP协议的特性:

    TCP协议在IP协议软件提供的服务的基础上,支持面向连接的、可靠的、面向流的投递服务。
 

主要特性

含      义

(1)面向数据流的投递服务应用程序之间传输的数据可视为无结构的字节流(或位流),流投递服务保证收发的字节顺序完全一致。
(2)面向连接的投递服务数据传输之前,TCP模块之间需建立类似虚电路的连接,其后的TCP报文在此连接基础上传输。
(3)可靠传输服务TCP是可靠的传输协议,它使用确认机制来检查数据是否安全和完整的到达。接收方根据收到的报文中的校验和,判断传输的正确性:如果正确,进行应答,否则丢弃报文。发送方如果在规定的时间内未能获得应答报文,自动进行重传。
(4)缓冲传输TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。缓冲传输允许将应用程序的数据流积累到一定的体积,形成报文,再进行传输。
(5)全双工传输TCP模块之间可以进行全双工的数据流交换,即数据可在同一时间进行双向流动。当分组从A发往B时,它也可以携带对B发来的分组的确认。这就叫捎带。
(6)流量控制TCP模块提供滑动窗口机制,支持收发TCP模块之间的端到端流量控制。

TCP端口、连接与端点:

    TCP允许一台机器上的多个应用程序同时进行通信,它能对接收到的数据针对多个应用程序进行去复用操作。TCP是用了端口号来标识一台机器上的多个目的进程。没个端口都被赋予一个小的整数以便识别。

    TCP端口与一个16位的整数值相对应,该整数值也被称为TCP端口号。需要服务的应用进程与某个端口号进行联接(Binding),这样TCP模块就可以通过该TCP端口与应用进程通信。

      由于IP地址只对应到因特网中的某台主机,而TCP端口号可对应到主机上的某个应用进程。TCP使用连接而不是协议端口作为基本的抽象概念,连接使用一对端点来标识。

    TCP把端点定义为一对整数,即(host,port),其中host是主机的地址,port则是该主机上的TCP端口号。例如,端点(202.114.206.234,80)表示的是IP地址为202.114.206.234的主机上的80号TCP端口。由于TCP使用两个端点来识别连接,所以一个机器上的某个TCP端口号可以被多个连接所共享。



TCP/UDP应用程序端口号分配
端口号的取值可由用户定义或者系统分配。TCP端口号采用了动态和静态相结合的分配方法,对于一些常用的应用服务(尤其是TCP/IP协议集提供的应用服务),使用固定的端口号;例如:电子邮件(SMTP)的端口号为25,文件传输(FTP)的端口号为21,WEB服务的端口号为80,远程登录服务(TELNET)的端口号是23等。

  对于其它的应用服务,尤其是用户自行开发的应用服务,端口号采用动态分配方法,由用户指定操作系统分配。

  TCP/IP约定:0—1023为保留端口号,标准应用服务使用;1024以上是自由端口号,用户应用服务使用。
 



TCP协议的窗口机制:

TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下:

(1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区; 

(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认; 

(3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。 

  TCP的窗口机制和确认保证了数据传输的可靠性和流量控制。

    TCP的滑动窗口的要点如下:

    1)源站不一定要发送出整个窗口大小的数据;
    2)窗口大小可由目的站将其增大或减小;
    3)目的站可在任何时候发送确认。


滑动窗口图示:


上图表示滑动窗口大小为10,在收到目的站的任何确认之前,源站可以发送一直到10个字节。但是,源站若收到对前3个字节的确认,它就将窗口向右滑动3个字节。

TCP数据的封装
    要将来自应用程序的报文发送到另一端,TCP协议要将报文进行封装和拆装。如下图示:



UDP协议

    UDP,即用户数据报协议(User Datagram Protocol)。作为运输层协议,UDP使用端口号来完成进程到进程之间的通信,UDP在运输层提供非常有限的流控制机制,在收到分组时没有流控制也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组有一个差错,它就悄悄的丢弃这个分组。UDP不负责为进程提供连接机制,它只从进程接收数据单元,并将他们不可靠的交付给接收端。数据单元必须足够小,能够装进到一个UDP分组中。

    所以,UDP提供的是无连接的、不可靠的运输服务。

    UDP的适用范围:

    1)UDP适用于需要简单的请求-响应通信,而较少考虑流控制和差错控制的进程;
    2)UDP适用于具有内部流控制和差错控制机制的进程。例如,简单文件传送协议(TFTP)的进程就包括流控制和差错控制,它能够很容易的使用UDP;
    3)对多播和广播来说,UDP是个合适的运输协议。多播和广播能力已经嵌入在UDP软件中,但没有嵌入到TCP软件中;
    4)UDP可用于进程管理,如SMTP;
    5)UDP可用于某些路由选择更新协议,如路由选择信息协议RIP。

    使用UDP协议的好处:在少量数据的传输时,使用UDP协议传输信息流,可以减少TCP连接的过程,提高工作效率。

    UDP协议的不足:当使用UDP协议传输信息流时,用户应用程序必须负责解决数据报排序,差错确认等问题。

    在多媒体应用中,常用TCP支持数据传输,UDP支持音频/视频传输。


UDP熟知端口及插口地址:
1、UDP熟知端口号
表1:UDP使用的熟知端口
端口 协议 说     明
7ECHO将收到的数据报回送到发送器
9DISCARD丢弃任何收到的数据报
11USERS活跃的用户
13DAYTIME返回日期和时间
53NAMESERVER域名服务
67BOOTPS下载引导程序信息的服务器端口
68BOOTPC下载引导程序信息的客户端口
69TFTP简单文件传送协议
111RPC远程过程调用
123NTP网络时间协议
161SNMP简单网络管理协议
162SNMP简单网络管理协议

协议端口号的指定的两种方式:

    方式一:使用集中式管理机构。这个机构负责指派协议端口并发布这些指派。所有的软件在设计时都要遵从这些指派的规定。这种方式又称为统一指派(UNIVERSAL ASSIGNMENT),这些被管理机构指定的端口指派也叫知名端口(WELL-KNOWN PORT)的指派。

    方式二:使用动态绑定(DYNAMIC BINDING)。当一个应用程序需要使用端口时,网络软件就指定一个端口。为了知道另一台机器上的当前端口号,就必须送出一个请求报文,然后目的主机进行回答,把正确的端口号送回来。

TCP/IP采用一种混合方式对端口地址进行管理,对某些常用服务的端口进行指派,但为本地站点和应用程序留下了很大的端口取值范围。

2、插口地址

UDP需要两个标识符,IP地址和端口号。一个IP地址与一个端口号合起来就叫做插口地址(SOCKER ADDRESS)。客户插口地址唯一地定义了客户进程,而服务器插口地址唯一地定义了服务器进程(见下图)。


要使用UPD的服务,需要一对插口地址:客户端插口地址和服务器端插口地址。至四种信息是IP首部和UDP首部的一部分。IP首部包括IP地址,UDP首部包括端口号。

UDP数据的封装与拆装
    要从进程将报文发送到另一个进程,UDP协议就要将报文进行封装和拆装,如下图:


    封装:当进程有报文要通过UDP发送时,它就将此报文连同一对插口地址以及数据的长度传递给UDP。UDP收到数据后就加上UDP首部。然后UDP就将这用户数据报连同插口地址一起传递给IP。IP加上自己的首部,在协议字段使用值17,指出这数据是从UDP协议来的。这个IP数据报在传递给数据链路层。数据链路层收到IP数据报后,加上自己的首部(可能还有尾部),再传递给物理层。物理层将这些比特编码为电信号或光信号将其发送到远程的机器上。

  拆装:当这个报文到达目的只及时,物理层对信号解码,将其变为比特,传递给数据链路层。数据链路层使用其首部(和尾部)检查数据。若无差错,则剥去首部和尾部,并将数据报传递给IP,IP软件进行它的检查。若无差错,就剥去首部,将用户数据报连同发送端和接收端的IP地址一起传递给UDP,UDP使用检验和对整个用户数据报进行检查。若无差错,则剥去首部,将应用数据连同发送端的插口地址一起传递给接收进程。在需要回答收到的报文时,就应将发送端的插口地址传递给进程。


TCP/IP协议存在的问题
    近年来,随着INTERNET的不断发展和网络多媒体技术的广泛应用,如电视会议系统、网络电话、视频点播系统以及虚拟现实技术等,采用TCP/IP协议的Internet/Intranet网络系统存在如下主要问题:

    1)通信线路拥挤:主要由Internet的高速发展所引起的,网络用户急剧增加;另外,网上业务的多元化,如多媒体应用和电子商务等,对网络带宽提出了更高的要求。

    2)数据到达时间的抖动:在多媒体应用中,所传数据一到达接收端,就立刻进行“再生”处理。当检测到数据丢失和错误时,要求重新发送,引起发送端和接收端的时间间隔不同步。如果数据到达接收端的时间抖动得非常严重,将对电视和视频点播等适时多媒体应用产生不利的影响。

    为了解决上述问题,在TCP/IP上开发了支持多媒体通信的RTP/RSVP协议:RTP(Real Time Transport Protocol,实时传输协议 )是支持适时多媒体通信而设计的传输协议。RTP由两种协议组成:数据传输协议(FTP)和实时控制协议(RTCP)。FTP负责多媒体收据的传输,RTCP管理控制信息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值