版权声明:本文为博主原创文章,转载请标注转载链接,谢谢。

 

目录(?)[+]

 

引言

        在TCP/IP协议族中,链路层主要有三个目的:
  • 为IP模块发送和接收IP数据报。
  • 为ARP模块发送ARP请求和接收ARP应答。
  • 为RARP发送RARP请求和接收RARP应答。
                         

TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件。(以太网、令牌环网、FDDI、RS-232串行线路)。本章将详细讨论以太网链路层协议、两个串行接口链路层协议(SLIP和PPP),以及大多数实现都包含的环回(loopback)驱动程序。

 

以太网封装和IEEE 802封装

        以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以10Mb/S的速率运行在多种类型的电缆上。
        IEEE(电子电气工程师协会)802委员会公布了一个标准集。其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,即802网络共用的逻辑链路控制(LLC)。然而,802.2和802.3定义了一个与以太网不同的帧格式。(注意将以太网帧与802帧区分开来)
        在TCP/IP世界中,以太网IP数据报的封装在RFC 894中定义。IEEE 802网络的IP数据报封装在RFC 1042中定义。在主机需求RFC中要求每一台Internet主机都与一个10Mb/s的以太电缆连接:
  • 必须能发送和接收采用RFC 894(以太网)封装格式的分组。
  • 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。
  • 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送这两种类型的分组数据,那么发送的分组必须是可以设置的,同时默认情况下必须是RFC 894分组。
        其中最常用的封装格式是RFC 894(以太网封装)定义的格式。
        两种帧格式都采用48bit(6字节)的目的地址和源地址。这就是在本书中称为的硬件地址。ARP和RARP协议对32bit的IP地址和48bit的硬件地址进行映射(后续介绍)。接下来的2个字节在两种帧格式中互不相同。在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包含CRC检验码。以太网的类型字段定义了后续数据的类型。幸运的是,802定义的有效长度值与以太网的有效类型值无一相同。这样,就可以对两种帧格式进行区分。同时,802标准定义的帧定义中,类型字段由后续的子网接入协议(SNAP, Sub-network Access Protocol)给出。
        从上图可知,无论是以太网封装格式,还是IEEE 802 封装格式,在数据链路层中传递的数据类型主要有三种:IP数据报、ARP请求/应答、RARP请求/应答。
        在以太网帧格式中,类型字段之后即为数据。而在802帧格式中,跟随在其后的为3字节的802.2LLC和5个字节的SNAP。其中目的服务访问点( Destination Service Access Point)和源服务访问点(Source Service Access Point)即后面控制字段、orgcode的值都为固定值(如图所示)。CRC字段用于帧内后续字节差错的循环冗余检验(也被称为FCS)(后续介绍)。
        802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分长度至少为38字节,而对于以太网帧,则最少要求46字节长度的数据部分。为了保证这一点,可能需要在必要时插入填充字节。(后续介绍)
        

尾部封装

        描述了另一种用于以太网的封装格式,称为尾部封装。它通过调整IP数据报中字段的次序来提高性能。将(IP首部和TCP首部)它们移到尾部(在CRC之前),这样当把数据复制到内核时,就可以把数据帧中的数据部分映射到一个硬件页面,节约内存到内存的复制过程(因为TCP数据报的长度为512字节的整数倍,正好可以用内核中的页表来处理)。但现在尾部封装已经遭到反对。这里仅仅介绍尾部封装而不讨论它。

《TCP/IP详解卷一:协议》数据链路层(一)的更多相关文章

  1. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  2. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  4. TCP/IP详解 卷一(第一章 概述)

    很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...

  5. 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议

    11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...

  6. 【TCP/IP详解 卷一:协议】TCP的小结

    前言:TCP学习的综述 在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它. TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为 ...

  7. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置

    简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——11

    2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...

  9. 【TCP/IP详解 卷一:协议】第四章 ARP:地址解析协议 以及其他部分的一些知识

    4.1 引言 数据链路 如以太网(Ethernet) 或者 令牌环网 都有自己的寻址机制(一般为 48 bit 的地址). 一个网络(数据链路层) 可以同时被多个不同的网络使用.比如,一组使用TCP/ ...

随机推荐

  1. 02-cookie案例-显示用户上次访问网站的时间

    package cookie; import java.io.IOException;import java.io.PrintWriter;import java.util.Date; import ...

  2. HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()

    无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...

  3. 【Selenium + Python】路径报错之OSError: [Errno 22] Invalid argument: './t/report/2018-03-23_11:03:12_report.html'

    现象: 此问题真的是太痛苦了,查了好多资料是说路径的问题,结果还是报错,后来一点点的排查才发现原来是!!!!!! 废话不多说上原来代码: if __name__ == '__main__': star ...

  4. spring AOP(切面) 表达式介绍

    在 spring AOP(切面) 例子基础上对表达式进行介绍 1.添加接口删除方法 2.接口实现类 UserDaoServer 添加实现接口删除方法 3.测试类调用delUser方法 4. 输出结果截 ...

  5. ClassNotFoundException Log

    Studio 运行时异常: Error:Execution failed for task ':app:compileDebugJavaWithJavac'.> Compilation fail ...

  6. EasyPlayerPro windows播放器在播放RTMP视频显示重复异常问题解决

    问题来源 2017.12.18 今日有杭州某教育领域客户反馈EasyPlayerPro在播放一个rtmp源时,画面显示异常的问题.截图如下: 问题复现 一番思考, 将显示格式改为D3D显示, 正常, ...

  7. Angular入门(四) Router 替换当前页面

    1.在 xx.html 中直接 写标签       <a [routerLink]="['/home']">home</a>   2.在 xx.html 中 ...

  8. 时间写入文件名 nohup 原理 Command In Background your shell may have its own version of nohup

    echo 123 > `date +%Y-%m-%d-%H.tmp` echo 123 > /home/`date +%Y-%m-%d-%H.tmp` nohup --help [root ...

  9. 2017-2018-1 20179209《Linux内核原理与分析》第三周作业

    一.函数调用堆栈 存储程序.函数调用堆栈(高级语言起点)和中断机制是计算机工作的三大法宝.其中函数调用堆栈是本次学习的重点.先介绍一些基本的知识点: 1.ebp 在C语言中用作记录当前函数调用的基址: ...

  10. BZOJ3878: [Ahoi2014&Jsoi2014]奇怪的计算器

    BZOJ3878: [Ahoi2014&Jsoi2014]奇怪的计算器 Description [故事背景] JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模 ...