1.概述

     数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。

     在TCP/IP协议族中,数据链路层主要有三个目的:
          1)为IP模块发送和接收数据
          2)为ARP模块发送ARP请求和接收ARP应答
          3)为RARP模块发送RARP请求和接收RARP应答
     TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口)及RS-232串行线路等。
     
     数据链路层的协议数据单元——帧:将IP层(网络层)的数据报添加首部和尾部封装成帧。
     数据链路层协议有许多种,都会解决三个基本问题,封装成帧,透明传输,差错检测。
2.以太网和IEEE802的封装
     如图所示,显示了两种不同形式的封装格式。最常使用的封装格式是RFC894定义的格式。两种帧格式均采用48bit(6 byte)的目的地址和源地址。
3. SLIP, CSLIP, PPP
     SLIP:Serial Line IP

串行线路 IP (SLIP)用于运行 TCP/IP 的点对点串行连接。 SLIP 通常专门用于串行连接,有时候也用于拨号,使用的线路速率一般介于 1200bps 和 19.2Kbps 之间。 SLIP 允许主机和路由器混合连接通信(主机 - 主机、主机 - 路由器、路由器 - 路由器都是 SLIP 网络通用的配置),因而非常有用。
      SLIP 只是一个包组帧协议,仅仅定义了在串行线路上将数据包封装成帧的一系列字符。它没有提供寻址、包类型标识、错误检查 / 修正或者压缩机制。
     1) IP数据报以一个称作END(0 x c 0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个E N D字符(如果有线路噪声,那么E N D字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
      2) 如果I P报文中某个字符为END,那么就要连续传输两个字节0 x d b和0 x d c来取代它。0 x d b这个特殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的E S C字符(0 x 1 b)不同。
      3) 如果I P报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0 x d b和0 x d d来取代它。

压缩串行线路 IP (CSLIP)在传送出的 IP 分组上执行 Van Jacobson 头部压缩。CSLIP(即压缩SLIP)的新协议,它在RFC 1144[Jacobson 1990a]中被详细描述。C S L I P一般能把上面的4 0个字节压缩到3或5个字节。它能在C S L I P的每一端维持多达1 6个T C P连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。这个压缩过程显著提高了交互式会话吞吐量。

  • 点对点协议(PPP)广泛替代了 SLIP ,因为它有更多特性和更灵活。
     PPP包括以下三部分:
     1) 在串行链路上封装I P数据报的方法。P P P既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

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

      3) 针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。当前R F C定义的网络层有I P、O S I网络层、D E C n e t以及A p p l e Ta l k。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于C S L I P(缩写词N C P也可用在T C P的前面)。
     PPP协议都以标志字符0x7e开始和结束,紧接着是一个地址字节,值始终是0xff,然后是一个0x03的控制字节。接下来是协议字段。
      0x0021:IP数据报
      0xc021:链路控制数据
      0x8021:网络控制数据
接下来则为信息数据内容,CRC验证码,结束标志0x7e
     
4.最大传输单元 MTU
     最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
     如果在IP层要传输一个数据报比链路层的MTU还大,那么IP层就会对这个数据报进行分片。一个数据报会被分为若干片,每个分片的大小都小于或者等于链路层的MTU值。当同一网络上的主机互相进行通信时,该网络的MTU对通信双方非常重要。但当主机间要通过很多网络才能通信时,对通信双方最重要的是通信路径中最小的MTU,因为在通信路径上不同网络的链路层MTU不同。通信路径中最小的MTU被称为路径MTU。
     网络中一些常见链路层协议MTU的缺省数值如下:
  • FDDI协议:4352字节
  • 以太网(Ethernet)协议:1500字节
  • PPPoE(ADSL)协议:1492字节
  • X.25协议(Dial Up/Modem):576字节
  • Point-to-Point:4470字节

5.CSMA/CD(Carrier Sense Multiple Access/Collision Detect)即载波监听多路访问/冲突检测机制。

     作用:
         载波监听多点接入/碰撞检测是防止连接在总线上的各站点之间发生冲突,协调总线上各计算机工作的协议。
     多点接入:
          说明这是总线型网络,许多计算机以多点接入的方式连接到总线上
     载波监听:
          是指每一个站在发送数据之前要检测一下总线上是否有其他的计算机在发送数据,如果有,则暂时不发送数据,以免发生碰撞
     碰撞检测:
          边发送数据边检测信道上的信号电压大小。当信号电压摆动值超过一定的门限值,表明发生了碰撞。立即停止发送,等待一段时间后再次发送。
     

TCP/IP详解学习笔记(2)-- 数据链路层的更多相关文章

  1. TCP/IP详解学习笔记(2)-数据链路层

    数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请 求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP ...

  2. TCP/IP详解学习笔记(2)-数据链路层【转】

    转自:http://blog.csdn.net/goodboy1881/article/details/665061 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP ...

  3. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  4. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  6. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  7. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  8. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  9. TCP/IP详解学习笔记(3)-- IP:网际协议

    1.概述      IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输.      IP提供不可靠,无连接的数据报传送服务. 不可靠:它不能保 ...

  10. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

随机推荐

  1. CXF超时设置

    转自: http://peak.iteye.com/blog/1285211 http://win.sy.blog.163.com/blog/static/9419718620131014385644 ...

  2. MySQL key/value存储方案(转)

    需求 250M entities, entities表共有2.5亿条记录,当然是分库的. 典型解决方案:RDBMS 问题:由于业务需要不定期更改表结构,但是在2.5亿记录的表上增删字段.修改索引需要锁 ...

  3. Java compiler level does not match the version of the installed Java project facet. springmvc1 和 Target runtime Apache Tomcat v7.0 is not defined.

    Java compiler level does not match the version of the installed Java project facet.springmvc1 : Targ ...

  4. 《挑战程序设计竞赛》 4.1.1 矩阵 P286

    想写几篇挑战的感悟,也有助于自己理解这本书.但这上面大多贴的是书上的代码,主要是为了用的时候后直接复制就好了,这样就很方便了,就相当于黑盒模板了. 1.线性方程组 /** \brief 高斯消元法 * ...

  5. Mongodb(1)如何存储以及简介

    在学习一个数据库之前应该了解这个数据库是如何存储的,是不是适合你所需要的存储方式. 如果上来就说命令,理解起来似乎有点麻烦. 不管学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是 ...

  6. C++模板元编程 - 1 基本数据类型和运算

    这是博客开通前几天做的,C++的模板没办法存方便的浮点数,算了. 基本类型的设计参考了vczh轮子叔模仿boost的MPL的设计. 话说template和typename写多了真是无限烦人啊,不得已定 ...

  7. A+B问题 涉及EOF

    输入将包括一系列对的整数a和b,通过一空间,一对每行整数分离的.  产量 对于每对输入的整数a和b你应该输出的a和b的总和在一行,并用输出的一个行中输入每一行.  样本输入 1 5  2 3  样本输 ...

  8. ruby中的reject和reject!

    reject和reject!reject返回不满足代码块的元素数组reject!删除数组中满足代码块的元素 a=[1,2,3,5]a.reject! {|x| x<4}p a #[5] b = ...

  9. 最完美的xslt数值函数与字符串函数(转)

    http://www.cnblogs.com/guoxu/articles/1744007.html 任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XS ...

  10. vs报算术运算溢出的错误

    是因为查询的数据量太大,把数据量减少点就不会报这个错了. 或者查询速度快点比如加索引也可能解决,待确定.