为什么80%的码农都做不了架构师?>>>   

链路层属于OSI模型的第二层,第一层物理层主要研究的是传输媒介,电线电缆等,而第二层主要研究的是物理寻址,链路层的主要目的是为IP模块发送和接收IP数据报,为ARP模块发送ARP请求和应答,以及为RARP发送RARP请求和接收RARP应答,它起着承接第一层和第三层的作用,这边主要介绍当今网络上最流行的两种二层技术,以太网和PPP协议

以太网

以太网是Xerox公司发明的基带LAN标准,它采用带冲突检测的载波监听多路访问协议(CSMA/CD),速率为10Mbps,传输介质为同轴电缆,目前已经发展到10G,传输介质也改为光纤,以太网2.0之前有两种标准,一种是以太网标准,另一种是在以太网基础上完成的IEEE802.3定义的以太网,封装格式也有稍许不同,但是现在的以太网设备一般都兼容这两种格式

以太网头部

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到数据域这部分内容的校验和,不包括前导码

讨论一下以太网的最大帧长是1514

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算法,来检测网内是否会发生冲突,一旦发生冲突则让每台主机都检测到,为了避免冲突,才有了发送最小间隙和最小帧长的规定,可见以太网是无连接的,不可靠的服务,它并不知道对方有没有收到自己发出的数据包,但如果数据帧发生错误,它会重传,数据帧发生错误一般产生在发生碰撞时,两台主机都检测到空闲,一起发送,则有可能碰撞,而产生错包,重传。

讨论一下为什么以太网最小帧长是64呢

我们知道以太网是基于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字节。

讨论一下线速100M的交换机,测下来却只有76M

一台百M交换机用仪表接到两个端口上,互发46字节大小的数据包,看包转发率为148809,从而计算带宽大小为 148809*64*8=76M,那么其它的带宽干什么去了,因为以太网有8个字节的前导符,以及12字节的帧间隔,因此每个帧有20字节的固定开销,这还是最小的开销,交换机实际的端口吞吐量为148809*(64+8+12)*8=100M,交换机的实际数据吞吐量为76M,还有一部分用来处理额外的开销,这个开销是物理层所必需的。

如果对接的是以太网交换机,那么IP数据包到达第二层都会加上以太网头,来进行数据链路层的传输。

PPP协议

PPP协议全称为point-to-point protocol点到点协议,提供在点到点链路上传输,封装网络层数据包的数据链路层协议,处于链路层的第二层,于以太网不同的是网络结构,以太网是一个局域网,可以广播,而PPP只适用于点对点串行链路,PPP主要由三类协议组成:链路控制协议(LCP),网络层控制协议(NCP)和PPP协议扩展,其中链路控制协议主要用于建立,拆除和监控PPP数据链路,网络层控制协议主要用于协商在该数据链路上所传输的数据包的格式与类型,PPP扩展协议主要用于提供PPP功能的进一步支持,同时PPP还提供网络安全方面的PAP和CHAP协议。由于提供验证,易扩冲,从而获得广泛的应用。

PPP封装

0x7E标识一个帧的开始和结束FCS为帧校验域PPP报文内容为 地址0xFF, 控制0x03, PPP头即0xFF03Protocol为协议域紧接着code域表明了此报文为哪种PPP协商报文,如为IP报文则不存在此域,取而代之的则为IP数据Identifier域用于进行协商报文的匹配Length域为此协商报文长度Data域所包含的为协商报文的内容常用protocol: 0021 IPC021 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的功能

链路控制:

PPP为用户发起呼叫建立链路,在建立链路时协商参数选择,其中LCP起作用

网络控制:

当LCP将链路建立好后,PPP要开始跟不同用户的需要,配置上层协议所需的环境,PPP用NCP来为上层提供服务接口,如果是IP则提供IPCP接口,如果是IPX提供IPXCP接口等

PPP过程

当一个PC终端拨号用户发起一次拨号后,此PC终端首先通过调制解调器呼叫远程访问服务器,如提供拨号服务的路由器。当路由器上的远程访问模块应答了这个呼叫后,就建立起一个初始的物理连接。接下来,PC终端和远程访问服务器之间开始传送一系列经过PPP封装的LCP分组,用于协商选择将要采用的PPP参数。如果上一步中有一方要求认证,接下来就开始认证过程。如果认证失败,如错误的用户名、密码,则链路被终止,双方负责通信的设备或模块(如用户端的调制解调器或服务器端的远程访问模块)关闭物理链路回到空闲状态。如果认证成功则进行下一步。

  在这步骤中,通信双方开始交换一系列的NCP分组来配置网络层。对于上层使用的是IP协议的情形来说,此过程是由IPCP完成的。

  当NCP配置完成后,双方的逻辑通信链路就建立好了,双方可以开始在此链路上交换上层数据。

  当数据传送完成后,一方会发起断开连接的请求。这时,首先使用NCP来释放网络层的连接,归还IP地址;然后利用LCP来关闭数据链路层连接;最后,双方的通信设备或模块关闭物理链路回到空闲状态。

PAP与CHAP的区别

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

转载于:https://my.oschina.net/hding/blog/669773

重读TCP/IP(2)之链路层相关推荐

  1. TCP/IP入门(1) --链路层

    /** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...

  2. TCP/IP中的链路层

    在TCP/IP协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报:(2) 为ARP模块发送ARP请求和接收ARP应答(3)为ARP发送RARP请求和接收RARP应答.TCP/IP支持 ...

  3. 计算机网络之网络概述:6、TCP/IP模型和5层参考模型

    概述:6.TCP/IP模型和5层参考模型 TCP/IP模型: OSI参考模型与TCP/IP参考模型的相同点: OSI参考模型与TCP/IP参考模型的不同点: 5层参考模型: 总结: TCP/IP模型: ...

  4. TCP/IP参考模型与5层参考模型

    TCP/IP模型 网络接口层:从主机或结点接收IP分组,并把它们发送到指定的物理网络上. 网际层:将分组发往任何网络,并为之独立地选择合适路由,但不保证各个分组有序地到达,各个分组的有序交付由高层负责 ...

  5. 网际互联及TCP/IP 协议OSI七层模型: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

    网际互联及TCP/IP 协议OSI七层模型: 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 物理层 作用:定义一些电器,机械,过程和规范,如集线器: PDU(协议数据单元):bit/比特 ...

  6. TCP/IP模型的各层的作用

    第一种总结: TCP/IP模型:以无缝方式实现各种网络之间互连的网络体系结构. TCP/IP模型共分四层,分别为应用层.传输层.互联网层和主机到网络层. 各层实现特定的功能,提供特定的服务和访问接口, ...

  7. TCP/IP 网络模型有几层?分别有什么用?

    TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层. 2.传输层:就是为应用层提供网络支持的,当设备作为接收⽅时,传输层则要负责把数据包传给应⽤ ...

  8. 也说TCP/IP之OSI七层模型

    我们在上一章节讨论了计算机网络的发展史,从进程发展的趋势来说,可以理解为无到有,从混乱到趋向稳定.为什么说是从混乱到趋向稳定呢,实际上是因为,我们仍在这个过程中不断得探索着如何去建立一个稳定的网络环境 ...

  9. 互联网协议套件(TCP/IP)及七层OSI模型

    互联网协议套件(英语:Internet Protocol Suite,缩写IPS)[1]是网络通信模型,以及整个网络传输协议家族,为网际网络的基础通信架构.它常通称为TCP/IP协议族(英语:TCP/ ...

  10. TCP/IP中的传输层协议TCP、UDP

    TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...

最新文章

  1. 汇总python三种数据结构list,set,dict的常见操作
  2. 当钢铁直男去应聘...... | 每日趣闻
  3. AWK再次认识--内置的参数,以及编写脚本
  4. 阿里宜搭助力服务中枢升级,提升10倍开发效率
  5. 挑战练习10.6 实现高效的RecyclerView刷新
  6. Think in Java第四版 读书笔记2
  7. php将汉字转换为gb2312编码,php实现utf-8和GB2312编码相互转换
  8. HTML meta 标签总结
  9. 多线程与多进程(转载)
  10. 如何解决未经检查的演员表警告?
  11. 谈Dreamweaver和Webstorm
  12. 贴片电阻丝印看阻值大全,附高精度贴片电阻代码表
  13. Flash遮罩之光芒四射、佛光普照
  14. 3.21世纪计算机技术展望
  15. python画双坐标图_Python画双坐标曲线图
  16. df -h无响应问题解决
  17. 谷歌、百度、搜狗、有道搜索个人之比较
  18. 你就不怕此生就这样?
  19. 如何下载微信视频号里的完整视频?
  20. phalcon 自动加载_创建 Phalcon7 项目

热门文章

  1. 【Prison Break】第二天(3.28)
  2. HyperVolume多目标评价指标概述
  3. 如何正确给锂电池充电
  4. python划分train val test
  5. matlab interp2插值函数的使用
  6. ArcGIS学习总结(七)——河流制图综合
  7. FastAPI集成SQLAlchemy实现数据库操作
  8. Android LiveData组件分析
  9. gitee怎么看用户名_怎么优雅的写博客 Typora + picGo
  10. 中农考研计算机机考,开一个考研经验贴~2020中农考生,特别是农科大类考生看过来...