在TCP/IP协议族中,链路层主要有三个目的:

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

2)为ARP模块发送ARP请求和接受ARP应答;

3)为RARP模块发送RARP请求和接受RARP应答;

以太网和IEEE 802封装

以太网是1982年公布的一个标准,是当今TCP/IP采用的主要的局域网技术,它采用一种称为CSMA/CD的媒体接入方法,意思是带冲突检测的载波侦听多路接入,它的速率是10Mb/s,地址为48bit。

还有一个标准是IEEE 802标准。它和以太网的帧格式不同。802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络,这三者的共同特性由802.2标准定义,这就是802网络共有的逻辑链路控制(LLC)。

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

最常使用的封装格式是RFC 894定义的格式。下图是两种不同的封装格式。

上图中,第一个封装格式是802标准的,第二个是以太网格式的。

从上图可以看出,两种帧格式都采用48bit的目的地址和源地址,存放的是硬件地址。ARP和RARP协议会对32位IP地址和48位的硬件地址进行映射。

802接下来的是长度字段,指的是后续数据的长度,不包括CRC。而以太网接下来的类型字段定义了后续数据的类型。

以太网帧格式比较简单,接下来就是数据了。而802帧格式接下来是3个802.2的LLC和5字节的 SNAP(子网接入协议),其中,目的服务访问点(DSAP)和源服务访问点(SSAP)值都为0xaa,Ctrl字段值为3,随后的3个字节org code都为0,再接下来就是类型字段。

802.3规定数据部分至少为38字节,以太网则要求是46字节,如有不足的情况,就要填充字节。

SLIP:串行线路IP

这是一种在串行线路上对IP数据报进行封装的简单形式。

开始处和结束处传一个END(0xc0)的特殊字符。

如果报文中某个字符为END,那么就了连续传输两个字节0xdb和0xdc来取代。0xdb被称为SLIP的ESC字符。

如果报文中某个字符为ESC字符,那么就连续传输两个字节0xdb和0xdd。

值得一提的是,这是一个老的工业标准,目前已被PPP协议取代。

压缩的SLIP

为了传输一个字节需要20个字节的IP首部和20个字节的TCP首部。CSLIP一般能把这40个字节压缩到3到5个字节。

PPP:点对点协议

格式如上图,不再赘述。

环回接口

环回接口允许在同一台机器上的服务器程序和客户端程序通过TCP/IP进行通信。

最大传输单元MTU

也就是对数据帧的长度的限制,比如以太网的是1500字节。

当两个主机间的通信需要经过多个网络,那么其中最小的MTU称为路径MTU。

串行线路吞吐量计算

TCP/IP详解读书笔记:链路层的更多相关文章

  1. TCP/IP详解读书笔记:概述

    分层 分层是一种很通用的架构模式.通过分层,可以把一个系统分解成多个层,每个层专注于各自的功能,并提供接口给上面的层调用.上面的层不需要了解调用层的详细实现,只依赖于其接口,这就给维护带来了很大的好处 ...

  2. TCP/IP详解读书笔记:ARP-地址解析协议

    地址解析为两种不同的地址形式提供映射:32bit的IP和数据链路层使用的任何类型的地址. 当一台主机把以太网数据帧发送到位于同一局域网的另一台主机,是根据48bit的以太网地址而不是IP地址.设备驱动 ...

  3. tcp/ip详解 卷1 -- 链路层

    以太网 以太网指数字设备公司,英特尔公司,Xeror公司在 1982年联合公布的一个标准, 是当前 TCP/IP 采用的主要局域网技术. 以太网采用 CSMA/CD 的媒体接入方法, 即 带冲突检测的 ...

  4. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  6. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  7. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  8. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  9. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

随机推荐

  1. PowerShell中的一个switch的例子

    在这个例子中, 应该注意 Switch语句里对数字范围条件的使用 break的使用 字符串的拼接 数组的声明   ) foreach ($element in $array) { switch($el ...

  2. 隐藏系统EFI分区Z盘

    找到C:\Windows\System32\cmd.exe程序, 右键单击cmd 选择以管理员身份运行, 打开命令提示符,输入以下命令(不区分大小写)DiskPart回车List空格volume回车s ...

  3. (转)Linux下内存映射文件的用法简介

    简介: 内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对 ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)如何修改标准驱动器编码器分辨率

    在某个轴的Enc上双击,可以修改Scaling Factor Numerator     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetao ...

  5. Unity3d 显示IOS基本的游戏中心脚本

    using UnityEngine; using UnityEngine.SocialPlatforms; public class Startup : MonoBehaviour { // we'l ...

  6. angular -- $resource 用法

    安装 ngResource模块是一个可选的angularjs模块,如果需要使用,我们要单独引用js <script type="text/javascript" src=&q ...

  7. KVM Run Process之KVM核心流程

    在"KVM Run Process之Qemu核心流程"一文中讲到Qemu通过KVM_RUN调用KVM提供的API发起KVM的启动,从这里进入到了内核空间执行,本文主要讲述内核中KV ...

  8. 03-hibernate注解-关系映射级别注解-一对一

    实体之间的映射关系 一对一:一个公民对应一个身份证号码 一对多(多对一):一个人可以有多个银行账号 多对多:一个学生有多个老师,一个老师有多个学生. 一对一单向外键关联 @OneToOne(casca ...

  9. FIS3项目构建

    概述 FIS3采取了类似CSS语法一样的配置风格,易于理解与上手.FIS3 是面向前端的工程构建工具.解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自 ...

  10. 一个基于node express4.0和mongodb的活动报名

    代码放在code.csdn.net上了,详细https://code.csdn.net/qazwsx2345/node_activity/tree/master git clone git@code. ...