以太网帧格式
- 格式:doc
- 大小:305.51 KB
- 文档页数:14
///定义IP头
struct IpHeader { BYTE Version:4; //IP协议版本号 BYTE hLen:4; //IP报头长度,以每四个字节为一单位 BYTE Tos; //服务类型字段 WORD TotalLen; //IP数据报总长度,以字节为单位 WORD Ident; //分段标识符 WORD FragAndFlags; //分段偏移量 BYTE TTL; //生命周期 BYTE Proto; //协议字段,表示放在此IP数据报中传送的是何种协议的数据 WORD CkSum; //校验和 DWORD SourceIP; //源IP地址 DWORD DestIP; //目的IP地址 };
///定义IP选项头
struct IpOptionHeader { BYTE DupliFlag:1; //复制标志 BYTE OptionClass:2; //选项类 BYTE OptionNum:5; //选项号 BYTE Len; //IP选项的长度 BYTE Ptr; //指针 BYTE Fill; //选充字段 };
///定义ICMP报文头
struct ICMPHeader { USHORT iType:8; //报文类型 USHORT iCode:8; //报文说明 WORD iCkSum; //整个ICMP报文的校验和 WORD iID; //标识ID WORD iSeq; //标识序号 };
基于IP寻址的多媒体通信网(2) 蒋林涛 这一讲介绍基于IP寻址的多媒体通信网的通信协议。IP寻址的通信网是基于TCP/IP协议的,因此IP协议和TCP协议是IP网中的一对重要协议,同时为了能保证实时业务在IP网中很好运行,还需要使用实时传送协议(协议RTP)和实时传送控制协议(RTCP)。为了给实时业务或其它特定业务提供足够宽的通道,还要用到资源预留协议(RSVP)。这5个通信协议是IP网的主要通信协议(四层以下),它是IP网的通信基础,IP网的所有业务基本都是在这些通信协议的基础上建立起来的。
1 IP协议 TCP/IP协议是为包含多种物理网技术而设计的,而这种包容性主要体现在IP层当中。我们知道,各种网络技术的帧格式、地址格式等上层协议可见的因素差别很大,设置IP层的重要思想之一就是通过IP协议向上层(TCP/IP等)提供统一的IP数据报和IP地址,使得各种物理帧的差异性对上层协议不复存在,从而达到屏蔽低层细节提供一致性向上接口的目的。 IP协议主要涉及两个方面的内容:第一是IP层的数据报传输机制和IP层的无连接服务;第二是IP数据报的数据格式。 1.1 IP数据报传输机制 IP数据报传输是一种简洁而有效的分组交换方式,为了达到最高传输速率,它放弃了可以放弃的任何可靠性工作(如检错、重传等),能尽快将数据报传往信宿。IP数据报传输的关键问题是分片和重组。分片是为了适应物理网的最大传输单元(MTU),重组则反之。数据报传输的另一关键问题是数据报延时控制,数据报传输的一大特点是随机寻径,因而从信源到信宿的延时也具有随机性。由于某种原因数据报会进入一条循环路径,无休止地在网中流动,这种情况应给予控制,IP数据报采用“生存时间法”来进行控制。 1.2 IP数据报的数据格式 IP数据报的数据格式如图1所示。 IP数据报分为报头和数据区两部分,报头是为网络提供一系列信息供寻址等使用,数据区则是放置用户数据的。在IP数据报中报头长为24B,这24B又分为若干个字段,每一个字段有其特定的含义。下面对各字段的功能作逐一描述。 IP数据报中第一个字段为“版本”字段,其长度为4bit,代表IP协议的版本号,目前使用的版本号为“4”。 第二个字段为“报头长度”,其长度为4bit,它指出字长为32bit的报头长度。在图1中IP数据报除IP选项字段和填充字段外,其它各字段均为定长字段。各定长字段的长度和为20B,这样不含选项的IP报的报头长度为“5”;一个含选项的IP数据报的报头长度则取决于选项的长度。但是报头必须是32bit的整数倍,否则用“0”来填充。 第三个字段为“服务类型”字段,其长度为8bit,其结构如图2所示。 在“服务类型”数据字段中,前3个bit(0~2)为优先级,共有“0”~“7”8个优先级,其中“0”为一般用户优先级,“7”为网络控制优先级。 D、T、R 3位表示本数据报所希望的传输类型。其中,D比特置位代表要求网络能提供低的时延,T比特置位代表要求网络能提供高的吞吐量,R比特置位表示要求网络提供高的可靠性。目前这些比特位只是用户要求,对网络不具有强制性。与之相似的是优先级同样对网络没有强制性,而目前大多数网络对此一般不作处理。但服务类别的字段是很重要的,它为今后业务的发展保留了进一步采用必要技术的手段。 第四个字段为“总长”字段,其长度为16bit。它指示整个IP数据报的长度,以字节为单位。由于该字段为16bit长,因而IP包的最大长度可达216--1=65535B≈64kB。 第五、六、七3个字段是用于分片和片的重组。因为在各种不同物理网中,对帧的大小有不同的规定(即对每一个物理网都有一个最大传输单元MTU的规定),很显然一个IP包的尺寸不可能正好等于一个MTU的尺寸,这时在发送时,IP包要进行分片装入MTU中进行发送,在接收时要将片进行重组还原成IP包。第五、六、七3个字段就是为此目的而设计的。 第八字段为“生存时间”,其长度为8bit。它表示一个数据报的生存时间,单位为s。其主要用途是防止数据报在网内的一条循环路径中无休止地流动,白白浪费网络资源。数据报生存期一到,该数据报即从网内删除。 第九字段为“协议”,其长度为8bit,它表示本数据报内数据区中数据采用的协议,即它表示数据区内数据的格式(如TCP、VDP等)。 第十字段是“报头检验和”,长度为16bit。其作用是以此保证报头的完整性和正确性。 第十一字段是“信源IP地址”,第十二字段是“信宿IP地址”,其长度均为32bit。这两个地址分别表示本IP数据报发送者(信源)和接收者(信宿)的地址,在整个数据的报传输过程中,无论经过什么路径,无论怎样分片,这两个字段均保持不变。 其它还可以有一些选项字段如源路径、路径记录和时戳等。 在IP数据报的报头下,紧接的是用户数据字段,用户数据字段的最大长度为(2 16-1)B,这个字段放置的是用户真正要传送的信息数据。 2 TCP协议和UDP协议 在IP网中运输层有两个并列的协议:TCP(运输控制协议)和UDP(用户数据报协议)协议。TCP是面向连接的,它提供高可靠性服务;UDP是无连接的,它提供高效率的服务。高可靠性的TCP用于一次传输要交换大量报文的情况(如:文件传输、电子信箱、远程登录等),高效率的UDP用于一次交换少量报文或实时性要求较高的信息(如:IP电话、会议系统、交易型应用及一些管理和控制信息)。 2.1 UDP协议 用户数据报协议UDP(User Datagram Protocal)建立在IP协议之上,同IP协议一样提供无连接数据报传输。它不提供可靠性通信服务,而是提供高效及时的用户数据报服务。相对于IP协议,它唯一增加的能力是提供协议端口,以保证进程通信。UDP报文的格式如图3所示。
从报文的格式可以看出,报头是很小的(仅8B),因而UDP的报文效率是很高的。 2.2 TCP协议 运输控制协议TCP是运输层的另一个协议,除了提供和UDP一样的进程通信能力外,其主要特点是可靠性很高。其主要工作是:连接管理、流量控制和崩溃恢复等。 TCP协议是建立不可靠的IP协议之上的,IP协议不可能提供任何可靠性机制,因此TCP的可靠性完全由自身来实现。TCP协议采用的最基本可靠性技术是:确认与超时重传、流量控制和拥塞控制。 (1)确认与超时重传 TCP流的特点是无结构的字节流,流中数据是一个个字节构成的序列,而无任何可供解释的结构,因而TCP的段是可变长度的。TCP协议中的确认和重传机制是所谓的“累计确认”,即TCP协议中的确认是针对流中的字节,而不是段。一般情况下,接收方确认的是已正确收到的字节流,每一个确认指出下一个希望接收的字节。 累计确认的优点之一是在变长段传输方式下不会产生二义性;另一个优点是确认丢失后不一定导致重传。累计确认的缺点是发送方不能获得关于所有成功的段传输的信息。累计确认和超时重传提供了一定的数据传送可靠保证。 (2)TCP的拥塞控制 在IP网中,拥塞是由于路由器中的数据超载而引起的,是网络能力不足的表现。一旦发生拥塞,路由器将会抛弃一定量的数据报,从而导致重传,大量的重传又会进一步加强拥塞。这种恶性循环有可能导致整个网无法正常工作。因此,简单地采用确认超时重传技术并不能完全解决可靠性传输问题。TCP还必须提供适当机制以进行拥塞控制。TCP的拥塞控制也是基于滑动窗口协议的,通过限制发送端滑动窗口的尺寸而达到控制拥塞的目的。 具体地说,TCP通过控制发送窗口的大小来控制拥塞。决定发送窗口大小的因素有两个:第一是接收方约定的窗口大小,第二是发送端的拥塞窗口的限制。发送窗口的大小是取两者之中的最小者。在非拥塞状态下,拥塞窗口和接收方通告窗口的大小相等。一旦发现拥塞,TCP将减小拥塞窗口。为了迅速抑制拥塞,拥塞窗口以几何级数减小;拥塞结束,则采用算术级数来恢复窗口直到拥塞窗口等于接收方通告的窗口。 采用以上这些技术后,就可以很好地解决可靠性传输问题。 TCP段是不定长的,为提高传输效率,TCP软件往往要收集到足够的数据后才发送一段,这种方式在实时性要求很高的场合是不适用的。为此,TCP提供强迫数据传输机制。TCP向应用程序提供“PUSH”操作,以强迫传输当前流中的数据不必等待缓冲区满。当TCP软件中收到PSH操作报文后,将段头中PSH位置