您的位置:首页 > 理论基础 > 计算机网络

TCP/IP协议学习(三) 链路层详解

2015-11-26 09:17 585 查看
  学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了...

  闲话不多说,本篇将讲述TCP/IP协议栈的链路层。在本系列第一篇我讲到,TCP/IP协议栈每一层都有特定的功能, 那么链路层的功能如下:

(1). 为IP模块发送和接收数据包

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

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

1.ARP, RARP协议概述

  ARP协议即地址解析协议, 通过该协议应用层可以通过IP地址查询到目的MAC地址,从而确定传输目的地。再windows命令行中输入arp -a就可以看到windows系统中维护的ARP高速缓存(IP ~ MAC)逐一对应。

RARP协议(逆地址解析协议)与上述过程正好想法,通过已知的MAC地址获得目标的IP地址, RARP的实现比ARP要困难,以后会有专门的章节详细讲解。

2. 以太网和IEEE 802封装

目前链路层协议有以太网和IEEE802两种不同的标准,
以太网: 目的MAC + 源MAC + 类型

IEE802: 目的MAC + 源MAC + 长度 + 802.2LLC + 802.2 SNAP

因为网络数据包的长度不可能为以太网的类型(802定义的有效长度与以太网定义的有效类型无一相同), 因此给了设备兼容这两种以太网包的可能。



如上图,可以清晰的看出两者的区别。此外还需注意一点,以太网传输最小为46字节, IEE802传输最小为38字节(包含IP, TCP首部的数据包,不包含CRC校验), 如果不足需要插入填充字节满足长度要求。同时这两个标准还限制了最大数据报长度,其中IEE802.3和以太网规定数据最大长度分别为1492和1500,少的8字节正是802.2标准规定的附加字段LLC和SNAP,正如上图,这两种标准对数据帧长度都有限制,链路层的这个特性称作MTU,当IP层提供数据大于MTU时,就会将数据拆成几块发送,这称为分片(或者叫做IP分片)

3. 环回接口

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

  


     图中关键点:

1.传给环回地址的任何数据均作为IP输入

2.传给广播和多播地址的数据包复制一份给环回接口,然后送到以太网上(因为广播和多播传送的定义包含设备本身)

3.任何传给该主机的ip数据包均送到环回接口

看到这应该明白为什么上一章节的服务器能够绑定127.x.x.x网段和本身IP地址, 正是对环回接口的一种应用。

4. 简单分析



上图是我随便抓取的ARP以太网包,其中ff.ff.ff.ff.ff.ff表示目的地址为广播包, 后面画圈部分为源MAC和协议类型,之后便是IP数据,至于数据只有28字节而不是填充到46字节,这是因为我的抓包软件自动去除了填充字节和校验位,数据数据包是满足要求的,整体结构也与图2-1相符合。

  


在windows命令行窗口下输入netsh interface IPv4 show subinterfaces就可以看到用户的MTU如上图,默认都为1500。

学习到这,大概对TCP/IP协议栈的链路层有一定了解,本章主要简单的讲解了链路层的数据格式,链路层包含的协议以及现实演示,讲述的东西并不多,仔细看下应该很快就能理解,下一章将要正式进入ARP和RARP协议的学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: