TCP/IP详解部分笔记整理(一)链路层

一 TCP/IP协议分层

TCP/IP协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。

在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务。

封装

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCPsegment)。IP传给网络接口层的数据单元称作IP数据报(IPdatagram)。通过以太网传输的比特流称作(Frame)。以太网数据帧的物理特性是其长度必须在46~1500字节之间。IP和网络接口层之间传送的数据单元应该是分组(packet)。分组既可以是一个IP数据报,也可以是IP数据报的一个(fragment)。

分用

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。

二  链路层

术语解释:

链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

以太网:带冲突检测的载波侦听多路接入

链路层的目的

1)为IP模块发送和接收IP数据报;

2)为ARP模块发送ARP请求和接收ARP应答;

3)为RARP发送RARP请求和接收RARP应答。

 

封装格式

1) IEEE 802.2/802.3封装

图片1

2) 以太网封装

以太网封装是最常见的封装格式。

图片2

3)尾部封装

是一个早期B S D系统在DEC VA X机上运行时的试验格式.在以太网数据帧中,开始的那部分是变长的字段(I P首部和T C P首部)。把它们移到尾部(在C R C之前),这样当把数据复制到内核时,就可以把数据帧中的数据部分映射到一个硬件页面,节省内存到内存的复制过程。 尾部封装已遭到反对。

SLIP:串行线路IP

定义的帧格式如下:

1.IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文)。

2.如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符。

3.如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。

SLIP的缺陷如下:

1.每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。

2.数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。

3.SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。

PPP:点到点协议

点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:

1.在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链;

2.建立、配置及测试数据链路的链路控制协议(LCP:LinkControlProtocol)。它允许通信双方进行协商,以确定不同的选项。

针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。

 

PPP比SLIP具有下面这些优点

1)PPP支持在单根串行线路上运行多种协议,不只是IP协议;

2)每一帧都有循环冗余检验;

3)通信双方可以进行IP地址的动态协商(使用IP网络控制协议;

4)与CSLIP类似,对TCP和IP报文首部进行压缩;

5)链路控制协议可以对多个数据链路选项进行设置。

 

环回接口

根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。

需要注意的几点:

1.传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入;

2.传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上;

3.任何传给该主机IP地址的数据均送到环回接口。

 

MTU

1最大传输单元MTU

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation)

2路径MTU

当在同一个网络上的两台主机互相进行通信时,两台通信主机路径中的最小MTU。被称作路径MTU。两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的。

 

ARP和RARP协议

ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

图片3

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。

 

ARP/RARP包结构

图片4

 

以太网目的地址:目的主机的硬件地址。目的地址全为1的特殊地址是广播地址。

以太网源地址:源主机的硬件地址。

帧类型:对于ARP协议,该字段为0x0806。对于RARP协议,该字段为0x8035。

硬件类型:表示硬件地址的类型。值为1时表示以太网地址。也就是说ARP协议不仅仅应用于以太网协议,还可以支持别的链路层协议。

协议类型:表示要映射的协议地址类型。值为0x0800时表示IP协议。

硬件地址长度:与硬件类型对应的硬件地址的长度,以字节为单位。如果是以太网,则是6字节(MAC长度)。

协议地址长度:与协议类型对应的协议地址长度,以字节为单位。如果是IP协议,则是4字节(IP地址长度)。

操作类型(op):四种操作类型。ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。

发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网头中的源地址对应。

发送端协议地址:如果是IP协议,则表示源主机的IP地址。

目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网头中的目的地址对应。

目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。

对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。

APR请求包是广播的,但是ARP应答帧是单播的。

 

ARP为IP地址到对应的硬件地址之间提供动态映射。我们之所以用动态这个词是因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心。

ARP完成的任务:

1.发送分组时把ip地址映射到物理地址上,给定一个目的地址,首先查询其本地arp缓存,看是否有映射,若有,则提取,把数据放到使用该地址的侦中,并发送该帧,若没有,则必须广播一个arp请求并等待应答。

2.回答其他机器的arp请求。如果到达一个arp请求,则接收方机器要查看他自己是否是请求目标,如果是,则arp软件用本地物理地址形成应答,发送给请求方,如果放送方的地址不再接收方的高速缓存中,则把对端的物理地址和ip地址绑定添加到本地缓存中,如果arp请求中的ip地址与本地地址不匹配,则忽略该分组。

ARP的工作原理如下:

1.首先,每台主机都会在自己的ARP缓冲区(ARPCache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。

2.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。

3.网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;4.源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

注:由于路由器有拦截广播的功能,arp广播只能在本子网中广播,如果所要获取的MAC地址不是本子网的,则必须经过路由器网关获得。由于路由器的默认网关也是本子网的一个设备,因此也会收到本子网的arp广播,经过子网匹配,发现目的IP的子网,跟路由器的另一个端口的子网一致,于是,把arp请求转发给路由器的另一个端口,此时,路由器的另一个端口跟目的IP在同一个子网,因此,又可以进行arp广播,当目的IP获得了arp广播信息后,会把本机的MAC地址填充到arp包的目的地址MAC这栏中,同时修改arp的数据包的操作类型为arp应答,接着把数据包发回源IP地址,此时的发送就不是以广播的形式发送了,因为目的地址MAC,本地地址MAC都知道,是需要单播即可,此时,还需要修改以太网帧的目的MAC,本地MAC,从而得以发送数据包

 

ARP高速缓存

ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起。

 

ARP代理:

如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(ProxyARP)。

这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。

路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。

RARP

RARP是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或X终端),它需要系统管理员进行手工设置。

RARP的工作原理:

1.发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;

2.本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;

3.如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;

4.如果不存在,RARP服务器对此不做任何的响应;

5.源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">