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

 

目录(?)[+]

 

引言

        在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. ios美颜 调研 GPUImage GPUImageBeautifyFilter BeautifyFaceDemo

    最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,videoCore等),综合成本/效果/对项目侵入性,最后决定使用一款基于GPUImage实现的 Beauti ...

  2. 在WPF对话框中如何验证用户提供的数据

    在WPF中,MS在msdn的WPF应用程序开发中对用户输入的数据验证做了示范,基本思想就是添加各种类型的校验规则,比如最大最小值.字符串长度.是否为空等等,在后在界面绑定数据时添加数据字段的校验.这样 ...

  3. 淘宝(新浪)API获取IP地址位置信息

    package com.parse; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IO ...

  4. 关于spring的bean

    1 spring bean的单例和多例 singleton 单例指的是,在需要该bean的地方,spring framework返回的是同一个值. prototype 多例指的是,在需要该bean的地 ...

  5. a positive definite matrix

    https://en.wikipedia.org/wiki/Definite_quadratic_form https://www.math.utah.edu/~zwick/Classes/Fall2 ...

  6. Java for LeetCode 128 Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  7. 使用urllib2打开网页的三种方法(Python2)

    python2才有urllib2模块,python3把urllib和urllib2封装成了urllib模块 使用urllib2打开网页的三种方法 #coding:utf-8 import urllib ...

  8. 用vector代替实现二维数组

    vector可以用来模拟数组,当然也可以用来模拟二维数组: 定义如:vector<int>a[100];   相当于定义了一个100行的数组,当每行的大小是不确定的 模板应用如下: #in ...

  9. 51Nod 1515 明辨是非 —— 并查集 + 启发式合并

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1515 1515 明辨是非  题目来源: 原创 基准时间限制:1 ...

  10. HTML/CSS实现的搜索框

    谷歌和百度首页的搜索框都是<input>+<button>模式的,bing的搜索框感觉要好点儿.简言之,就是将提交按钮放到<input>中,其实这是做不到的,只能伪 ...