第二章-链路层-TCP/IP协议详解笔记
2015.4.11
链路层三个目的
- 为IP模块发送和接收IP数据报
- 为ARP模块发送ARP请求和接收ARP应答
- 为RARP发送和接收RARP请求和应答
以太网和IEEE 802封装
802:
目的地址 源地址 长度 DSAP SSAP cntl org_code 类型 数据 CRC
6 6 2 AA/1 AA/1 03/1 00/1 2 38~1492 4
类型 IP数据报
0800 38~1492
类型 ARP请求/应答 PAD
0806 28 10
类型 RARP请求/应答 PAD
8035 28 10
以太网:
目的地址 源地址 类型 数据 CRC
6 6 2 46~1500 4
类型 IP数据报
0800 46~1500
类型 ARP请求/应答
0806 28
类型 RARP请求/应答
8035 28
两种帧格式都采用48bit的目的地址和源地址(硬件地址),802定义的帧格式中长度是指后续长度,不包括CRC,以太网的类型字段规定了后续数据的类型。以太网帧格式中,类型字段之后就是数据,802帧格式中不是。
ARP和RARP对32bit的IP地址和48bit的硬件地址进行映射
802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分至少为38字节,以太网要求最少46字节,不足的补插入填充(pad)字节。
尾部封装遭到反对(注:因为链路层传输中几乎不会出现错误,CRC浪费空间和效率)
SLIP
Serial Line IP,串行线路IP,是一种在串行线路上对IP数据报进行封装的简单形式。
SLIP报文的封装:
END END ESC END
c0 db|dc db|dd c0
缺陷: 1. 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。 2. 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。 3. SLIP没有在数据帧上加上检验和(CRC)
压缩的SLIP
由于串行线路的速率通常较低(19200b/s或者更低),而且通信经常是交互的,因此在SLIP线路上有许多小的TCP分组进行交换。为了传送1Byte的数据需要20个字节的IP首部和20字节的TCP首部,利用率太低。
CSLIP能把上面的40个字节压缩成3或5个字节,它能在CSLIP的每一端维持多大16个TCP链接,而且知道其中每个链接的首部中的某些字段一般不会发生变化。
PPP
Point-to-Point,点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分: 1. 在串行线路上封装IP数据报的方法。 2. 建立、配置及测试数据链路的链路控制协议(LCP) 3. 针对不同的网络层协议的网络控制协议(NCP)
PPP数据帧的格式:
标志 地址 控制 协议 信息 CRC 标志
7E/1 FF/1 03/1 2 ->1500B 4 7E/1
协议 IP数据报
0021
协议 链路控制数据
C021
协议 网络控制数据
B021
利用链路控制协议,大多数的产品通过协商合一省略标识符和地址字段,并且把协议字段由2B减少到1B.这样的话PPP只增加了3个额外的字节:1个给协议字段,另外两个给CRC。另外,使用网络控制协议,大多数的产品可以通过协商采用类似于CSLIP压缩的方法减小IP和TCP首部长度。
PPP比SLIP的有点: 1. PPP支持在单根串行线路上运行多种协议 2. 每一针都有CRC 3. 通信双方可以进行IP地址的动态协商 4. TCP/IP首部压缩(与CSLIP类似) 5. 链路控制协议可以对多个数据链路选项进行设置
环回接口(Loopback Interface)
大多数的产品都支持环回接口,以允许在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。根据惯例,127.0.0.1被分配给这个接口,命名为Localhost.
实际上大多数的产品还是照样完成运输层和网络层的过程之后传给自己。
关键点: 1. 传给环回地址的任何数据均作为IP输入 2. 传给广播地址或者多播地址的数据复制一份传给环回接口,然后送到以太网上。(因为广播传送和多播传送的定义包含主机本身) 3. 任何传给该主机IP地址的数据均送到环回接口。
最大传输单元MTU
以太网和802.3对数据帧的长度都有一个限制,分别是1500和1492。这个特性称作MTU.
IP数据报长度过长要进行IP分片(fragmentation)
路径MTU
两台主机通信时要通过多个网络,每个网络的链路层可能有不同的MTU,其中最小的成为路径MTU.