首页 > 代码库 > 网络--链路层协议

网络--链路层协议

以太网和802.3
技术分享

 

最小长度,802.3 38,以太网 46 不足插入pad字节补齐
(1)其中的源地址和目的地址是指网卡的硬件地址(也叫MAC 地址),长度是48 位,是在网卡出厂时固化的。
(2)注意网卡芯片(例如DM9000A)收到的数据就是如上所示的一长串数据;其中包括以太网帧头、IP报报头、传输层协议段头、应用层所需数据。
(3)以太网帧中的数据长度规定最小46 字节,最大1500 字节,ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位。最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。ifconfig 命令的输出中也有“MTU:1500”。注意,MTU 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
1、MTU的概念
     MTU即Maximum Transmission Unit 最大传输单元。它是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
2、路径MTU
     路径MTU是指一条因特网传输路径中,从源地址到目的地址所经过的“路径”上的所有IP跳的最大传输单元的最小值。或者从另外一个角度来看,就是无需进行分片处理就能穿过这条“路径”的最大传输单元的最大值。
3、路径MTU的发现方法
     这是确定两个IP主机之间路径最大传输单元的技术,其目的就是为了避免IP分片。首先源地址将数据报的DF位置位,在逐渐增大发送的数据报的大小——路径上任何需要将分组进行分片的设备都会将这种数据报丢弃并返回“数据报过大“的ICMP响应到源地址——这样源主机就”学习“到了无需分片就能通过这条路径的最大的最大传输单元。

SLIP的帧格式描述:
  1. IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来前的噪声被当作数据报内容,大多数实现在数据报的开始出也传一个END字符。
  2. 如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb、0xdc来取代它。oxdb也称作为SLIP的ESC字符
  3. 如果IP报文中某个字符为SLIP的ESC字符,则需要连续传输0Xdb、0xdd来取代它
SLIP的缺陷:
  1. 每一段必须知道对方的IP地址,却无法把本端的IP地址通知另一端
  2. 数据帧中没有类型字段,也就是所拥有SLIP的线路不能同时使用其他协议
  3. SLIP没有数据校验位,报文错误只能通过上层协议发现。
PPP:点对点协议,修改了SLIP的所有缺陷
  1. 在串行立案率上封装IP数据报的方法。PPP既支持数据为8位和无奇偶校验的异步模式,还支持面向比特的同步链接。
  2. 建立、配置及测试数据立案率的立案率控制协议(NCP:Network Control Protocol)体系。
  3. 针对不同网络层协议的网络控制协议体系

PPP的数据帧格式为 
———————— —————— - —————— -———————— —————— 
| 标志位(0x7E) | 地址位(0xFF) | 控制位(0x03) | 协议字段(2字节) | 信息(最多1500)| 
———————— ——————- —————— -—————————————— 
———————— 
| CRC | 标志(0X7E)| 
———————— 
协议0021:IP数据报 
协议C021:链路控制数据 
协议8021:网络控制数据
其具体实现过程为:
  1. 当遇到字符0x7e时,需连续传送两个字符:0x7d、0x5e,以实现标识字符的转义
  2. 当遇到0x7d时,连续传送0x7d、0x5d
  3. 默认情况下,如果字符小于0x20时,进行转义,第6bit补码,如(0x01,发送0x7d、0x21)
 
点对点协议(PPP)
       为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。
PPP 主要由以下几部分组成:
封装:一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。PPP 封装精心设计,能保持对大多数常用硬件的兼容性。
链路控制协议:PPP 提供的 LCP 功能全面,适用于大多数环境。LCP 用于就封装格式选项自动达成一致,处理数据包大小限制,探测环路链路和其他普通的配置错误,以及终止链路。LCP 提供的其他可选功能有:认证链路中对等单元的身份,决定链路功能正常或链路失败情况。
网络控制协议:一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。
配置:使用链路控制协议的简单和自制机制。该机制也应用于其它控制协议,例如:网络控制协议(NCP)。
PPP的工作原理:
        为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。链路将保持通信设定不变,直到有 LCP 和 NCP 数据包关闭链路,或者是发生一些外部事件的时候。
       PPPOE 使得一个网络上的计算机可以通过简单桥接访问设备连接到远端接入设备。为了提供以太网上的点到点连接,每一个 PPP 会话必须知道远程通信对方的以太网地址,同时建立一个唯一的会话标识符。PPPoE包含一个(以太网地址)发现协议来提供这个功能。
        PPPoE 过程分为两个不同的阶段,即 Discovery (地址发现)阶段和 PPP 会话阶段。当某个主机希望发起一个 PPPoE 会话时,它必须首先执行 Discovery 来确定对方的以太网 MAC 地址并建立起一个 PPPoE 会话标识符(SESSION_ID)。虽然 PPP 定义的是端到端的对等关系,Discovery 却是一种客户端 - 服务器关系。在 Discovery 过程中,主机(作为客户端)发现某个访问集中器(AccessConcentrator,作为服务器),根据网络的拓扑结构,可能主机能够发现多个访问集中器。Discovery 阶段允许主机发现所有的访问集中器并从中选择一个。当 Discovery 阶段成功完成之后,主机和所选择的访问集中器两者都具备了用于在以太网上建立点到点连接所需的所有信息。Discovery阶段保持无状态(stateless)直到建立起一个 PPP 会话。一旦 PPP 会话建立,主机和访问集中器两者都必须为一个 PPP 虚拟接口分配资源。
 
PPP与SLIP比较,有以下优点:
1、支持多种协议:PPP帧头中有一个协议域,用来标识链路上传送的不同的网络协议。这使得PPP协议具有良好的扩展性,可以支持不同的上层协议。
2、错误检测:PPP帧中包括FCS域来用来检测错误,一旦发现错误,就丢弃收到的数据包,并报告一个输入错误。
3、多种类型链路:PPP允许在多种类型的链路上运行。
4、选项协商:PPP允许通信双方动态协商某些选项。从某种意义来说,它允许链路一方配置另一方。
5、授权:PPP利用两个授权协议PAP和CHAP,可进行链路层授权。这两个协议通过发送和接收口令信息检查对方是否被授权与本机建立链路。
6、IP地址协商:PPP允许一方作为PPP服务器,在客户端拨入时分配IP地址。在PPP链路终止后,IP地址可被重新使用。
      功能简单、封装成帧、数据透明性等
PPP是个协议簇,它包含一系列协议:
     (1)链路控制协议(LCP),PPPLCP提供了建立、配置、维护和终止点对点链接的方法。
  (2)IP控制协议(IPCP),IPCP是IP的网络控制协议(NCP),负责点对点链路通信双方的IP协议模块的配置、使能和禁止,还负责通信双方IP地址的协商。它与LCP的包交换机制相同,但只有在PPP链路建立起来之后,才能进行IPCP的包交换。
  (3)口令授权协议(PAP),PAP利用双向的握手信号建立通信双方的认证,这一过程在链路初始链路化阶段完成。一旦链路建立起来,通信一方向授权者不断发送ID口令对,直到授权被认可,否则连接被终止。
 (4)询问握手授权协议(CHAP),CHAP比PAP要安全得多,CHAP利用三次握手周期性地检验对方身份。

arp协议
技术分享
arp结构op操作参数:1为请求,2为应答

网络--链路层协议