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协议 互联网 ...
随机推荐
- Java:回调机制
引用:http://blog.sina.com.cn/s/blog_48cf38890100go6x.html 1. 什么是回调函数 回调函数(callback Function),顾名思义, ...
- 调优SQL思路
--调优SQL --sqlreview ->logshipping -> ag辅助副本 --查看正确的执行计划 打开实际的执行计划set statistics io on --查看错误的执 ...
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- 微信 回调模式 echostr校验失败,请您检查是否正确解密并输出明文echostr
- html5——自定义属性
自定义属性:添加前缀"data-" dataset属性:添加自定义属性后,通过元素的dataset属性来访问自定义属性的值(属性名没有data-前缀) data-name:data ...
- [转] How to debug a ARM Cortex-M hard fault exception
how to debug a ARM Cortex-M hard fault exception
- Foundation框架-NSString和NSMutableString
可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式 2.3 从文件中 ...
- jQuery 增加 删除 修改select option .
jQuery获取Select选择的Text和Value: 1. var checkText=jQuery("#select_id").find("option:selec ...
- LAMP环境搭建 (原创帖,转载请注明出处)
=============================说在前面的话==========================第一安装Mysql第二安装Apache-httpd第三安装PHP 第四配置PH ...
- C++多线程のpackage_task
可以异步获取可调用对象的结果.