链路层属于OSI模型的第二层,第一层物理层主要研究的是传输媒介,电线电缆等,而第二层主要研究的是物理寻址,链路层的主要目的是为IP模块发送和接收IP数据报,为ARP模块发送ARP请求和应答,以及为RARP发送RARP请求和接收RARP应答,它起着承接第一层和第三层的做用,这边主要介绍当今网络上最流行的两种二层技术,以太网和PPP协议 html
以太网是Xerox公司发明的基带LAN标准,它采用带冲突检测的载波监听多路访问协议(CSMA/CD),速率为10Mbps,传输介质为同轴电缆,目前已经发展到10G,传输介质也改成光纤,以太网2.0以前有两种标准,一种是以太网标准,另外一种是在以太网基础上完成的IEEE802.3定义的以太网,封装格式也有稍许不一样,可是如今的以太网设备通常都兼容这两种格式 python
1. 前导同步符/帧起始定界符:7字节0x55, 用于信号同步,1字节0xd5(10101011)表示一帧开始 2. 目的地址:6字节,(XX:XX:XX:XX:XX:XX) 3. 源地址: 6字节, (XX:XX:XX:XX:XX:XX) 4. 类型/长度:2字节,0~1500保留为长度域值, 1536~65535保留为类型 5. 数据:46~1500 字节 6. 帧校验序列(FCS): 4字节, 使用CRC计算从目的MAC到数据域这部份内容的校验和,不包括前导码
RFC894规定以太网封装的IP数据包的最大长度是1500字节,也就意味着以太网帧最大长度是 7(前导同步符)+1(帧开始符)+6(DA)+6(SA)++2(类型)1500(data)+4(FCS)=1526, 算法
但实际上抓包最大帧是1514字节,由于数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始符,而后对帧进行CRC校验,若是校验和错则丢弃此帧,若是符合,就将帧交“设备驱动程序”处理,此时才是网卡上抓到的包,须要去掉8(前导同步符)+4(FCS),最大帧长为1514 缓存
以太网同时规定数据域最小为46字节,也就意味着最小帧长为6+6+2+46+4=64,除去4(FCS),抓包则是60字节,当数据字段小于46字节时,MAC子层为在data后面填0,以知足最小帧长大于64,设备驱动程序则是MAC子层 安全
以太网以CSMA/CD做为MAC算法,来检测网内是否会发生冲突,一旦发生冲突则让每台主机都检测到,为了不冲突,才有了发送最小间隙和最小帧长的规定,可见以太网是无链接的,不可靠的服务,它并不知道对方有没有收到本身发出的数据包,但若是数据帧发生错误,它会重传,数据帧发生错误通常产生在发生碰撞时,两台主机都检测到空闲,一块儿发送,则有可能碰撞,而产生错包,重传。 服务器
咱们知道以太网是基于CSMA/CD的工做原理进行数据传送的,CSMA/CD载波监听/冲突检测,属于计算机网络以太网的工做类型,即在总线上不段的发出信号去探测线路是否空闲,若是不空闲则随机等待必定时间,在继续探测。直到发出型号为止
CSMA/CD的工做原理
由IEEE 802.3标准肯定的CSMA/CD检测冲突的方法以下:
(1)当一个站点想要发送数据的时候,它检测网络查看是否有其余站点正在传输,即监听信道是否空闲。
(2)若是信道忙,则等待,直到信道空闲;若是信道闲,站点就传输数据。
(3)在发送数据的同时,站点继续监听网络确信没有其余站点在同时传输数据。由于有可能两个或多个站点都同时检测到网络空闲而后几乎在同一时刻开始传输数据。若是两个或多个站点同时发送数据,就会产生冲突。
(4)当一个传输节点识别出一个冲突,它就发送一个拥塞信号,这个信号使得冲突的时间足够长,让其余的节点都能发现。
(5)其余节点收到拥塞信号后,都中止传输,等待一个随机产生的时间间隙(回退时间,Backoff Time)后重发。 网络
问题就在这,当很小的帧发送到对端前,对端也发送帧,此时产生冲突,这个充突帧传到发送端还须要必定的时间,若是帧过小,发送端已经发送完了,再接收到这个冲突帧,为时已晚,因此规定一个最小发送帧,使得发送端可以检测到冲突帧从而判断发出去的这个帧做废,IEEE将10M以太网的时隙定义为512比特,即51.2us,那么10M换算下来10MB/s*51.2us=512bit,512bit正好就是64字节,所以定义以太网的帧最小为64字节,这样若是64字节没有发生冲突,数据就不会发生冲突,认为数据发送成功 加密
以太网头部有8个字节的前导符,在抓包中是看不到的,那它起什么做用呢,MAC子层的标准规定了帧间最小的间隔是9.6us,也就是说当主机监测到线路空闲后,还要等9.6us才能发送数据,这样作是为了使刚刚收到的数据帧的主机的接收缓存来得及清理,作好接收下一帧的准备,9.6us即96bit,也就是12字节的帧间隔的由来,也就是帧开销的一部分,而8字节的前导符做用在于告诉监听设备数据将要到来,所以帧开销就是20字节。 spa
一台百M交换机用仪表接到两个端口上,互发46字节大小的数据包,看包转发率为148809,从而计算带宽大小为 148809*64*8=76M,那么其它的带宽干什么去了,由于以太网有8个字节的前导符,以及12字节的帧间隔,所以每一个帧有20字节的固定开销,这仍是最小的开销,交换机实际的端口吞吐量为148809*(64+8+12)*8=100M,交换机的实际数据吞吐量为76M,还有一部分用来处理额外的开销,这个开销是物理层所必需的。 .net
若是对接的是以太网交换机,那么IP数据包到达第二层都会加上以太网头,来进行数据链路层的传输。
PPP协议全称为point-to-point protocol点到点协议,提供在点到点链路上传输,封装网络层数据包的数据链路层协议,处于链路层的第二层,于以太网不一样的是网络结构,以太网是一个局域网,能够广播,而PPP只适用于点对点串行链路,PPP主要由三类协议组成:链路控制协议(LCP),网络层控制协议(NCP)和PPP协议扩展,其中链路控制协议主要用于创建,拆除和监控PPP数据链路,网络层控制协议主要用于协商在该数据链路上所传输的数据包的格式与类型,PPP扩展协议主要用于提供PPP功能的进一步支持,同时PPP还提供网络安全方面的PAP和CHAP协议。因为提供验证,易扩冲,从而得到普遍的应用。
0x7E标识一个帧的开始和结束 FCS为帧校验域 PPP报文内容为 地址0xFF, 控制0x03, PPP头即0xFF03 Protocol为协议域紧接着code域代表了此报文为哪一种PPP协商报文,如为IP报文则不存在此域,取而代之的则为IP数据 Identifier域用于进行协商报文的匹配 Length域为此协商报文长度 Data域所包含的为协商报文的内容 经常使用protocol: 0021 IP C021 LCP(Link control protocol) 链路控制协议 C023 Password Authentication protocol密码认证协议 8021 internet protocol control protocol 网络控制协议
PPP是链路层协议,因此数据单位是帧,7EFF03…7E这种格式封装的即为PPP帧, 0x7E标识帧的开始和结束,网络是分层的,对等层之间进行通讯,下层为上层服务,对等层通讯须要知道对方的地址,而对于不一样的网络,这个地址是不同的,链路层须要知道MAC或者X.121或者是ATM地址,而网络层则须要对端的IP地址,在传输层则须要知道对端的协议端口号,例如若是是在以太网上通讯,发送端则须要对端的MAC地址,而PPP协议是运用在点对点的链路上,不像广播和多点访问的网络,点对点的链路能够惟一标识对方,所以PPP无需知道对端地址,由于只有你一个,因此该字节无心义,为0xFF,同地址域同样,控制域也没有意义,规定填写0x03,就PPP协议自己而言咱们关心的是协议域和信息域,协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容,信息域默认最大帧长为1500字节,协议域和信息域要和在一块儿看,协议域为0xC021表示LCP,链路控制, 0x8021表示NCP,网络控制, 0x0021表示IP协议
PPP为用户发起呼叫创建链路,在创建链路时协商参数选择,其中LCP起做用
当LCP将链路创建好后,PPP要开始跟不一样用户的须要,配置上层协议所需的环境,PPP用NCP来为上层提供服务接口,若是是IP则提供IPCP接口,若是是IPX提供IPXCP接口等
当一个PC终端拨号用户发起一次拨号后,此PC终端首先经过调制解调器呼叫远程访问服务器,如提供拨号服务的路由器。当路由器上的远程访问模块应答了这个呼叫后,就创建起一个初始的物理链接。接下来,PC终端和远程访问服务器之间开始传送一系列通过PPP封装的LCP分组,用于协商选择将要采用的PPP参数。若是上一步中有一方要求认证,接下来就开始认证过程。若是认证失败,如错误的用户名、密码,则链路被终止,双方负责通讯的设备或模块(如用户端的调制解调器或服务器端的远程访问模块)关闭物理链路回到空闲状态。若是认证成功则进行下一步。
在这步骤中,通讯双方开始交换一系列的NCP分组来配置网络层。对于上层使用的是IP协议的情形来讲,此过程是由IPCP完成的。
当NCP配置完成后,双方的逻辑通讯链路就创建好了,双方能够开始在此链路上交换上层数据。
当数据传送完成后,一方会发起断开链接的请求。这时,首先使用NCP来释放网络层的链接,归还IP地址;而后利用LCP来关闭数据链路层链接;最后,双方的通讯设备或模块关闭物理链路回到空闲状态。
PAP为两次握手协议,它经过用户名及口令来对用户进行验证。过程以下:被验证方A发送用户名及口令到验证方B, 验证方B根据本地的用户表或radius服务器查看是否有此用户,口令是否正确,若是正确回ACK,若是不对则回NAK
CHAP为三次握手协议,首先验证方B发送挑战信息给被验证方,信息为(01(认证请求)+id(这次认证序列号)+随机数据+B的主机名),被认证方收到挑战信息后,根据B的主机名去找密码,查到后用(B的密码+id+随机数据)三个数据MD5算出一个HASH值
第二步,被验证方回复认证请求,该回复信息包含【02(此报文为认证响应)+ id + HASH值+被验证方A的主机名】,验证方B处理该信息,查找A的密码,随后用(A的密码+id+随机数据)根据MD5算法算出一个hash值,与被验证方A算出的HASH对比,若是一致则经过
所以CHAP的核心就是利用对方主机的密码进行加密,HASH进行比较,它须要双方的口令HASH,还不是一方的就能够,更加安全
TCP/IP协议卷一 http://blog.csdn.net/jackywangjia/article/details/7788312 PPP协议 http://www.360doc.com/content/11/1226/14/7998898_175090729.shtml 以太网最小帧长 http://network.51cto.com/art/201109/291563.htm PAP与CHAP