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

 

目录(?)[+]

 

引言

        在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. 玩转 eclipse:[1]如何快速找错-debug

    本文摘自百度经验 原文地址如下: 玩转 eclipse:[1]如何快速找错-debu eclipse是软件开发人员必备的IDE之一. 由于语言障碍或者是经验不足,许多刚刚新手并不清楚如何高效使用ecl ...

  2. Mac修改默认python版本

    研究python爬虫,需要用到Beautiful Soup 但是Mac默认的python版本为2.7 自己安装了3.6的版本 import 报错 查找资料: Mac在启动,会先加载系统配置文件(包括~ ...

  3. ios-逆向 手把手安装最新版Theos

      Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并且添加了很多全新的功能.所以,之前书上<iOS ...

  4. __str__ 和 __unicode__ 的区别和用法

    转自:https://www.cnblogs.com/painberg/p/8514860.html 简而言之,就是__str__和__unicode__都是为了再管理站点中加载这个表时想显示什么属性 ...

  5. EasyPlayerPro(Windows)流媒体播放器开发之接口设计

    EasyPlayerPro(windows)接口说明如下: EasyPlayerPro_Open 说明:打开一个媒体流或者媒体文件进行播放,同时返回一个 player 对象指针 参数说明: fileU ...

  6. Swift 学习笔记 (初始化)

    初始化是为类 结构体 或者枚举准备实例的过程.这个过程需要给实例里的每一个存储属性设置一个初始值并且在新实例可以使用之前执行任何其它所必需的配置或初始化. 初始化器 初始化器在创建特定类型的实例时被调 ...

  7. linux 防火墙配置与REJECT导致没有生效问题

    1.进入到/etc/sysconfig 如图 2.使用vi命令对iptables进行编辑."vi iptables",然后显示如图 # Firewall configuration ...

  8. HDU - 1260 Tickets 【DP】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意 有N个人来买电影票 因为售票机的限制 可以同时 卖一张票 也可以同时卖两张 卖两张的话 两 ...

  9. PAT 甲级 1128. N Queens Puzzle (20) 【STL】

    题目链接 https://www.patest.cn/contests/pat-a-practise/1128 思路 可以 对每一个皇后 都判断一下 它的 行,列 ,左右对角线上 有没有皇后 深搜解决 ...

  10. Linux线程的几种结束方式

    Linux创建线程使用 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) ...