<再看TCP/IP第一卷>关于链路层的知识细节及相关协议
在TCP/IP协议族中,链路层的主要有三个目的:
(1)为IP模块发送和接受数据报
(2)为ARP模块发送ARP请求和接受ARP应答
(3)为RARP发送RARP请求和接受RARP应答
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI,及RS-232串行线等。
两个串行接口链路层协议:
SLIP:(Serial Line IP)它是一种在串行线路上对IP数据报进行封装的简单形式,SLIP适合用于家庭中每台计算机及都有的RS-232串行端口和告诉调制解调器接入Internet。
下面的规则描述了SLIP协议定义的帧格式:
(1)(来自上一层协议的)IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报的内容,大多数实现在数据报的开始处也传入一个END字符(如果有线路的噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误的报文交给上层协议后,会因为其内容无效而被丢弃)
(2)如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它,0xdb这个特殊的字符被称作SLIP的ESC字符,但是它的值与ASCii码的ESC字符(0x1b)不同。
(3)如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。
SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
(1)每一端必须知道对方的IP地址,没有办法把本端的IP地址通知给另一端。
(2)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它就不能同时使用其它的协议。
(3)SLIP并没有加上数据帧的内容检验,如果SLIP传输的内容因为线路的噪声而发生了错误,这只能由上层的协议来发现(或者用新型的调制解调器可以检测并且纠正错误报文)
PPP:(Point-to-Point Protocol)点对点协议修改了SLIP协议中的所有缺陷,PPP包括以下三个部分:
(1)在串行链路上封装IP数据报的方法。PPP既支持数据为8和无奇偶检验的异步模式,还支持面向比特的同步连接。
(2)建立,配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
(3)针对不同网络层协议的网络控制协议(NCP:Net Work Protocol)体系。
PPP协议的每一帧都以标志字符0x7e开始和结束,紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节,然后是协议字段,类似于以太网中的类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报,当它的值为0xc021时,表示信息字段时链路控制数据(LCP),当值为0x8021时表示信息字段是网络控制数据(NCP)。
由于结束和开始的标志字符是0x7e,因此当该字符出现的时候,PPP需要对它进行转义,在同步链路中,该过程是通过一种称作比特填充的硬件技术来完成的。在异步链路中,特殊字符0x7d用作转义字符,当它出现在PPP数据帧中的时候,那么紧接的字符的第六个比特要取其补码,具体过程如下:
(1)当遇到字符0x7e时,需连续传送两个字符0x7d和0x5e,以实现标志字符的转义。
(2)当遇到转义的字符0x7d时,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。
(3)默认的情况下,如果字符的值小于0x20,一般都要进行转义。例如,遇到0x01时需连续传送0x7d和0x21两个字符。
与SLIP相似的是,由于PPP通常是用于低速的串行链路,因此减少每一帧的字节数可以降低应用程序的交互时延,利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由2个字段减少到1个字节。如果我们把PPP的帧格式与前面的SLIP的帧格式进行比较就会发现,PPP只增加了额外的3个字节。
总的来说,PPP协议由以下这些优点:
(1)PPP支持在单根串行线路上运行多种协议,不只是IP协议
(2)每一帧都有循环冗余检验
(3)通信双方可以进行IP地址的动态协商(使用IP网络控制协议)
(4)连路控制协议可以对多个数据链路选项进行设置。
环回接口(loopback):
大多数的产品都支持环回接口,以允许运行同一台主机上的客户程序和服务器程序通过TCP/IP协议进行通信。A类网络号127就是为环回接口预留的,根据惯例环回地址为localhost。
一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。
最大传输单元(MTU):
不同的网络对数据的帧的长度有一个不同的限制,如果IP层有一个数据要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行分片,把数据报分成若干片,这样每一片都小与MTU。点到点的链路层(如SLIP和PPP)的MTU并非指的是网络媒体的物理特性。相反,它是一个逻辑限制,目的是为交互使用提供足够快的响应时间。
路径MTU:
当在同一个网络上的两台主机互相进行通信的时候,该网络的MTU是非常重要的,但是如果两台主机通信要经过多个不同的网络的时候,重要的不是两台主机所在的网络的MTU值,而是两台通信主机路径的最小MTU,它被称作路径MTU。
## 接下来几个简单的命令来看下我们的主机的信息吧:##
netstat -r 路由表,我的ip是192.168.1.108可以知道我们在是在C类地址下,网络号为43009,主机号为108,无子网,维护的路由表的默认路由是192.168.1.0即“1号主机”
netstat -i 网络接口 MTU如图所示 其中65536并不代表网络的MTU,IP数据报的总长度最大为0xffff及65536,这也是dos攻击的理论依据。
<再看TCP/IP第一卷>关于链路层的知识细节及相关协议的更多相关文章
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议
说到关于IP协议,就必须先说IP协议的两个特性: (一)不可靠性(unreliable) 不可靠性的意思是它不能保证IP数据报能成功地到达目的地,IP所能做的只是提供最好的传输服务,IP有一个简单的错 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议(2)--移动IP及DHCP
题外话:本来想按照互联网的层级自下向上回顾这些协议的,但是今天实在得破个例,DHCP不得不说! 主机从一个网络迁移到另一个网络,那么IP编址的结构就要发生改变,当今主流有如下几种修改方案: (一)改变 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方
在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...
- <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节
题外话:刚刚过去的半个月实在是忙得我喘不过来气,虽然手里还压着几个项目得在期末考试之前做完,但是想想还是更新一下随笔,稍微换个心情.另外小吐槽一下那些在博客园里原封不动抄书当随笔的人,唉真是....算 ...
- TCP/IP入门(1) --链路层
/** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...
- [HTTP] tcp/ip详解 链路层 网络层 传输层 应用层
1.可以把七层协议简化成四层协议链路层 网络层 传输层 应用层 2.通过路由器连接的两个网络网络层ip提供的是一个逐跳协议,提供了一种不可靠的服务,中间有可能会丢传输层tcp在ip的基础上提供了可靠的 ...
- [计算机网络] 互联网协议栈(TCP/IP参考模型)各层的主要功能及相应协议
应用层:提供用户与网络间的接口.----HTTP.FTP.SMTP 运输层:进程到进程间的数据传输.---TCP.UDP 网络层:主机到主机之间的数据传输.---IP.选路协议 数据链路层:相邻结点之 ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- linux OSI七层模型、TCP/IP协议栈及每层结构大揭秘
学习Linux,就算是像小编我这样的小萌新,也知道OSI模型.什么?!你不知道!!! 好吧,这篇秘籍拿走,不谢~~~ 一.两个协议 (1)OSI 协议模型(7层)国际协议 PDU:协议数据单元对 ...
随机推荐
- 脚本命令加载外部配置文件夹conf
加载log4j配置文件 Log4iConfigurer类 public class Log4iConfigurer { private static boolean INITIALIZED = fal ...
- *** Python版一键安装脚本
本脚本适用环境:系统支持:CentOS 6,7,Debian,Ubuntu内存要求:≥128M日期:2018 年 02 月 07 日 关于本脚本:一键安装 Python 版 *** 的最新版.友情提示 ...
- sprinvmvc整合swagger实现实时接口信息展示
1.pom.xml引入swagger插件 <dependency> <groupId>io.springfox</groupId> <artifactId&g ...
- Timus : 1002. Phone Numbers 题解
把电话号码转换成为词典中能够记忆的的单词的组合,找到最短的组合. 我这道题应用到的知识点: 1 Trie数据结构 2 map的应用 3 动态规划法Word Break的知识 4 递归剪枝法 思路: 1 ...
- beforeRouteLeave 实现vue路由拦截浏览器的需求,进行一系列操作 草稿保存等等
场景:为了防止用户失误点错关闭按钮等等,导致没有保存已输入的信息(关键信息).用法://在路由组件中: beforeRouteLeave (to, from, next) { if(用户已经输入信息) ...
- CSS之BFC
BFC(Block Formatting Context,块格式上下文) 具有BFC特性的元素能够看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素. 在CSS3中.BFC叫做Flow ...
- 【转载】viewState详解
作者:Infinities Loop 概述 ViewState是一个被误解很深的动物了.我希望通过此文章来澄清人们对 ViewState的一些错误认识.为了达到这个目的,我决定从头到尾详细的描述一下整 ...
- 如何在cmd中启动redis
首先要指定redis安装的目录,然后输入: redis-server.exe redis.windows.conf 如果成功,则会出现redis的标志,失败的话 请转帖到: http://www.cn ...
- POJ 2155 Matrix(二维树状数组,绝对具体)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 20599 Accepted: 7673 Descripti ...
- Django之站内搜索-Solr,Haystack
java -version 不多说 solr 是java 开发的 java version "1.7.0_79" Java(TM) SE Runtime Environment ( ...