TCP/IP 笔记 1.2 链 路 层
都是包含三种类型。根据类型字段的值来进行区分
2.4 SLIP:串行线路IP
S L I P的全称是Serial Line IP。它是一种在串行线路上对 I P数据报进行封装的简单形式,在RFC 1055[Romkey 1988]中有详细描述。 S L I P适用于家庭中每台计算机几乎都有的 R S - 2 3 2串行端口和高速调制解调器接入 I n t e r n e t。
下面的规则描述了 S L I P协议定义的帧格式:
1) IP 数据报以一个称作 E N D(0 x c 0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 E N D字符(如果有线路噪声,那么 E N D字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
2) 如果 I P报文中某个字符为 E N D,那么就要连续传输两个字节 0 x d b和0 x d c来取代它。0 x d b这个特殊字符被称作 S L I P的E S C字符,但是它的值与 A S C I I码的E S C字符(0 x 1 b)不同。
3) 如果I P报文中某个字符为 S L I P的E S C字符,那么就要连续传输两个字节 0 x d b和0 x d d来取代它。
图2 - 2中的例子就是含有一个 E N D字符和一个 E S C字符的 I P报文。在这个例子中,在串行线路上传输的总字节数是原 I P报文长度再加4个字节。
S L I P是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的 I P地址。没有办法把本端的 I P地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于 S L I P,那么它不能同时使用其他协议。
3 ) S L I P没有在数据帧中加上检验和(类似于以太网中的 C R C字段)。如果 S L I P传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的 C R C就显得很重要。 I P首部和 T C P首部及其数据始终都有检验和。U D P首部及其数据的检验和却是可选的。
尽管存在这些缺点, S L I P仍然是一种广泛使用的协议。
2.5 压缩的SLIP
C S L I P(即压缩 S L I P),它在RFC 1144[Jacobson 1990a]中被详细描述。 C S L I P一般能把上面的 4 0个字节压缩到 3或5个字节。它能在 C S L I P的每一端维持多达 1 6个T C P连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。
2.6 PPP:点对点协议
P P P,点对点协议修改了 S L I P协议中的所有缺陷。 P P P包括以下三个部分:
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的前面)。
RFC 1548[Simpson 1993]描述了报文封装的方法和链路控制协议。 RFC 1332[McGregor1 9 9 2 ]描述了针对 I P的网络控制协议。
P P P数据帧的格式看上去很像 I S O的H D L C(高层数据链路控制)标准。图 2 - 3是P P P数据帧的格式。
(1)每一帧都以标志字符 0 x 7 e开始和结束。紧接着是一个地址字节,值始终是 0 x ff,然后是一个值为0 x 0 3的控制字节。
(2)接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1时,表示信息字段是一个 I P数据报;值为 0 x c 0 2 1时,表示信息字段是链路控制数据;值为 0 x 8 0 2 1时,表示信息字段是网络控制数据。
(3)C R C字段(或F C S,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P需要对它进行转义。
在同步链路中,该过程是通过一种称作比特填充 (bit stuff i n g )的硬件技术来完成的 [ Ta n e n b a u m1 9 8 9 ]。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:
1) 当遇到字符 0 x 7 e时,需连续传送两个字符: 0 x 7 d和0 x 5 e,以实现标志字符的转义。
2) 当遇到转义字符 0 x 7 d时,需连续传送两个字符: 0 x 7 d和0 x 5 d,以实现转义字符的转义。
3 ) 默认情况下,如果字符的值小于 0 x 2 0(比如,一个 A S C I I控制字符),一般都要进行转义。例如,遇到字符 0 x 0 1时需连续传送 0 x 7 d和0 x 2 1两个字符(这时,第 6个比特取补码后变为1,而前面两种情况均把它变为 0)。
P P P比S L I P具有下面这些优点:
(1) PPP支持在单根串行线路上运行多种协议,不只是I P协议;
(2) 每一帧都有循环冗余检验;
(3) 通信双方可以进行 I P地址的动态协商(使用I P网络控制协议);
(4) 与C S L I P类似,对 T C P和I P报文首部进行压缩;
(5) 链路控制协议可以对多个数据链路选项进行设置。
为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。
2.7 环回接口
大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过 T C P / I P进行通信。 A类网络号 1 2 7就是为环回接口预留的。根据惯例,大多数系统把 I P地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为 l o c a l h o s t。一个传给环回接口的 I P数据报不能在任何网络上出现。
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当I P数据报离开网络层时把它返回给自己。
1) 传给环回地址(一般是 1 2 7 . 0 . 0 . 1)的任何数据均作为 I P输入。
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第 1 2章)包含主机本身。
3 ) 任何传给该主机 I P地址的数据均送到环回接口。
看上去用传输层和 I P层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环回接口可以被看作是网络层下面的另一个链路层。
大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址,一般为1 2 7 . 0 . 0 . 1。也可以通过发送 I P数据报给主机所拥有的任一 I P地址。当环回数据回到上层的协议栈中时,它已经过传输层和 I P层完整的处理过程。
2.8 最大传输单元MTU
以太网和 8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1 5 0 0和1 4 9 2字节。链路层的这个特性称作M T U,最大传输单元。不同类型的网络大多数都有一个上限。 如果 I P层有一个数据报要传,而且数据的长度比链路层的 M T U还大,那么 I P层就需要进行分片( f r a g m e n t a t i o n),把数据报分成若干片,这样每一片都小于 M T U。
2.9 路径MTU
当在同一个网络上的两台主机互相进行通信时,该网络的 M T U是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的 M T U。重要的不是两台主机所在网络的 M T U的值,重要的是两台通信主机路径中的最小 M T U。它被称作路径M T U。
两台主机之间的路径 M T U不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从 A到B的路由可能与从 B到A的路由不同),因此路径M T U在两个方向上不一定是一致的。
TCP/IP 笔记 1.2 链 路 层的更多相关文章
- TCP/IP四层模型和OSI七层模型
TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对 ...
- TCP/IP四层模型和OSI七层模型的概念
转:http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了T ...
- TCP/IP详解与OSI七层模型
TCP/IP协议 包含了一系列构成互联网基础的网络协议,是Internet的核心协议.基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层.网络层.传输层和应用层.下图表示TCP/IP模型与 ...
- TCP/IP四层模型和OSI七层模型(模型分层的作用是什么)
TCP/IP四层模型和OSI七层模型的概念(模型分层的作用是什么) 一.总结 一句话总结: 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错: 在各层分别定义标准接口,使具 ...
- TCP/IP 笔记 - 链路层
链路层的目的是为IP模块发送和接收IP数据报. 以太网和IEEE 802局域网标准 以太网指的是一套标准,有DEC.Intel公司和Xerox公司在1980年首次发布,并在1982年加以修订.第一个常 ...
- TCP/IP 笔记 - 安全
安全:可扩展身份认证协议.IP安全协议.传输层安全.DNS安全.域名密钥识别邮件 任何由用户或以用户账号执行却违背了用户本身意愿的软件被称为恶意软件 网络安全是一门十分广泛及有深度的学识,而本书旨在了 ...
- TCP/IP笔记(1)
TCP/IP 背景和介绍 上世纪 70 年代,随着计算机技术的发展,计算机使用者意识到:要想发挥计算机更大的作用,就要将世界各地的计算机连接起来.但是简单的连接是远远不够的,因为计算机之间无法沟通.因 ...
- TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议
ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...
- TCP/IP 笔记 - 防火墙和网络地址转换
防火墙是位于内部网和外部网之间的屏障,是系统的第一套防线,作用是防止非法用户的进入. 网络地址转换是一种IP数据包通过路由器或防火墙时通过重写来源IP地址或目的地址的技术,可以用来隐藏或保护内部网络, ...
随机推荐
- review04
在编译源文件时,所用到的其他源文件也会被自动编译.这是因为它会使用到其他源文件产生的字节码文件. javac A.java A指的是源文件的名称 java B B指的是源文件中有main方法的类. 虽 ...
- jenkins自动发送邮件配置
一. 前提:确保插件存在 在一切开始之前,必须得确保任务配置里有两个插件:E-mail Notification(邮件通知) 和 Editable Email Notification(可编辑的邮件通 ...
- 算法练习1---桶排序java版
今天复习了桶排序. 例如现在有满分为10分的试卷,学生得分分别为2,8,5,3,5,7,现在要给这些分数按照从大到小输出,使用桶排序的思想:有11个桶,每个桶有一个编号,编号从0-10,每出现一个分数 ...
- Tomcat翻译--Context Container
原文:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Definitions The Context Cont ...
- Rainmeter如何打开控制面板的小程序
控制面板功能都是通过访问cpl文件来关联它们的,假设你的系统盘在C盘,那么它们的本地在C:\Windows\System32\ Rainmeter通过使用这个应用程序C:\Windows\System ...
- (转) Android Service完全解析,关于服务你所需知道的一切(上)
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...
- 剑指offer--4.斐波那契数列
int最大范围(有符号情况下,从第0项0开始)能取到第46项1836311903,47项溢出 时间限制:1秒 空间限制:32768K 热度指数:473928 题目描述 大家都知道斐波那契数列,现在要求 ...
- Zeroc Ice 负载均衡之Icegrid simple
最近学习Icestorm的replicated例子,在本地计算机上面跑通了,但在两台机器上(一台服务器192.168.0.113,一台客户端192.168.0.188),怎么都跑不通.上网求助,大家给 ...
- 数字排列(n,m)(搜索与回溯)
题目描述: 设有n个整数的集合{1,2,…,n},从中取出任意r个数进行排列(r<n),试列出所有的排列. 代码如下: #include<iostream>#include<c ...
- JSplitPane的简单实现
import java.awt.Color; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.J ...