《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

时间:2021-06-07 00:19:04

章节回顾:

《TCP/IP详解卷1:协议》第1章 概述-读书笔记

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记

《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记

《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(2)-读书笔记

《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

1、引言

从图1-4可以看出,在TCP/IP协议族中,链路层主要有三个目的:

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

(1)为IP模块发送和接收IP数据报;

(2)为ARP模块发送ARP请求和接收ARP应答。

(3)为RARP发送RARP请求和接收RARP应答。

TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。

2、以太网和IEEE 802封装

(1)以太网

以太网一般是指数字设备公司(Digital Equipment Corp.)、英特尔和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法,意思是带冲突检测的载波侦听多路接入。它的速率为10Mb/s,地址为48 bit。

(2)IEEE 802封装

IEEE 802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。

注意:IEEE 802.2和802.3定义了一个与以太网不同的帧格式。

(3)相关RFC文档

在TCP/IP中,以太网IP数据报的封装是在RFC 894中定义的。IEEE 802网络的IP数据报封装是在RFC 1042中定义的。

主机需求RFC要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:

1)必须能发送和接收采用RFC 894(以太网)封装格式的分组。

2)应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。

3)也许能够发送采用RFC 1042格式封装的分组。

最常使用的封装格式是RFC 894定义的格式。图2-1显示了两种不同形式的封装格式。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

两种封装格式的说明:

(1)两种帧格式都采用48bit(6字节)的目的地址和源地址(802.3允许使用16 bi的地址,但一般是48 bi地址),称为硬件地址。ARP和RARP协议对32 bi的IP地址和48 bit的硬件地址进行映射。

(2)在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括CRC检验码。以太网的类型字段定义了后续数据的类型。

(3)在以太网帧格式中,类型字段之后就是数据;而在802帧格式中,跟随在后面的是3字节的802.2 LLC和5字节的802.2 SNAP。

(4)CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)。

(5)802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。

3、SLIP:串行线路IP

SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。下面的规则描述了SLIP协议定义的帧格式:

(1) IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。

(2)如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLI的ESC字符。

(3)如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。

图2-2中的例子就是含有一个END字符和一个ESC字符的IP报文。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

SLIP是一种简单的帧封装方法,值得一提的缺陷

(1) 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。

(2)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。

(3)SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输报文被线路噪声影响而发生错误,只能通过上层协议来发现。

尽管存在这些缺点,SLIP仍然是一种广泛使用的协议。

4、压缩的SLIP

由于串行线路的速率通常较低(19200b/s或更低),而且通信经常是交互式的,因此在SLIP线路上有许多小的TCP分组进行交换。为了传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节。

提出一个被称作CSLIP(压缩SLIP)的新协议,它一般能把上面的40个字节压缩到3或5个字节。它能在CSLIP的每一端维持多达16个TCP连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。

5、PPP:点对点协议

PPP点对点协议修改了SLIP协议中的所有缺陷。包括三个部分:

(1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。

(2)建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。

(3)针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。

图2-3是PPP数据帧的格式。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

(1)每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。

(2)协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,表示信息字段是一个 IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,表示信息字段是网络控制数据。

(3)CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。

(4)标志字符0x7e出现在信息字段中时,PPP需要对它进行转义。

总的来说,PPP比SLIP具有下面这些优点:

(1)PPP支持在单根串行线路上运行多种协议,不只是IP协议;

(2)每一帧都有循环冗余检验;

(3)通信双方可以进行IP地址的动态协商(使用IP网络控制协议);

(4)与CSLIP类似,对TCP和IP报文首部进行压缩;

(5)链路控制协议可以对多个数据链路选项进行设置。

为这些优点付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

6、环回接口

大多数产品都支持环回接口,以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。

一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。图2-4是环回接口处理IP数据报的简单过程。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

图2-4的说明:

(1)传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。

(2)传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。

(3)任何传给该主机IP地址的数据均送到环回接口。

(4)环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口,就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。从图2-4可以看出,送给主机本身IP地址的IP数据报一般不出现在相应的网络上。

7、最大传输单元MTU

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

8、路径MTU

当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。

两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的

9、串行线路吞吐量计算

如果线路速率是9600b/s,而一个字节有8bit,加上一个起始比特和一个停止比特,那么线路的速率就是960B/s(字节/秒)。以这个速率传输一个1024字节的分组需要1066ms。如果用SLIP链接运行一个交互式应用程序,同时还运行另一个应用程序如FTP发送或接收1024字节的数据,那么一般来说就必须等待一半的时间(533ms)才能把交互式应用程序的分组数据发送出去。

对于交互应用来说,等待533ms是不能接受的。研究表明,交互响应时间超过100~200ms就被认为是不好的,这是发送一份交互报文出去后,直到接收到响应信息(通常是出现一个回显字符)为止的往返时间。

注意:我们对平均等待时间的计算(传输最大数据帧所需时间的一半)只适用于SLIP链路(或PPP链路)在交互通信和大块数据传输这两种情况下。

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记的更多相关文章

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

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

  2. 《TCP/IP详解 卷1:协议》读书笔记

    第一章 概述 协议栈 应用层 HTTP,FTP   运输层 TCP, UDP 段(Segment) 网络层 IP, ICMP, IGMP 数据报(Datagram) 链路层   帧(Frame) 物理 ...

  3. tcp/ip详解 卷1 -- 协议概述

    第一章 概述 分层 TCP/IP 通常被认为是一个四层协议系统. 每一层负责不同的功能. 链路层, 也成为数据链路层或者网络接口层. 通常包括 操作系统中的设备驱动程序和计算机中对应的网络接口卡. 主 ...

  4. 【TCP/IP详解 卷一:协议】第一章概论 学习笔记

    第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP &lt ...

  5. TCP&sol;IP详解 卷1 第十九章 TCP的交互数据流

    19.1 引言 成块数据:比如ftp.电子邮件.Usenet新闻 交互数据:Telnet.Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlo ...

  6. 《TCP&sol;IP详解卷1:协议》第1章 概述-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  7. 《TCP&sol;IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  8. 《TCP&sol;IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  9. 《TCP&sol;IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

随机推荐

  1. 列王的纷争,COK,675区,有去的没有?加群:159108918,盟的名字准备叫:大话西游

    首先我承认我玩物丧志了 679区,有去的没有?加群: 474574809,盟的名字叫:Moon Box 如何练最强5级号,为新区做准备?! 粮食是可以为0的,士兵不会死,这是关键之一. 关键之二是新手 ...

  2. IOS之UI--自定义按钮实现代理监听点击事件

    前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlE ...

  3. 与Wii控制手柄通信的托管代码库&lpar;转&rpar;

    2009-01-16 翻译 HID Human Input Device     人工输入设备 Wii Fit Balance Board       平衡板 IR                   ...

  4. 如何在Ubuntu安装&ast;&period;exe文件

    下载及安装 若你使用 Debian 或者 Ubuntu 之类的发行版,只需要一个命令即可完成安装: apt-get install wine 若你使用的为其他发行版,请访问 http://winehq ...

  5. Direct UI 思想阐述(好多相关文章)

    在界面开发中,目前DirectUI是个热门的技术名称,因为众多的知名公司都是用DirectUI方式作出了很炫丽的界面.而对于大多数熟悉Win32控件,熟悉MFC开发的开发人员来说,我们应该做何选择? ...

  6. Qt之设置QWidget背景色(QStyleOption-&gt&semi;drawPrimitive&lpar;QStyle&colon;&colon;PE&lowbar;Widget&rpar;方法比较有趣)

    QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 1.使用QPalette2.使用Style Sheet3.绘图事 ...

  7. Android使用gradle不同配置多项目打包

    //build.gradle该配置文件里路径均是相对路径 apply plugin: 'com.android.application' android { def suffix = "su ...

  8. Python3个人学习笔记--每天一点一滴成长!

    简单的while循环:输入一个数字,while获取该数字,并输出该数字. 例子:猜幸运数字是多少? lucky_num = int(input("number:")) a = 0 ...

  9. python模块中sys&period;argv&lbrack;&rsqb;使用

    一.sys 模块 sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口. 官方的文档参考:https://docs.python.org/ ...

  10. 通过指定的 url 去网络或者文件服务器下载文件到本地某个文件夹

    /** * 从网络Url中下载文件 * @param urlStr 指定的url * @param fileName 下载文件到本地的名字 * @param savePath 本地保存下载文件的路径 ...