`
codepeak
  • 浏览: 31901 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

链路层

阅读更多

链路层主要有三个目的:

(1)为IP模块发送和接受IP数据。

(2)为ARP模块发送ARP请求和接受ARP应答

(3)为RARP发送和接受RARP请求和应答

以太网是TCP/IP采用的主要的局域网技术,它采用CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense,Multiple Access with Collision Detection).它的速率为10Mb/s,地址为48bit。

 

IEEE(电子电气工程师协会)802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是802.2和802.3定义了一个与以太网不同的帧格式。

 

CSMA/CD:

工作原理:发送数据前,先监听信道是否空闲,如果空闲,发送数据;发送数据时,边发送边监听,如果监听到冲突,立即取消发送,等待一段随机时间,然后重新发送。

它的工作原理很简单,技术上实现简单,网络中各个工作站处于平等地位,不需要集中控制,不提供优先权控制,但在网络负载增大时,发送时间增长,发送效率急剧下降。

 

802.2

 

CRC字段用于帧内后续字节差错的循环冗余码检验(检验和),它也被称为FCS或帧检验序列).

 

尾部封装(Trailer Encapsulation):

这是一个早期的试验格式,它通过调整IP数据报中字段的次序来提高性能。主要的思想是:因为在以太网数据帧中,开始的那部分(IP首部和TCP首部)是变长字段,于是把它们移动到帧的尾部(在CRC之前),这样当把数据复制到内核时,就可以把数据帧中的数据部分映射到一个硬件页面,节省内存到内存的复制过程。TCP数据报的长度是512字节的整数倍,正好可以用内核中的页表来处理。但是,尾部封装已遭到反对。(有哪些缺点呢?

 

SLIP(Serial Line IP,串行线路IP):

是一种在串行线路上对IP数据报进行封装的简单形式。适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。它是一种简单的帧封装方法,有一些值得注意的缺陷:

1)每端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。

2)数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它不可能同时使用其他的协议。

3)SLIP没有在数据帧上加上检验和,不提供错误检验,需要由上层实现。

SLIP是一个几乎过时的协议,已经广泛被点到点协议(PPP)所取代,因为PPP具有更多的优点。并且不需要在连接之前进行IP地址的配置。但是在微控制器中,由于SLIP具有非常小的包头,所以它仍然是首选的封装IP包的方式。

CSLIP(压缩的SLIP):

串行线路的速率通常较低,而且通信经常是交互式的因此在SLIP线路上有许多小的TCP分组进行交换。CSLIP一般能把IP和TCP首部(40个字节)压缩到3个或5个字节,它能在CSLIP的每一段维持多达16个TCP连接,大大缩短了交互的时间。

 

PPP(点对点协议):

PPP修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:

1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。

2)建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。

3)针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。

 

环回接口:

似乎一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给了自己。

传给环回地址的任何数据均作为IP输入。

传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播和多播的定义包含主机本身。

任何传给该主机IP地址的数据均送到环回接口。

 

MTU(最大传输单元):

点到点的链路层(如SLIP和PPP)的MTU并非指的是网络媒体的物理特性。相反,它是一种逻辑限制,目的是为交互使用提供足够快的响应时间。

 

路径MTU:

两台主机路径中最小的MTU被称作路径MTU。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics