码迷,mamicode.com
首页 > 其他好文 > 详细

TCP/IP详解学习笔记(三) 链路层

时间:2015-11-26 09:28:02      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

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

  闲话不多说,本篇将讲述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. 实际演示

    技术分享

     上图是我随便抓取的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协议的学习。

TCP/IP详解学习笔记(三) 链路层

标签:

原文地址:http://www.cnblogs.com/zc110747/p/4993623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!