zoukankan      html  css  js  c++  java
  • TCP/IP详解学习笔记(2)-- 数据链路层

    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)即载波监听多路访问/冲突检测机制。
         作用:
             载波监听多点接入/碰撞检测是防止连接在总线上的各站点之间发生冲突,协调总线上各计算机工作的协议。
         多点接入:
              说明这是总线型网络,许多计算机以多点接入的方式连接到总线上
         载波监听:
              是指每一个站在发送数据之前要检测一下总线上是否有其他的计算机在发送数据,如果有,则暂时不发送数据,以免发生碰撞
         碰撞检测:
              边发送数据边检测信道上的信号电压大小。当信号电压摆动值超过一定的门限值,表明发生了碰撞。立即停止发送,等待一段时间后再次发送。
         
  • 相关阅读:
    latex之插入伪代码 [转]
    BIBTeX制作参考文献 [转]
    latex 页眉设置 [转]
    python : list tuple set dictionary [转]
    ctags使用简介 [转]
    conda在指定目录下创建虚拟环境
    Ubuntu系统安装Anaconda3
    ModuleNotFoundError: No module named 'google' 问题解决方案
    PyCharm无法输入中文
    checkpoint文件
  • 原文地址:https://www.cnblogs.com/newwy/p/3216457.html
Copyright © 2011-2022 走看看