第二章 链路层
1,在ICP/IP协议簇中,链路层主要有三个目的:
1》为IP模块发送和接收IP数据报。
2》为ARP模块发送ARP请求和接收ARP应答。
3》为RARP模块发送RARP请求和接收RARP应答。
2,以太网是当今TCP/IP采用的主要的局域网技术,采用一种称作CSMA/CD的媒体接入方式,其意思是带冲突检测的载波侦听多路接入(Carrier sense,Multiple Access with Collision Detection).它的速率为10MB/s,地址为48bit。
3,链路层的帧格式有两种,分别为RFC894(以太网)和RFC1024(IEEE502),以下是它们的格式:
对上图进行说明:
1》802标准定义的帧格式中,长度字段是指它后续数据的字符长度,但是不包括CRC校验码。
2》802定义的有效长度与以太网的有效类型无一相同,这样就可以对两种帧格式进行区分。
3》CRC字段用于帧内部后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。
4》LLC——Logical Link Control,逻辑链路控制,DSAP——Destination Service Access Point,目的服务访问点,SSAP——Source Service Access Point,源服务访问点,ARP——Address Resolution Protocol,地址解析协议,RARP——Reverse Address Resolution Protocol,反地址解析协议
以太网的IP数据报封装在RFC894中定义,而IEEE802网络的IP数据报封装在RFC1042中定义。
一台主机一定要能发送和接收RFC894定义的数据报。
一台主机可以接收RFC894和RFC1042的封装格式的混合数据报。
一台主机也许能够发送RFC1042数据报。如果主机能同时发送两种类型的分组数 据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。
4,TCP数据报的长度是512字节的整数倍,正好可以用内核中页表来处理。
5,SLIP全称是Serial Link IP。它是一种串行线路上对IP数据报进行封装的简单形式。格式如下图:
SLIP的缺陷:
1》每一端必须知道对方得IP地址。没有办法把本地的IP地址通知给另一端。
2》数据帧中没有类型,如果一条串行线路用于SLIP那么它不能同时使用其它协议。
6,环回接口(loopback)。平时我们用127.0.0.1来尝试自己的机器服务器好使不好使。走的就是这个loopback接口。对于环回接口,有如下三点值得注意:
1》 传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。
2》 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是 因为广播传送和多播传送的定义包含主机本身。
3》任何传给该主机IP地址的数据均送到环回接口。
7,ppp(点对点协议)是从SLIP的替代品。他们都提供了一种低速接入的解决方案。而每一种数据链路层协议,都有一个MTU(最大传输单元)定义,在这个定义下面,如果IP数据报过大,则要进行分片(fragmentation),使得每片都小于MTU,注意PPP的MTU并不是一个物理定义,而是指一个逻辑定义(个人认为就是用程序控制)。可以用netstat来打印出MTU的结果,比如键入netstat -in
8,两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU,两台通信主机路径中的最小MTU,它被称作路径MTU。两台主机之间的路径MTU不一定是个常数,它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的。