TCP/IP协议学习(六) 链路层详解
学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了...
闲话不多说,本篇将讲述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协议的学习。
TCP/IP协议学习(六) 链路层详解的更多相关文章
- TCP/IP协议族之链路层(二)
		
TCP/IP学习记录,如有错误请指正,谢谢!!! TCP/IP协议族之链路层(二) 链路层是最底层协议,主要有三个目的: 1. 为IP模块发送和接收IP数据报 2. 为ARP模块发送ARP请求和接收A ...
 - Android网络编程系列 一 TCP/IP协议族之链路层
		
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RA ...
 - TCP/IP协议学习之实例ping命令学习笔记
		
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...
 - TCP/IP协议学习-1.概述
		
目录 TCP/IP协议概述 分层 延伸知识 FTP例子 为什么需要网络层和传输层 TCP/IP的分层 封装 分用 总结 本文主要摘抄自书籍<TCP/IP详解卷一:协议>与TCP协议相关内容 ...
 - TCP/IP协议学习(五) 基于C# Socket的C/S模型
		
TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...
 - TCP/IP协议学习(四) 协议概述
		
生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢 ...
 - tcp/ip协议学习笔记一
		
一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...
 - TCP/IP协议学习笔记
		
计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...
 - Android网络编程系列 一 TCP/IP协议族之网际层
		
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 网际层包括:IP.ICMP.IGMP 以及处在网际层实际工作在链路层的 ARP 和 RARP等等协议. 1.IP协议 互联网 ...
 
随机推荐
- 搭建git for windows服务器
			
文档出处 :http://blog.csdn.net/code_style/article/details/38764203 http://blog.csdn.net/aaron_luchen/art ...
 - Android xml资源文件中@、@android:type、@*、?、@+含义和区别
			
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
 - Java总结——文件&流
			
最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多.脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理 ...
 - Mac下搭建git
			
一.在本地git库中添加用户名及邮箱 git config --global user.name "username" git config --global user.email ...
 - EditPlus 3.7.164 中文版(4月3日更新)
			
新的版本汉化了之前无法汉化的部分内容,并修复了旧汉化版的部分问题. 欢迎下载新的翻译文件.
 - linux 中压缩记得压缩用c,解压用x
			
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...
 - 安装 whmcs
			
1.下载下来后(自己百度网盘),用scp 上传, 在网站能访问的地方新建目录,例如 whmcs 目录,解压到内 2.网站访问 http://ip/whmcs/index.php 提示需要安装 ionc ...
 - Weblogic AdminServer启动失败,<Security> <BEA-090870> <The realm "myrealm" failed to be loaded
			
服务器重装,环境配置正常,domain没有变动,启动AdminServer失败. AdminServer_log: <2016-9-29 上午09时43分12秒 GMT+08:00> &l ...
 - Css、javascript、dom(一)
			
一:Css 1.1:position定义和用法 position 属性规定元素的定位类型. 可能的值 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定 ...
 - IE8 jquery解析xml的兼容问题
			
正常情况下可以这么写: jQuery(node).find(xpath.replace("//", ""))[0]; 但是在IE8下得到的是undefined应 ...