<再看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:协议数据单元对 ...
 
随机推荐
- 转: 学习Javascript闭包(Closure) (阮一峰)
			
from: http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
 - MD5算法了解(JAVA实现)
			
MD5算法:尽管已经被破解,但任然广泛应用于各个领域中 如文件校验:当我们下载文件时为了保证文件的安全性,我们能够在其站点上找到相应的md5值进行校验,假设md5值不一致,也就是说文件被人动过(一般都 ...
 - 软件业的发展方向:云、Web以及App
			
随着行业互联网的发展,未来的软件发展方向是云技术.Web软件以及基于移动设备的Apps. 桌面软件主要负责大型的计算.渲染和消耗非常大CPU和内存的图形软件,以及基于这些软件的二次开发软件如Revit ...
 - &和|不等同于&&或||
			
&:位与 |:位或 &&:与 ||:或 当C编译器遇到这些符号时,会怎么样了? 当一个&或| 对位进行运算. 当二个&&或||对它进行与或运算. 千万不 ...
 - 常用快递API及快递在线下单API分享
			
1.常用快递API 支持顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.全峰等主流快递公司. 文档地址:https://www.juhe.cn/docs/api/id/43 1.1常用快递查询 ...
 - Linux装mysqli.so
			
php 5.2.3+mysqli 安装与常见错误 总结 php 5.2.3+mysqli 安装与常见错误 总结 记得原来在编译php的已经已经加上参数--with-mysql=/usr/local ...
 - 将ActiveX控件标记为安全
			
參考网页 http://msdn.microsoft.com/en-us/library/aa751977(v=vs.85).aspx http://support.microsoft.com/kb/ ...
 - JS函数库Underscore.js
			
http://underscorejs.org/ http://www.css88.com/doc/underscore/ http://www.bootcss.com/p/underscore/
 - 使用matlab进行mex编译时的路径问题mexopts
			
matlab和vs 进行混合编程时总须要使用matlab编译mexFunction.cpp文件. 这些文件免不了使用include下的*.h和lib下的*.lib文件.举例说明.这次我 ...
 - pojo和vo有什么区别
			
pojo 是Plain Old Java Object的缩写,就是javabean.vo是view object的缩写,就是用于页面显示的javabean.vo就是pojo.只是通途上的用于携带页面显 ...