tcp/ip详解 卷1 -- 链路层
以太网
以太网指数字设备公司,英特尔公司,Xeror公司在 1982年联合公布的一个标准, 是当前 TCP/IP 采用的主要局域网技术.
以太网采用 CSMA/CD 的媒体接入方法, 即 带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection), 速率 10 MB/s , 地址 48 bit.
IEEE 802委员会公布了其网络标准,并定义了不同的帧格式:
802.2 : 3/4/5 的共同特性, 即 802网络共有的逻辑链路控制(LLC)
802.3 : 针对整个 CSMA/CD 网络
802.4 : 针对令牌总线网络
802.5 : 针对 令牌环网络
** 802.2 和 802.3 定义的帧格式与以太网不同.
RFC 894 : 以太网数据包的封装.
RFC 1042 : IEEE 802 网络的IP数据包封装
主机需求 RFC , 要求每台 Internet主机都与一个 10 Mb/s 的以太网网线相连:
1) 必须能发送和接受 RFC 894 封装格式的分组;
2) 应该能接受与 RFC 894 和 RFC 1042 封装格式的分组;
3) 也许能够发送采用 RFC 1042 格式封装的分组. 如果主机能同时发送两种类型的分组数据, 那么发送的分组必须是可设置的, 且默认条件下必须是 RFC 894 分组.
以太网封装格式
6 bit, 48 位 目的地址 : MAC 地址
6 bit, 48 位 源地址 : MAC 地址
2 bit, 类型 :
数据字段 :
CRC : 用于帧内后续字节差错的循环冗余校验.
** 最少字节 46 字节, 不足空间插入填充字节(PAD)
IEEE 802.2/802.3 封装格式
6 bit, 48 位 目的地址 : MAC 地址
6 bit, 48 位 源地址 : MAC 地址
2 bit, 长度 : 后续数据的字节长度, 不包含 CRC 校验码.
3 bit, 802.2 LLC, 逻辑链路控制 :
1 bit, DSAP (Destination Service Access Point) : 0xaa
1 bit, SSAP (Source Service Access Point) : 0xaa
1 bit, ctrl : 3
5 bit, 802.2 SNAP, 子网接入协议(Sub-network Access Protocol) :
3 bit, org_code : 全为 0
2 bit, 类型 : 同以太网帧格式类型.
数据字段 :
CRC : 用于帧内后续字节差错的循环冗余校验.
** 最少字节 36 字节, 不足空间插入填充字节(PAD)
以太网封装 与 IEEE 802 封装区分 :
802 定义的有效长度值域以太网的有效类型值无一相同, 可以依次作为区分.
尾部封装 : 遭到反对.
通过调整 IP 数据报中字段的次序来提高性能。在以太网数据帧中,开始的那部分是变长的字段
(IP 首部和 TCP首部)。把它们移到尾部(在 CRC 之前),这样当把数据复制到内核时,就可以
把数据帧中的数据部分映射到一个硬件页面,节省内存到内存的复制过程。 TCP数据报的长
度是512字节的整数倍,正好可以用内核中的页表来处理。两台主机通过协商使用 ARP 扩展协
议对数据帧进行尾部封装。这些数据帧需定义不同的以太网帧类型值。
SLIP,Serial Line IP (串行接口链路层协议)
一种在串行线路上对IP数据报进行封装的简单格式, 描述于 RFC 1055 . 适用于 RS-232串行端口和高速调制解调器接口.
帧格式 : END & ESC
1. ip数据包以一个称作 END(0xc0) 的特殊字符结束, 同时,为了防止数据报到来之前的线路噪声被当做数据报内容, 大多数实现在数据包的开始处也传一个 END 字符.
2. 如果IP报文中某个字符为 END, 那么久要连续传输两个字符 oxdb 和 0xdc 来取代它. 0xdb 这个特殊字符被称作 SLIP 的 ESC 字符, 但是他的值域 ASCII 码的 ESC 字符(0x1b)不同.
3. 如果 IP 报文中某个字符为 SLIP 的 ESC 字符, 那么就要连续传输两个字节 0xdb 和 0xdd 来取代它.
缺陷 :
1. 每一端必须知道对方的 IP 地址, 没有办法吧本段的 IP 地址通知给另一端.
2. 数据帧中没有类型字段, 如果一条串行线路用于 SLIP, 那么他不能同时使用其他协议.
3. SLIP 没有在数据帧中加上校验和. 如果 SLIP 传输的报文发生错误, 只能通过上层协议来发现. 这样, 上层协议提供的某种形式的 CRC 就显得很重要.
SLIP 是一种广泛使用的协议.
CSLIP, 压缩 SLIP
背景
由于串行线路的速率通常较低(19200 b/s 或 更低), 而且通信经常是交互式的, 因此在 SLIP 线路上有许多小的 TCP 分组进行交换. 为了传输 1 个字节的数据, 需要 20 个字节的IP首部和 20 个字节的 TCP 首部, 总数超过 40 字节.
CSLIP : RFC 1144
CSLIP 一般能把上面的 40 个字节压缩到 3 或 5 个字节;
能在 CSLIP 的每一段维持多达 16 个TCP链接, 并且知道其中每个链接的首部中的某些字段一般不会发生变化. 对于发生变化的字段, 大多数只是一些小的数字和的改变
CSLIP 主要用于缩短交互响应时间.
现在大多数支持 SLIP 的产品都支持 CSLIP .
PPP, 点对点协议
PPP 修改了 SLIP 协议中的所有缺陷.
ppp 包含以下三部分 :
1) 在串行链路上封装IP数据报的方法.
支持数据为8位和无奇偶校验的异步模式;
支持面向比特的同步链接.
2) 建立,配置及测试数据链路的链路控制协议(LCP, Link Control Protocol).
允许通信双方进行协商, 以确定不同的选项.
3) 针对不同网络层协议的 网络控制协议(NCP, Network Control Protocol).
当前 RFC 规定的网络层有 IP,OSI网络层,DECnet 及 AppleTalk.
PPP 数据帧封装格式:
标志字节 : 值为 0x7e, 位于报文开头和结束.
地址字节 : 值为 0xff
控制字节 : 值为 0x03
协议字段 :
0x0021 : IP 数据报文
0xc021 : 链路控制数据
0x8021 : 网络控制数据
CRC : 循环冗余校验码, 也称为 (FCS, 帧检验序列)
----------------------------------------------
标识位(0x7e)转义:
1. 在同步链路中 :
通过一种称作比特填充(bit stuffing)的硬件技术来完成.
2. 在异步链路中 :
特殊字符 0x7d 用作转义字符.
3. 在 PPP 数据帧中 : 紧接着字符的第6个比特要取其不补码.
① 当遇到字符 0x7e 时, 需要连续传送两个字符 : 0x7d 和 0x5e, 以实现标志字符的转义.
② 当遇到转义字符 0x7d 时, 需连续传送两个字符: 0x7d 和 0x5d, 以实现转义字符的转义.
③ 默认情况下, 如果字符的值小于 0x20 , 一般都要记性转义. 例如, 遇到字符 0x01 时需要连续传送 0x7d 和 0x21 两个字符(此时, 第6个比特取补码后变为1, 而前面两种情况均把它变为 0).
PPP比SLIP具有如下优点:
1) PPP 支持在单根串行线路上运行多种协议;
2) 每一帧都有循环冗余校验
3) 通信双方可以进行IP地址的动态协商;
4) 与 CSLIP 类似, 对 TCP 和 IP 报文首部进行压缩;
5) 链路控制协议可以对多个数据链路选项进行设置;
6) 代价: 每一帧都不增加三个字节; 当建立链路时于要发送几帧协商数据, 以实现更为复杂的实现.
环回(loopback)驱动程序
环回接口(Loopback Interface), 允许运行在同一台主机上的客户程序和服务器程序通过 TCP/IP 进行通信. A 类网络号 127 就饿会为 环回接口预留的. 惯例上把 IP 地址 127.0.0.1 分配给 loopback 接口, 并命名为 localhost .
一个传给环回接口的 IP 数据包不能在任何网络上出现.
传输流程 :
当传输层检测到目的端地址是环回地址时, 数据仍然会完成在传输层和网络层的所有过程, 只是当 IP 数据报离开网络层的时候, 吧它返回给自己.
① 传给环回地址的任何数据都作为IP输入;
② 传给广播地址或多播地址的数据报, 赋值一份传给环回接口, 然后送到以太网.
③ 任何传给该主机IP地址的数据均送到环回接口.
MTU 和 路径 MTU
MTU : 最大传输单元.
以太网 : 1500 字节
802.3 : 1492 字节
如果IP层的一个数据报大于 链路层的 MTU, 则 IP 层就要进行分片(fragmentation), 每一片都小于 MTU.
** 点到点的链路层(SLIP,PPP)的MTU并非是网络媒体的物理特性, 它是一个逻辑限制, 目的是为交互使用提供做够快的响应时间.**
路径MTU :
如果两台主机之间的通信要通过多个网络, 每个网络的链路层就坑有由不同的 MTU, 重要是不是两台主机所在网络的 MTU 值, 而是两台通信主机路径中最小的 MTU, 它被称为 路径MTU.
两台主机之间的路径MTU并一定是一个常数, 它取决于当时所选择的路由, 而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同), 因此路径MTU 在两个方向上不一定是一致的.
RFC 1191 描述了 路径MTU 的发现机制.
tcp/ip详解 卷1 -- 链路层的更多相关文章
- 《TCP/IP详解卷1:协议》第2章 链路层-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
随机推荐
- poj1159二维树状数组
Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...
- 设计模式的征途—5.原型(Prototype)模式
相信大多数的人都看过<西游记>,对孙悟空拔毛变出小猴子的故事情节应该都很熟悉.孙悟空可以用猴毛根据自己的形象复制出很多跟自己一模一样的小猴兵出来,其实在设计模式中也有一个类似的模式,我们可 ...
- SDN学习之Mininet验证OpenFlow协议版本
最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...
- windows10 配置 华为vpn客户端
2017-05-08 1. 安装客户端软件VPNClient_V100R001C02SPC703.exe 2. 新建vpn 安装完成后,打开客户端连接vpn,发现未启用虚拟网卡(这是因为还需要安装客户 ...
- 学习MVC之租房网站(九)-房源显示和搜索
在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...
- jquery之属性操作
jQuery之属性操作 相信属性这个词对大家都不陌生.今天我就给大家简单地介绍一下JQuery一些属性的操作 属性一共分三大类 一.基本属性 1.attr 2.removeAttr 3.prop 4. ...
- Struts流程分析+源码分析
1.初始化工作 读取配置---转换器-----读取插件 当struts-config.xml配置文件加载到内存,则会创建两个map:ActionConfigs,FromBeans.这两个map都交由M ...
- Zookeeper ZAB 协议分析
前言 ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议.在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeep ...
- yii2 resetful 授权验证
什么是restful风格的api呢?我们之前有写过大篇的文章来介绍其概念以及基本操作. 既然写过了,那今天是要说点什么吗? 这篇文章主要针对实际场景中api的部署来写. 我们今天就来大大的侃侃那些年a ...
- Java生成二维码--QRGen
最近公司需求需要生成一个二维码 , 由于之前没有接触过 , 故此做个记录 . 在网上找到了不少二维码生成工具,都蛮好用的. 不过要集成二维码生成功能到应用开发中,就要选择最好用成熟的库了,最终决定采用 ...