2.2、以太网和IEEE 802封装
以太网是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体介入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10Mb/s,地址为48bit。
IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA//CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。
这三者的共同特效由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式。
在TCP/IP世界在,以太网IP数据报的封装是在RFC 894中定义的,IEEE 802网络的IP数据报封装这是在RFC 1042中定义的。主机需求RFC要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:
1)必须能发送和接收采用RFC 894(以太网)封装格式的分组
2)应该能接受与RFC 894混合的RFC 1042封装格式的分组
3)也许能够发送RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。
两种帧格式都是采用48bit(6字节)的目的地址和源地址,这就是我们在本书中所称的硬件地址。
ARP和RARP协议为32bit的IP地址和48bit的硬件地址进行映射。
接下的两个字节在两种帧格式中互不相同。在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但是不包括CRC检验码。以太网的类型字段定义了后续数据的类型。在802标准定义的帧格式中,类型字段则由后续的子网接入协议(SNAP)的首部给出。
在以太网帧格式中,类型字段之后就是数据;而在802帧格式中,跟随在后面的是3字节的802.2 LLC和5字节的802.2 SNAP。目的服务访问点(DSAP)和源服务访问点(SSAP)的值都设为0xaa。Crtl字段的值设为3。随后的3个字节org code都设置为0。再接下来的2个字节类型字段和以太帧的格式一样。
CRC字段用于帧内后续字节差错的循环冗余检验。
802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求至少要有46字节。为了保证这一点,必须在不足的空间插入填充字节。
2.3、SLIP:串行线路IP
SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。
下面的规则描述了SLIP协议定义的帧格式:
1)IP数据报以一个称作END(0XC0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现都在数据报的开始处也传入一个END字符。
2)如果IP报文中某个字符为END,那么就连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符,但是它的值和ASCII码的ESC字符(0x1b)不同。
3)如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节的0xdb和0xdd来取代它。
SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
1)每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
2)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
3)SLIP没有在数据帧中加上检验和(类似以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另外一种方法是,新型的调制解调器可以检测并纠正错误报文)。IP首部和TCP首部及其数据始终都有检验和。UDP首部及其数据的检验和却是可选的。
2.5、压缩的SLIP
2.6、PPP:点对点协议
PPP包括以下三个部分:
1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。
2)建立、配置及测试数据链路的链路控制协议(LCP)。它允许通信双方进行协商,以确定不同的选项。
3)针对不同网络层协议的网络控制协议体系(NCP)。
PPP协议帧的格式:
每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。
接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,表示信息字段是网络控制数据。
CRC字段是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符上的值是0x7e,当该字符出现在信息字段中时,PPP需要对它进行转义。
在同步链路中,该过程是通过一种称为比特填充的硬件技术来完成的。在异步链路中,特殊字符0x7d用做转义字符。当它出现在PPP数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:
1)当遇到字符0x7e时,需要连续传送两个字符:0x7d和0x5e,以实现标志字符的转义。
2)当遇到转义字符0x7d时,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。
3)默认情况下,如果字符的值小于0x20,一般都要进行转义。这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器重,因为有事它们回吧这些控制字符解释层特殊的含义。另一种可能是用链路控制协议来指定是否需要对这32个字符中的某一些值进行转义。默认情况是对所有的32个字符都要进行转义。
使用链路控制协议,大多数的产品通过协商可以省略标识符和地址字段,并且把协议字段由2个字节减少到1个字节。
总的来说,PPP比SLIP具有以下优点:
(1)PPP支持在单根串行线路上运行多种协议,不只是IP协议
(2)每一帧都有循环冗余检验
(3)通信双方可以在进行IP地址的动态协商(使用IP网络控制协议)
(4)与CSLIP类似,对TCP和IP报文首部进行压缩
(5)链路控制协议可以多个数据链路选项进行设置
2.7、环回接口
大多数产品都支持环回接口,以允许运行在同一台主机上的客户端程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。
大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。
1)传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入
2)传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为多播传送和广播传送的定义包含主机本身。
3)任何传给该主机IP地址的数据均送到环回接口。
2.8、最大传输单元MTU
2.9、路径MTU
两台通信主机路径中的最小MTU,被称为路径MTU。两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的,因此路径MTU在两个方向上不一定是一致的。
2.10、串行线路吞吐量计算