TCP-IP详解卷1:协议读书笔记_2
在TCP/IP协议族中,链路层主要有三个目的:
(1)为IP模块发送和接受IP数据报
(2)为ARP模块发送ARP请求和接受ARP应答
(3)为RARP发送RARP请求和接收RARP应答
以太网和IEEE802封装
以太网是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的额媒体接入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10MB/S,地址为48bit。
主机需求RFC要求每个Internet主机都与10MB/s的以太网电缆相连接:
1)必须能发送和接受采用RFC894(以太网)封装格式的分组
2)应该能接受与RFC894混合的RFC1024(IEEE082)封装格式的分组
3)也许能够发送采用RFC1024格式封装的分组
最常使用的封装格式是RFC 894定义的格式。下图显示了两种形式的封装格式。图中每个方框下面的数字是它们的字节长度。
RFC1024 和RFC 894数据报的封装格式
两种帧格式都采用48bit(6字节)的目的地址和源地址。ARP和RARP协议对32位bit的IP地址和48bit的硬件地址进行映射。
接下来两个字节在两种帧格式中互不相同。RFC1024定义的长度字段是指它后续数据的字节长度,但不包括CRC校验码。RFC894定义了后续数据的类型。RFC1024的有效长度和RFC894有效类型值都不相同,所以,可以对两种帧格式进行区分。
RFC894类型后面就是数据;而RFC1024后有哦3个字节的802.2LLC和5个字节的802.2SNAP。目的服务访问点和源服务访问点的值都设为0Xaa。Ctrl字段的值设为3。随后的3个字节org code都置为0。再接下来两个字节类型和以太网格式一样。
CRC字段用于帧内后续字节差错的循环冗余码检验。
尾部封装
RFC893描述了另一种用于以太网的封装格式,称作尾部封装。
在以太网数据帧中,开始的那部分是边长的字段;将其移动到尾部(CRC之前),这样将数据复制到内核时,就可以把数据帧的数据部分映射到一个硬件页面,节省内存到内存的赋值过程
SLIP: 串行线路IP
SLIP全称是Serial Line IP。它是一种在串行线路行对IP数据报进行封装的简单形式。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。
下面的规则描述了SLIP协议定义的帧格式:
1)IP数据报以一个END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声也被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。
2)如果IP数据报的某个数据是END,那么就要联系传输两个字节0xdb和0Xdc来取代它。0xdb称为SLIP的ESC字符,但是它的值和ASCII码的ESC字符0x1b不同。
3)如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个0xdb和0xdd来取代它。
SLIP的图示:
SLIP封装格式
SLIP的缺陷:
1)每一段必须知道对方的IP地址,没有办法把本端的IP地址通知给另一端。
2)数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
3)SLIP没有在数据帧中加上校验和。
压缩的SLIP
SLIP线路行有许多小的TCP分组进行交换。为了传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节。
于是有了CSLIP的新协议,即压缩SLIP。一般可以把上面40个字节压缩到3-5个字节。
PPP:点对点协议
PPP点对点协议,包含了一下三个部分:
1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位的无奇偶校验的异步模式,还支持面向比特的同步链接。
2)建立、配置以及测试数据链路的链路控制协议(LCP)。它允许通信双发进行协商,以确定不同的选项。
3)针对不同网络层协议的网络控制协议体系。
PPP数据帧都是以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终为0x03的字节字符。
接下来是协议字段,类似于以太网中类型字段的功能。0X0021代表IP数据报;0XV021代表链路控制数据;0x8021代表信息是网络控制数据。
CRC字段,是一个循环冗余校验码,以检测数据帧中的错误。
总的来说,PPP比SLIP具有以下优点:
1.PPP支持单根串行线路上运行多种协议;
2.每一帧都有循环冗余校验;
3.通信双方可以进行IP地质的动态协商(使用IP网络控制协议);
4.与CSLIP类似,对TCP和IP报文首部进行压缩;
5.链路控制协议可以对多个数据链路选项进行设置。
环回接口
大多数产品都支持环回接口,以允许运行在同一主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。
环回接口处理IP数据报的过程图中的关键点是:
1)传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
2)创个广播地址和多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。
3)任何传给主机地址的数据均送到环回接口。
最大传输单元MTU
链路层的数据帧的最大传输字节称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干份,这样每一片都小于MTU。
路径MTU
当在同一网络的两台主机互相进行通信时,该网络的MTU是非常重要的。但是两台主机的通信要通过多阿哥网络,那么每个网络的链路层可能有不同的MTU,重要的就不是两台主机所在网络的MTU了,而是两台通信主机路径中的最小MTU。它被称作路径MTU。