TCPIP包格式.docx

上传人:b****5 文档编号:7405123 上传时间:2023-01-23 格式:DOCX 页数:14 大小:213.96KB
下载 相关 举报
TCPIP包格式.docx_第1页
第1页 / 共14页
TCPIP包格式.docx_第2页
第2页 / 共14页
TCPIP包格式.docx_第3页
第3页 / 共14页
TCPIP包格式.docx_第4页
第4页 / 共14页
TCPIP包格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

TCPIP包格式.docx

《TCPIP包格式.docx》由会员分享,可在线阅读,更多相关《TCPIP包格式.docx(14页珍藏版)》请在冰豆网上搜索。

TCPIP包格式.docx

TCPIP包格式

以太网帧格式

以下是各种封装:

1.以太网II封装:

以太网技术的基础是以太网帧,也作标准以太网帧,也称为ARPA,即以太网II帧(最初的以太网II标准也称为DIX,由Digital,Intel和Xerox三家发起公司的首字母拼合而成)。

帧格式如下:

图1:

以太网II报文格式

下面解释以太网II帧中的各个字段:

∙Preamble—也作“Syncword”,用来同步。

(在这里为10101010)

∙Des-MAC—此目的地址可以是广播地址0xFFFFFFFFFFFF;可以是基于目的节点MAC地址的特定的48比特的单播地址;或者多播地址。

此MAC地址可以从协议同步期间消息的源地址字段中找到。

∙Sou-MAC—此源地址是发送方的48比特的MAC地址。

∙Type—即“以太网类型”,此字段用于识别上层协议。

(详见下文)

∙Payload—负载,即数据,包含了封装的数据(如:

IP分组)。

以太网II的数据有效长度范围是46~1500字节。

∙FCS—此字段包含32比特的循环冗余校验(CyclicRedundancyCheck,CRC)值,用来校验损坏的帧。

最初的以太网II帧格式有一些缺陷。

为了允许冲突检测,10Mbits/s以太网要求分组大小最小为64字节。

这就意味着如果帧长达不到标准就必须用0来填充短帧。

因此,上层协议需要包含一个“长度”字段来将实际数据与填充值区分开来。

幸运的是,为“以太网类型”字段所分配的值—0x0600XNS(施乐)、0x0800IP(Internet协议)和0x6003DECNET—总是大于十进制值1500(0x05DC)这一最大帧长度。

所以IEEE的802委员会对这一任务的解决方案提供了一个标准,即802.3。

此方法通过以长度两个8位组的“类型/协议”字段代替同样两个8位组的“以太网类型”字段。

从而将以太网II帧与802.3帧区分开来。

具体如下:

∙如果此字段值大于十进制值1500,则此字段表示以太网类型,且是类型II。

∙如果此字段值小于等于十进制值1500,则此字段表示长度,且是802.3。

(相见2.IEEE802.3LLC封装中的描述)

2.IEEE802.3LLC封装:

由于在改进了以太网II帧后仍然需要一个新的分组来表示类型以识别上层协议,因此在802.3的基础帧中的“长度”字段后面又紧跟了一个逻辑链路控制首部(LogicalLinkControl,LLC,遵循IEEE802.2)。

帧格式如下:

下面解释IEEE802.3LLC帧中的各个字段:

∙Preamble—同以太网II帧。

(此为10101011)

∙Des-MAC—同以太网II帧。

∙Sou-MAC—同以太网II帧。

∙Len—即“长度”字段,此处为以太网II帧中“以太网类型”字段的替换,表示帧的长度,但是不包括前同步码(Preamble)、FCS、目的和源MAC地址以及长度字段本身等字段。

∙DSAP—(DestinationServiceAccessPoint,目标服务接入点)字节,8位比特。

当此值为0xAA时,表示子网访问协议(SubnetworkAccessProtocol,SNAP)。

∙SSAP—(SourceServiceAccessPoint,来源服务接入点)字节,8位比特。

当此值为0xAA时,表示子网访问协议(SubnetworkAccessProtocol,SNAP)。

∙CTRL—“控制”字段,指定了LLC帧的类型。

∙Payload—同以太网II帧。

802.3LLC的数据有效长度范围是43~1497字节。

∙FCS—同以太网II帧。

值须重新计算。

3.IEEE802.3SNAP封装:

继承了802.3LLC的帧格式,并且添加了SNAP字段。

下面解释IEEE802.3SNAP帧中的各个字段:

∙Preamble—同802.3LLC帧。

∙Des-MAC—同802.3LLC帧。

∙Sou-MAC—同802.3LLC帧。

∙Len—同802.3LLC帧。

∙DSAP—在此值为0xAA,表示SNAP。

∙SSAP—在此值为0xAA。

∙CTRL—同802.3LLC帧。

∙SNAP—即“子网访问协议(SubnetworkAccessProtocol)”,SNAP首部包括3个字节的厂商代码和2个字节的本地代码。

厂商代码为0x000000时表示本地代码是一个以太网类型II以便能向后兼容。

这种新格式将“以太网类型”字段从它在以太网II中的原始位置向右移动的8个字节。

∙Payload—同802.3LLC帧。

802.3SNAP的数据有效长度范围是38~1492字节。

∙FCS—同802.3LLC帧。

值须重新计算。

4.IEEE802.1Q封装:

802.1Q的首部并非实际封入原始帧中,而是以太网II帧里,在原始帧里的MAC源地址字段与“以太网类型”字段之间添加一个32位元的域(field)。

下面解释IEEE802.1Q帧中的各个字段:

∙Preamble—同以太网II帧。

∙Des-MAC—同以太网II帧。

∙Sou-MAC—同以太网II帧。

∙802.1QHeader—表示了这是一个VLAN的帧,保存了VLAN的信息。

(详见下文)

∙Type—同以太网II帧。

∙Payload—同以太网II帧。

数据有效长度范围是46~1500字节。

∙FCS—同以太网II帧。

值须重新计算。

其中的802.1Q头部封装遵守如下格式:

∙TPID—标签协议识别符(TagProtocalIdentifier,TPID):

一组16位元的域,用来识别802.1Q帧,其数值被设定在0x8100以用来辨别某个IEEE802.1Q的帧为已被标签头部,因为这个域所被标定位置与以太网类型II帧中的“以太网类型”字段在未标签帧的域相同,这是为了用来区别未标签的帧。

∙TCI—标签控制信息(TagControlInformation,TCI):

长度为2字节,包含有PCP、CFI和VID3个字段。

∙PCP—优先权代码点(PriorityCodePoint,PCP):

以一组3位元的域当作IEEE802.1P优先权的参考,从0(最低)到7(最高),用来对数据流(音讯、影像、档案等等)作传输的优先级,也被称为“服务等级(ClassofService,CoS)”。

∙CFI—标准格式标识符(CanonicalFormatIndicator,CFI):

1位元的域。

若这个域的值为1,则MAC地指为非标准格式;若为0,则为标准格式;在以太交换器中它通常默认为0。

在乙太和令牌环中,CFI用来解决两者的兼容性问题。

若帧在以太端中接收数据,则CFI的值必须设为1,且这个端口不能与未标签的其他端口桥接。

∙VID—虚拟局域网识别符(VLANIdentifier,VID):

12位元的域,用来具体指出帧是属于哪个特定VLAN的。

值为0时,表示帧不属于任何一个VLAN;此时,802.1Q标签仅代表优先权。

12位元的值0xFFF为保留值,其他的值都可用来做为总共4094个VLAN的标识符。

在桥接器上,VLAN1在管理上作为保留值。

5.IEEE802.1AD封装:

双重标记(IEEE802.1AD),也叫作QinQ,对于互联网服务提供商(ISP)是非常有用的。

它允许已被打上VLAN标签的混合数据从客户端送出时ISP仍然可以在内部使用VLAN。

下面解释IEEE802.1AD帧中的各个字段:

∙Preamble—同以太网II帧。

∙Des-MAC—同以太网II帧。

∙Sou-MAC—同以太网II帧。

∙802.1QOuterTag—外部标签(nexttoSourceMACandrepresentingISPVLAN)会先于内部标签(inner)被解封装。

此时,一个可变的TPID在16进位值可能为9100、9200或是9300,通常作为外部标签;然而在值为88a8时会违反802.1AD而无法作为外部标签。

∙802.1QInnerTag—内部标签,格式同IEEE802.1Q头部。

∙Type—同以太网II帧。

∙Payload—同以太网II帧。

数据有效长度范围是46~1500字节。

FCS—同以太网II帧。

值须重新计算。

以太类型值(16进制)

对应协议

0x0000-0x05DC

IEEE802.3长度

0x0101–0x01FF

实验

0x0600

XEROXNSIDP

0x0660

0x0661

DLOG

0x0800

网际协议(IP)

0x0801

X.75Internet

0x0802

NBSInternet

0x0803

ECMAInternet

0x0804

Chaosnet

0x0805

X.25Level3

0x0806

地址解析协议(ARP:

AddressResolutionProtocol)

0x0808

帧中继ARP(FrameRelayARP)[RFC1701]

0x6559

原始帧中继(RawFrameRelay)[RFC1701]

0x8035

动态DARP(DRARP:

DynamicRARP)反向地址解析协议(RARP:

ReverseAddressResolutionProtocol)

0x8037

NovellNetwareIPX

0x809B

EtherTalk

0x80D5

IBMSNAServicesoverEthernet

0x80F3

AppleTalk地址解析协议(AARP:

AppleTalkAddressResolutionProtocol)

0x8100

以太网自动保护开关(EAPS:

EthernetAutomaticProtectionSwitching)

0x8137

因特网包交换(IPX:

InternetPacketExchange)

0x814C

简单网络管理协议(SNMP:

SimpleNetworkManagementProtocol)

0x86DD

网际协议v6(IPv6,InternetProtocolversion6)

0x8809

OAM

0x880B

点对点协议(PPP:

Point-to-PointProtocol)

0x880C

通用交换管理协议(GSMP:

GeneralSwitchManagementProtocol)

0x8847

多协议标签交换(单播)MPLS:

Multi-ProtocolLabelSwitching

0x8848

多协议标签交换(组播)(MPLS,Multi-ProtocolLabelSwitching

0x8863

以太网上的PPP(发现阶段)(PPPoE:

PPPOverEthernet

0x8864

以太网上的PPP(PPP会话阶段)(PPPoE,PPPOverEthernet

0x88BB

轻量级访问点协议(LWAPP:

LightWeightAccessPointProtocol)

0x88CC

链接层发现协议(LLDP:

LinkLayerDiscoveryProtocol)

0x8E88

局域网上的EAP(EAPOL:

EAPoverLAN)

0x9000

配置测试协议(Loopback)

0x9100

VLAN标签协议标识符(VLANTagProtocolIdentifier)

0x9200

VLAN标签协议标识符(VLANTagProtocolIdentifier)

0xFFFF

保留

IP包格式

①版本:

占4位,指IP协议的版本。

通信双方使用的

IP协议版本必须一致。

日前广泛使用的IP协议版本号为4(即IPv4)。

IPv6目前还处于起步阶段。

②首部长度:

占4位,可表示的最大十进制数值是15。

请注意,

这个字段所表示数的单位是32位字(1个32位字长是4字节),

因此,当IP的首部长度为1111时(即十进制的15),

首部长度就达到60字节。

当IP分组的首部长度不是4字节的整数倍时,

必须利用最后的填充字段加以填充。

因此数据部分永远在4字节的整数倍开始,

这样在实现IP协议时较为方便。

首部长度限制为60字节的缺点是有时可能不够用。

这样做的目的是希望用户尽量减少开销。

最常用的首部长度就是20字节(即首部长度为0101),

这时不使用任何选项。

③服务:

占8位,用来获得更好的服务。

这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。

1998年IETF把这个字段改名为区分服务DS(DifferentiatedServices)。

只有在使用区分服务时,这个字段才起作用。

④总长度:

总长度指首都及数据之和的长度,单位为字节。

因为总长度字段为16位,所以数据报的最大长度为216-1=65535字节。

在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元MTU(MaximumTransferUnit)。

当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

⑤标识(Identification):

占16位。

IP软件在存储器中维持一个计数器,每产生一个数据报,

计数器就加1,并将此值赋给标识字段。

但这个“标识”并不是序号,

因为IP是无连接的服务,数据报不存在按序接收的问题。

当数据报由于长度超过网络的MTU而必须分片时,

这个标识字段的值就被复制到所有的数据报的标识字段中。

相同的标识字段的值使分片后的各数据报片最后能正确地重装成为

原来的数据报。

⑥标志(Flag):

占3位,但目前只有2位有意义。

标志字段中的最低位记为MF(MoreFragment)。

MF=1即表示后面“还有分片”的数据报。

MF=0表示这已是若干数据报片

中的最后一个。

标志字段中间的一位记为DF(Don'tFragment),

意思是“不能分片”。

只有当DF=0时才允许分片。

⑦片偏移:

占13位。

较长的分组在分片后,

某片在原分组中的相对位置。

也就是说,相对用户数据字段的起点,

该片从何处开始。

片偏移以8个字节为偏移单位。

这就是说,每个分片的长度一定是8字节(64位)的整数倍。

⑧生存时间:

占8位,生存时间字段常用的英文缩写是

TTL(TimeToLive),其表明数据报在网络中的寿命。

由发出数据报的源点设置这个字段。

其目的是防止无法交付的数据报无限制地在因特网中兜围子,

因而白白消耗网络资源。

最初的设计是以秒作为TTL的单位。

每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。

若数据报在路由器消耗的时间小于1秒,就把TTL值减1。

当TTL值为0时,就丢弃这个数据报。

⑨协议:

占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

⑩首部检验和:

占16位。

这个字段只检验数据报的首部,

但不包括数据部分。

这是因为数据报每经过一个路由器,都要重新计算一下首都检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。

不检验数据部分可减少计算的工作量。

⑾源地址:

占32位。

⑿目的地址:

占32位。

2.IP数据报首部的可变部分

IP首都的可变部分就是一个可选字段。

选项字段用来支持排错、测量以及安全等措施,内容很丰富。

此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。

某些选项只需要1个字节,它只包括1个字节的选项代码。

但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。

增加首都的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。

这就增加了每一个路由器处理数据报的开销。

实际上这些选项很少被使用。

新的IPv6就将IP数据报的首部长度做成固定的。

TCP包格式

源端口和目的端口:

每个TCP段都包含源端和目的端的端口号,用于寻找发起端和拉收端应用进程。

这两个值加上IP首部中的源IP地址和目的IP地址唯一确定一个TCP连接。

有时,一个IP地址和一个端口号也称为一个套接字(socket)。

这个术语出现在最早的TCP规范(RFC793)中。

套接字对(socketpair)(包含客户IP地址、客户端口号、服务器IP地址和服务器端口号的四元组)可唯一确定互联网络中每个TCP连接的双方。

序列号:

序列号用来标识从TCP发起端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。

如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。

序列号是32bit的无符号数,序号到达232-1后又从0开始。

确认序列号:

当建立一个新的连接时,SYN标志变1。

序列号字段包含由这个主机选择的该连接的初始序号ISN(InitialSequenceNumber)。

该主机要发送数据的第一个字节序号为这个ISN加1,因为SYN标志消耗了一个序号(FIN标志也要占用一个序号)。

既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。

因此,确认序号应当是上次已成功收到数据字节序号加1。

只有ACK标志为1时确认序号字段才有效。

发送ACK无需任何代价,因为32bit的确认序号字段和ACK标志一样,总是TCP首部的一部分。

因此,我们看到一旦一个连接建立起来,这个字段总是被设置,ACK标志也总是被设置为1。

头部长度:

头部长度给出首部中32bit字的数目。

需要这个值是因为任选字段的长度是可变的。

这个

字段占4bit,因此TCP最多有60字节的首部。

然而,没有任选字段,正常的长度是20字节。

URG:

紧急指针(urgentpointer)有效。

ACK:

确认序号有效。

PSH:

接收方应该尽快将这个报文段交给应用层。

RST:

重建连接。

SYN:

同步序号用来发起一个连接。

FIN:

发端完成发送任务。

窗口大小:

TCP的流量控制由连接的每一端通过声明的窗口大小来提供。

窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。

窗口大小是一个16bit字段,因而窗口大小最大为65535字节。

校验和:

检验和覆盖了整个的TCP报文段:

TCP首部和TCP数据。

这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。

TCP检验和的计算和UDP检验和的计算相似,使用一个伪头部。

紧急指针:

只有当URG标志置1时紧急指针才有效。

紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。

可选项:

最常见的可选字段是最长报文大小,又称为MSS(MaximumSegmentSize)。

每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项。

它指明本端所能接收的最大长度的报文段。

TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和

验证一个强制性的端到端检验和。

许多流行的应用程序如Telnet/FTP和SMTP都使用TCP。

UDP包格式

UDP信宿端口:

一个UDP端口是一个可读写的软件结构,内部有一个接收报文缓冲区。

接收数据时,UDP软件要判断此信宿端口是否与当前使用的端口匹配,如是,则将数据报放入相应的接收队列,否则,抛弃该数据并向信源端口发送“端口不可达”的差错消息报文。

长度:

以字节计的整个报文长度,最小为8,只有报头。

校验和:

它是一个可选项,以提高效率。

 

TCP/IP包格式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1