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. [tty与uart]1.Linux中tty框架与uart框架之间的调用关系剖析

    转自:http://developer.51cto.com/art/201209/357501_all.htm 目录 1.tty框架 2.uart框架 3.自底向上 4.自顶向下 5.关系图 在这期间 ...

  2. 如何缩短SQL Server 的启动时间

    将/nosplash添加到SQLServer Manageement Studio的快捷方式可以缩短启动时间.为此,右击SSMS快捷方式(位于你的桌面上.start菜单中或任务栏中)并选择Proper ...

  3. 【转】SQL Server sql_variant 类型的比较

    sql_variant 类型用于存储SQL SERVER中支持的各种数据类型. 为了进行 sql_variant 比较,SQL Server 数据类型层次结构顺序划分为多个数据类型系,sql_vari ...

  4. 如何巧用.htaccess设置网站的压缩与缓存

    <IfModule mod_expires.c> ExpiresActive On ExpiresDefault A86400 ExpiresByType image/gif A25920 ...

  5. c++常用的一些库函数、常量和头文件

    1.常用数学函数 头文件 #include <math> 或者 #include <math.h>   函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 ...

  6. C#学习笔记五: C#3.0Lambda表达式及Linq解析

    最早使用到Lambda表达式是因为一个需求:如果一个数组是:int[] s = new int[]{1,3,5,9,14,16,22};例如只想要这个数组中小于15的元素然后重新组装成一个数组或者直接 ...

  7. sparkStreaming与Kafka整合

    createStream那几个参数折腾了我好久..网上都是一带而过,最终才搞懂..关于sparkStreaming的还是太少,最终尝试成功... 首先启动zookeeper ./bin/zookeep ...

  8. linux 标准输入输出

    文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket.最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应 ...

  9. 《精通SQL Server 2008》笔记

    7.3触发器的使用 7.4游标的使用 8索引/关系图/完整性 9用户管理

  10. 使用Modernizr探测HTML5/CSS3新特性

    [转] HTML5, CSS3以及相关技术(例如canvas和web sockets)带来了非常有用的特性,可以让我们的web程序提升一个新的level.这些新技术允许我们只用HTML,CSS和Jav ...