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协议 互联网 ...
随机推荐
- servlet内置对象
request 请求对象 类型javax.servlet.ServletRequest 作用域Request response ...
- C++之路进阶——P2022
P2022 有趣的数 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的位置为Q( ...
- rdesktop的使用方法
工作时一般是开两台电脑 ,一台linux,一台windows,以前也用过虚拟机什么的,但是 有时候 跑起来拖泥带水的十分不爽,所以慢慢的就习惯了两台电脑的工作方式,一般我大部时间都在linux下面.用 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数
<zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...
- iframe载入页面过程显示动画效果
http://www.xfeixiang.com/Bug/Detail/A2FD7EFFA8CA72F1
- YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性
ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.Android设备.IOS等) ...
- python之在线PK游戏(第六天)
本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序. 故本次写了一个文字回合制的PK游戏,系统主程序为根目录下的:game_menu.py 1. 系统功能模块: 第六天的作业:文字游戏程序 ...
- 赶时髦过了一遍Swift 语言....
Swift 语言 2014年6月3日发布,替代OBJECT-C Swift is a new programming language for creating iOS and OS X apps. ...
- 转:Log4j使用
转:https://my.oschina.net/kkrgwbj/blog/638780 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录. ...
- Kerberos
一.Kerberos Concept Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务,为通信双方提供双向身份认证. Kerberos关键术语: ...