TCP/IP协议学习--链路层

本文记录了作者学习TCP/IP协议的过程,重点介绍了以太网协议及其在链路层的应用。包括以太网协议的标准、帧格式、长度限制以及与RFC894和RFC1042的封装方式。还提到了MTU的概念和802.1q协议对帧头的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博文记录作者学习 TCP/IP协议的过程,主要的学习材料是《TCP/IP 详解 卷1:协议》,下文中称为『图书』。由于这本经典图书的古老,还会参考一些其它材料。

1. 链路层协议


链路层的协议有:

  • 以太网协议
  • 802委员会发布的协议
    • 802.2 链路层共同特性
    • 802.3 针对整个 CSMA/CD 网络
    • 802.4 针对令牌总线网络
    • 802.5 针对令牌环网络
  • 串行接口链路层协议:SLIP、CSLIP、PPP
补充:
图书中并没有提到802.1的协议,其实在项目开发的过程中就遇到了这个问题。起码链路层存在802.1q协议的东西,使得以太网的帧头不是图书中描述的一定是14字节。

链路层的协议应用的比较广的主要是以太网协议,并且支持802委员会的协议,所以本博文只讨论以太网协议。以太网是TCP/IP 协议采用的主要的局域网技术,采用的是CSMA/CD 的媒体接入方式,还记得上大学时老师用了好玩的 flash 来演示这个过程。


2. 以太网协议


以太网协议的标准主要有两个来源。在 TCP/IP 世界中,以太网 IP 数据报的封装是在 RFC894。IEEE 802网络的 IP 数据包的封装是 RFC1042。

图书中是这样描述这两种协议在主机中的使用情况的。每台 Internet 主机都与一个以太网电缆相连接:

  1. 必须能发送和接受采用 RFC894封装格式的分组
  2. 应该能接受与 RFC894混合的 RFC1042封装格式的分组
  3. 也许能够发送采用 RFC1042格式封装的分组。如果主机能够同时发送两种类型的分组数据,那么发送的分组必须是可以设置,而且默认条件下必须是 RFC894分组。

3. 以太网帧格式


以太网的帧格式主要是有三部分组成:帧头,数据,CRC 校验。需要关注的点有两个:

  • 帧头格式
  • 数据长度

3.1 帧头

首先看 RFC 894的帧格式

| 目的地址–6字节 | 源地址–6字节 | 类型–2字节 | 数据部分 | crc |

补充:其实在看维基百科上关于以太网帧结构介绍的时候,会发现有出入,由于图书并没有关注802.1q协议,所以忽略了一种帧结构。802.1q协议的帧头是多出4个字节的,这个可以在百度百科里面查询802.1q 去看一下帧结构。

再来看 RFC1042 的帧格式:

| 目的地址–6字节 | 源地址–6字节 | 长度–2字节 | AA | AA | 03 | 000000 | 类型–2字节 | 数据部分 | crc |

所以区分以太网帧格式类型的方法也是比较简单的,只要看第13、14个字节的值就好了,前12个字节都是地址。

  • 0800: IP 数据报文
  • 0806: ARP
  • 8035:RARP
  • 8100: 802.1q
  • 其它: 802.2、802.3

3.2 长度

RFC 894的数据长度需要在46~1500之间
RFC 1042的数据长度需要在38~1492之间

链路层对数据帧的长度最大值的限制称为 MTU。可以使用 netstat -in 打印出来主机的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值