实验4网际协议IP.docx
- 文档编号:693196
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:39
- 大小:472.22KB
实验4网际协议IP.docx
《实验4网际协议IP.docx》由会员分享,可在线阅读,更多相关《实验4网际协议IP.docx(39页珍藏版)》请在冰点文库上搜索。
实验4网际协议IP
实验4网际协议(IP)
【实验目的】
1.掌握IP数据报的报文格式
2.掌握IP校验和计算方法
3.掌握子网掩码和路由转发
4.理解特殊IP地址的含义
5.理解IP分片过程
6.理解协议栈对IP协议的处理方法
7.理解IP路由表作用以及IP路由表的管理
【学时分配】
4学时
【实验环境】
该实验采用网络结构二
【实验内容】
一.IP协议简介
IP(网际协议)是TCP/IP协议族中最核心的协议,它负责将数据包从源点交付到终点。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
IP协议提供不可靠、无连接的数据报传送服务,即它对数据进行“尽力传输”,只负责将数据包发送到目的主机,不管传输正确与否,不做验证、不发确认、也不保证IP数据包到达顺序,将纠错重传问题交由传输层来解决。
二.IP地址及其表示方法
IP地址是网际协议地址(InternetProtocoladdress)的简称。
一个IP地址惟一地标识了Internet上的一台主机。
通信时要使用IP地址来指定相应的目的主机。
1.地址空间
地址空间就是协议所使用的地址总数。
如果协议使用N位来定义地址,每一位可以有两种不同的值(1或0),那么地址空间就是2N。
IP使用32位地址,这表示地址空间是232,或4294967296(超过40亿个)。
从理论上讲,可以有超过40亿个设备连接到Internet。
但是,实际的数字要远小于这个数值。
2.IP地址的表示方法
IP地址有三种常用的表示方法:
二进制表示方法、点分十进制表示方法和十六进制表示方法。
●二进制表示方法:
在二进制表示方法中,用一个32位的比特序列表示IP地址,为了使这个地址有更好的可读性,通常在每个字节(8位)之间加上一个或多个空格做分隔。
例如:
10000001000011100000011000011111
●点分十进制表示方法:
为了使32位地址更加简洁和更容易阅读,Internet的地址通常写成用小数点把各字节分隔开的形式。
每个字节用一个十进制数表示,这个数小于256。
例如:
129.14.6.31
●十六进制表示方法:
有时会见到十六进制表示方法的IP地址。
每一个十六进制数字等效于4个位。
例如:
0x810E061F
3.IP地址的分类
IP地址分成5类:
A类,B类,C类,D类和E类。
其中A类、B类和C类地址是基本的Internet地址,是用户使用的地址,D类地址用于广播,E类地址为保留地址。
下图描述了IP地址的二进制表示方法的分类:
图3-1在二进制记法中找出IP地址的类别
下图描述了IP地址的十进制表示方法的分类:
图3-2在点分十进制记法中找出IP地址的类别
4.网络号和主机号
在分类编址的A类,B类和C类地址中,IP地址可划分为网络号(net-id)和主机号(host-id)。
这两部分长度都是可变的,取决于地址的类型。
下图给出了网络号和主机号所占的字节。
应该注意的是,D类地址和E类地址不划分网络号和主机号。
图3-3网络号和主机号
5.地址类和地址块
分类编址将每一类地址都划分为固定数目的地址块,并且每一个地址块的大小都是固定的。
A类地址共分为128个地址块,每个地址块都包含有16777216个地址。
这表明要使用这类地址的机构一定是一个非常庞大的机构。
但是,每个地址块中的地址数比机构的地址需求大的多,所以,在这类地址中,许多地址都被浪费了。
B类地址共划分为16384个地址块,每个地址块都包含有65536个地址。
这个地址数往往大于中等规模机构的地址需求,所以,在这类地址中,也有许多地址被浪费了。
C类地址共划分为2097152个地址块,每个地址块都包含有256个地址。
这类地址中的地址数对大多数机构来说是不够用的,因此许多机构不太愿意要这类地址。
D类地址只有一个地址块。
它用来进行多播。
E类地址只有一个地址块。
它是保留地址。
三.特殊的IP地址
1.特殊的IP地址
●网络地址:
主机号为全“0”的IP地址不分配给任何主机,而是作为网络本身的标识。
例:
主机202.198.151.136所在网络地址为202.198.151.0。
●直接广播地址:
主机号为全“1”的IP地址不分配给任何主机,用作广播地址,目的地址为直接广播地址的数据包传递给该网络中的所有节点(能否执行广播,则依赖于支撑的物理网络是否具有广播功能)。
例:
202.198.151.136所在网络的广播地址为202.198.151.255。
●有限广播地址:
32位为全“1”的IP地址(255.255.255.255)称为有限广播地址,通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址。
●主机本身地址:
32位全“0”的IP地址(0.0.0.0)称为主机本身地址。
●回环地址:
127.0.0.1称为回环地址,常用于本机上软件测试和本机上网络应用程序之间的通信地址。
2.专用IP地址
随着Internet的飞速发展,IP地址资源已经开始告急,专用IP地址的使用是解决IP地址紧缺的一种方法。
原理是定义两类IP地址:
●全局IP地址:
用于Internet上的公共主机;
●专用IP地址:
仅用于专用网内部的本地主机。
公共主机和本地主机可以共存于同一网络并进行互访,而大多数路由器不转发携带专用IP地址的数据包。
本地主机必须经网络地址转换服务器(NAT或代理服务器)才能访问Internet。
专用IP地址为:
10.0.0.0-10.255.255.2551个A类网络
172.16.0.0-172.31.255.25516个连续的B类网络
192.168.0.0-192.168.255.255256个连续的C类网络
四.子网划分
为了便于网络的管理、提高系统的可靠性、改进系统性能、克服简单局域网的技术条件限制、通过设置不同访问权限来增强系统的安全保障,人们采用了划分子网的办法将网络进一步划分成独立的组成部分。
现在的主机都要求支持子网编址。
不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
例如,把一个B类网络地址的16位主机号分成8位子网号和8位主机号如下图所示:
图3-4子网划分
这样就允许有254个子网,每个子网可以有254台主机。
对A类和B类网络,许多管理员采用自然的划分方法,即以8位为单位划分子网地址和主机号。
这样用点分十进制方法表示的IP地址就可以比较容易确定子网号。
但是,并不要求A类或B类地址的子网划分都要以字节为分界限。
子网对外部路由器来说隐藏了内部网络组织的细节。
主机除了知道IP地址以外,还需要知道IP中有多少位用于子网号,多少位用于主机号。
这是通过使用一个称为“子网掩码”的32位值来完成的。
其中值为1的位留给网络号和子网号,为0的位留给主机号。
给定IP地址和子网掩码以后,主机就可以确定IP数据包的目的是本子网中的主机、本网络中其它子网中的主机还是其它网络上的主机。
如果知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位可以得知),也就知道网络号和子网号之间的分界线。
而根据子网掩码就可知道子网号与主机号之间的分界线。
子网掩码除了可以如IP地址一样用“点分十进制”方式表示外,还可以在IP地址后用一个斜线(/)后面写明子网掩码的位数的方法来表示。
如:
192.168.1.25/24表示IP地址192.168.1.25的掩码为255.255.255.0。
五.IP报文格式
IP数据报格式如下图所示,它是由IP首部与数据组成的。
IP首部长度通常为20字节。
如果含有选项字段,IP首部长度将会大于20字节,但不会超过60字节。
图3-5IP报文格式
在IP首部中各个字段的意义如下:
●版本号:
这个字段定义了IP的版本。
目前主流的是版本4(IPv4),但它正逐渐地被版本6(IPv6)所替代。
●首部长度:
由于IP选项字段的存在,所以IP首部长度是可变的。
该字段用4位来定义首部长度。
将该值乘4可得到用字节表示的长度,所以IP首部长度为20~60个字节。
●区分服务:
该字段以前叫做服务类型(在RFC791中定义),是由3位优先域、4位服务类型域和1位未用位(该位必须置为0)组成,其中4位服务类型分别代表:
最小时延、最大吞吐量、最高可靠性和最小费用。
该字段在RFC2474中被重新定义,在新的定义中将该字段命名为区分服务,其中包含一个6位的区分服务码点(DSCP)字段和一个2位的未用位(CU)字段。
如下图所示:
图3-6RFC2474定义的区分服务字段
前6位的区分服务码点的值用来映射一个底层的服务,它决定了每一跳行为。
在RFC3168中,将区分服务字段中的未用位字段定义为显示拥塞通告(ECN)字段,ECN字段包括2个子字段,分别为:
ECT字段和CE字段,如下图所示:
图3-7RFC3168定义的区分服务字段
ECN字段用于指定发送数据的主机是否支持拥塞通告以及指示网络中是否有拥塞发生。
ECN通过两个子字段的不同值组合来做到这一点:
00:
发送主机不支持ECN。
01或10:
发送主机支持ECN。
11:
路由器正在经历拥塞。
●总长度:
该字段以字节为单位定义IP数据报的总长度(首部加上数据)。
要得到IP上层数据的长度,只需从总长度中减去首部长度即可。
●标识:
每一个IP数据包在发送时被给定特有的标识值。
如果数据包必须被分割成碎片以适应支持小型数据包的网络,那么每一个碎片中都设置相同的标识号码。
●标志:
标志由3位组成,第1位保留;第2位为不分片标志,表示此数据包不可以被分片;第3位为更多分片标志,表示在分片包之后还有分片,即此包不是最后分片。
●偏移量:
如果数据包是一个分片包,该域指明了当前分片包在与其它分片包被重新组装成一个单独数据包时,应该位于数据包的什么位置。
该域的值以8字节为单位。
●生存时间:
该字段表明数据包保存的生存时间,单位为秒,在实际的应用中,生存时间是按照数据包经过路由器的跳数计算的。
通常生存时间的值是32、64、128。
●高层协议类型:
该字段定义了使用IP层服务的较高层协议。
一个IP数据报能封装来自诸如TCP、UDP、ICMP和IGMP等较高层协议的数据。
●首部校验和:
IP首部校验和只对首部内容进行错误检测,并不包括数据包的其它内容。
校验和采用16位反码求和的算法。
●源IP地址:
该字段定义了源主机的IP地址。
在IP数据包从源主机传送到目的主机期间,该字段保持不变。
●目的IP地址:
该字段定义了目的主机的IP地址。
在IP数据报从源主机传送到目的主机期间该字段保持不变。
●IP选项:
这个字段是可选项。
它们通常用于网络测试和调试。
虽然可选项不是IP头部所必需的部分,但要求IP软件能够处理它们。
目前,这些选项定义如下:
(1)安全和处理限制(用于军事领域);
(2)记录路径(让每个路由器记下它的IP地址);
(3)时间戳(让每个路由器都记下它的IP地址和时间);
(4)宽松的源站选路(为数据报指定一系列必须经过的IP地址);
(5)严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其它的地址)。
六.IP封装
IP数据报直接封装到数据链路层帧中,其封装方法如下图所示:
图3-8IP封装
七.IP数据报分片
数据包可能通过多个不同的网络。
每一个路由器把收到的帧进行拆装,再进行处理,然后又封装成另一个帧。
收到帧的格式与长度取决于这个帧刚刚经过的物理网络所使用的协议。
发送出去的帧格式与长度则取决于这个帧将要经过的物理网络所使用的协议。
例如,如果路由器把以太网连接到一个广域网,那么这个路由器收到的帧是以太网的格式,而发送的帧是广域网的格式。
1.最大传送单元(MTU)
不同的网络所能传送的数据包的最大长度是不同的,这个最大长度叫做最大传送单元(MTU),这是由网络所使用的硬件与软件所决定的。
每种网络的数据链路层都有自己的帧格式,其中有一个字段是“数据字段最大长度”。
当数据包封装成帧时,数据包的总长度必须小于这个数据字段最大长度,如下图所示。
图3-9MTU
对于不同的物理网络协议,MTU的值是不同的。
下表给出了不同协议的MTU值。
表3-1不同网络的MTU值
为了使IP协议与物理网络无关,IP协议不考虑底层网络的MTU,只是规定IP数据包的最大负载长度为65535字节。
对于物理网络,如果数据包的长度超过了MTU,就要把数据包进行分割,使它们能够通过这些网络,这就叫做分片。
源主机的传输层会自动对数据包进行分片工作,把数据包划分成IP协议和数据链路层都可接受的大小。
当数据包被分片时,每一个数据包片有它自己的首部,其中大部分的字段都是重复的,但有些是不同的。
如果已经分片的数据包要经过更小MTU的网络,那么这些已经分片的数据包还可再进行分片,数据包在到达最后终点之前可以经过多次的分片。
数据包可以被源主机或在其路径上的路由器进行分片。
但是数据包的重装却只能在目的主机上进行。
由于被分片的数据包可能会通过不同的路由到达目的主机,所以应当在最后的目的主机上进行重装。
当数据包被分片时,首部中的一些字段会被复制到所有的分片中(选项字段可以被复制,也可不被复制)。
有三个字段是与数据包分片相关的,这三个字段是:
标识字段、标志字段和偏移量字段。
当然,不管是否进行分片,校验和的值总是要重新计算的。
对于最大传输单元(MTU)还可以理解为某层协议报文可携带数据的最大长度,对于不同协议,对应的MTU可能会有不同的值和计算方法。
如我们常说的“以太网MTU为1500”,说的是以太网MAC帧可封装的最大数据长度,其只包含IP报头及其上层协议数据的总长度。
对于IP协议的MTU值应为65535-20,也只是说一个IP数据报(包含IP包头的长度和IP上层协议数据的长度),最多可以携带65535个字节的数据。
2.与分片有关的字段
与数据包的分片和重装有关的三个字段是:
标识字段、标志字段和偏移量字段。
●标识:
IP数据包的标识字段值与源IP地址惟一地确定了一个数据包。
IP协议使用一个计数器来保证每个数据包标识的惟一性。
当IP协议发送数据包时,就把这个计数器的当前值复制到标识字段中,并把这个记数器的值加1。
当数据包被分片时,标识字段的值就复制到所有的分片中。
这样所有的分片具有相同的标识。
这个标识号在终点重装数据包时很有用。
终点会将所有具有相同标识号的分片组装成一个数据包。
●标志:
这是一个长度为3位的字段。
第一位保留。
第二位是不分片位。
若这个位为1,就表示不能把该数据包进行分片。
若无法把这个数据包通过任何可用的物理网络进行转发,就丢弃这个数据包,并向源主机发送ICMP差错报文(关于ICMP差错报文,参见实验4)。
若这个位为0,则在需要时可把这个数据包进行分片。
第三位是还有分片位。
若这个位是1,则表示这个数据包不是最后的分片,在这个分片后面还有其它分片。
若这个位是0,则表示这是最后的分片。
标志字段如下图所示:
图3-10标志字段
●偏移量:
偏移量字段表示一个分片在整个数据包中的相对位置。
以8字节为度量单位。
下图表示具有4000字节长度的数据包被划分为三个分片。
在原始数据包中的数据编号是0~3999。
第一个分片携带的数据是字节0~1399。
对于这个数据包,偏移量是0/8=0。
第二个分片携带的数据是字节1400~2799;对于这个数据包,偏移量是1400/8=175。
最后,第三个分片携带的数据是字节2800~3999。
对于这个数据包,偏移量是2800/8=350。
如下图。
图3-11分片举例
偏移量字段的长度只有13位,它不能表示超过8191的字节数,所以偏移量是以8字节为单位的。
因此,把数据包进行分片的主机或路由器必须选择一个能够被8整除的长度来为数据包分片。
八.IP数据报校验和
大多数TCP/IP协议族中的协议采用的差错检测方法是校验和。
校验和能够识别数据包在传输过程中是否受到损伤。
校验和是在数据包上附加的信息。
在发送端先计算校验和,并把得到的结果与数据包一起发送出去。
接收端对整个数据包重复进行同样的计算。
若得到的结果正确则接受这个数据包;否则就把它丢弃。
1.在发送端计算校验和
在发送端,将数据包按16位长度分段。
把这些段用反码算数运算相加,将相加后得到的和再取反码就得出了校验和。
2.在接收端计算校验和
接收端把收到的数据包按16位长度分段,并把这些段相加。
把得到的和取反码。
若结果为0,则接受这个数据包;否则就拒绝这个数据包。
下图用图解的方法描述了发送端和接收端计算校验和的过程。
图3-12校验和的概念
3.IP数据包中的校验和
IP数据包的校验和只校验IP首部部分而不校验IP数据部分。
这是因为所有将数据封装在IP数据报中的高层协议,都有覆盖整个数据包的校验和。
因此,IP数据报的校验和就不必再检验所封装的数据部分。
其次,每经过一个路由器,IP数据包的首部就要改变一次,但数据部分不改变。
因此若校验和包含数据部分,这就意味着路由器要花费很多时间计算没有改变的数据部分的校验和。
九.交付与转发
所谓交付,是指在网络层的控制下,一个数据包被底层网络处理的方式。
例如,面向无连接的服务和面向连接的服务,以及直接交付和间接交付等。
所谓转发是指数据包被交付到下一站的方式。
1.交付
网络层控制底层物理网络对数据包的处理过程,这种过程叫做交付。
在交付过程中有几个重要概念,即连接类型,直接与间接交付。
2.连接类型
数据包在网络层的交付可以用面向连接的服务或无连接服务来完成。
(1)面向连接服务
在面向连接服务的情况下,本地网络层协议在发送数据包之前先要和远地网络层协议建立一条连接。
当连接建立后,一系列的数据包就从源点一个接一个地发送到终点。
在这种情况下,各个数据包之间存在着一种关系。
它们都沿着同一条路径按序发送。
一个数据包与走在它前面的数据包以及与走在它后面的数据包在逻辑上是连接在一起的。
若报文中的所有数据包都已被交付,连接就终止了。
在面向连接服务的情况下,对从同一个源点到同一个终点的一系列数据包来说,其路由的确定只需进行一次。
路由器不需要对每一个单个的数据包重新计算路由。
(2)无连接服务
在无连接服务的情况下,网络协议独立地对待每一个数据包,而每一个数据包与任何其它数据包都没有关系。
一个报文中的各数据包到它们的终点可以走相同的路径也可以走不同的路径。
在无连接服务的情况下,对一个数据包的路由是由每一个路由器单独地确定。
IP协议是无连接协议,它提供无连接服务。
3.直接交付与间接交付
把一个数据包交付到它最后的终点有两种方式:
直接交付和间接交付。
(1)直接交付
在直接交付的情况下,数据包的最后终点是与交付者连接在同一个网络上的主机。
当数据包的源点和终点都在同一个物理网络上时,或者交付是在最后一个路由器与目的主机之间进行时,就为直接交付,如下图所示。
图3-13直接交付
发送端很容易确定交付是否为直接交付。
发送端可以提取出终点的网络地址(使用掩码),并与它所连接的网络的网络地址相比较。
若匹配,交付就是直接的。
在直接交付时,发送端使用目的IP地址找出目的物理地址。
然后把目的IP地址和目的物理地址一起交付给数据链路层,以便进行实际的交付。
这个过程叫做把IP地址映射到物理地址。
地址解析协议(ARP)可以动态地把IP地址映射到相应的物理地址。
(2)间接交付
如果目的主机与交付者不在同一个网络上,数据包就要进行间接交付。
在间接交付时,数据包从一个路由器传送到另一个路由器,直到这个数据包到达与最后的终点连接在同一个网络上的路由器为止。
如下图所示。
图3-14间接交付
交付永远包括一个直接交付,以及零个或多个间接交付。
最后的交付就是直接交付。
在间接交付中,发送端使用目的IP地址和路由表来找出下一个路由器的IP地址。
然后使用ARP协议找出下一个路由器的物理地址。
在直接交付时,地址的映射是在终点的IP地址与终点的物理地址之间进行的。
在间接交付时,地址的映射是在下一个路由器的IP地址与下一个路由器的物理地址之间进行的。
4.转发
转发表示把数据包放到去终点的路由上。
进行转发就要求主机或路由器装有路由表。
当主机有数据包要发送时,或路由器收到数据包要进行转发时,就要查找路由表,以便找出到达最后终点的路由。
但是,这种简单的转发方法,在今天的互联网中已经变得不可能了,因为路由表中的项目数已使得路由表的查找效率非常低。
5.转发技术
使用一些转发技术可以减小路由表的大小,同时还能够处理一些安全问题。
下面为三种简单的转发技术。
(1)下一跳方法
下一跳方法就是在路由表中只保留下一跳的地址,而不是保留完整路由信息。
下图所描绘的例子说明了路由表如何被简化。
图3-15下一跳方法
(2)特定网络方法
特定网络方法不是对连接在同一个物理网络上的所有主机都设置一个路由表项,而是仅用一个路由表项来代表这个目的网络本身的地址。
换言之,这种技术把连接在同一个网络上的所有主机看成是一个路由表项。
如下图所示:
图3-16特定网络方法
(3)特定主机方法
特定主机方法将目的主机地址在路由表中全部给出。
这种方法与特定网络方法的思想相反。
这是用牺牲效率来换取其它一些优点的方法。
虽然把主机地址放在路由表中会降低效率,但有时管理员还是想对路由选择作出更多的控制。
如下图所示:
图3-17特定主机方法
十.路由选择
路由选择涉及的问题是创建和维护路由表。
1.静态和动态路由选择
主机或路由器要转发IP数据包就要有一个路由表,并给每一个终点或一组终点设置一个路由表项。
路由表可以是静态的,也可以是动态的。
(1)静态路由表
静态路由表中的路由信息是由管理员手动设置的。
管理员把到达每一个终点的路由输入到路由表中。
路由表的更新由管理员手动完成。
静态路由表用在不会经常变动的小型互联网中,或用在故障查找的试验互联网中。
在大的互联网中很少使用静态路由表。
(2)动态路由表
动态路由表使用一种动态路由选择协议,如RIP、OSPF(关于这两个协议,请参考实验十六,实验十七)。
当网络中发生变化时,动态路由选择协议就更新所有路由器中的路由表。
为了有效地交付IP数据包,规模较大的网络一般使用动态路由表。
2.路由表
下图给出了路由表中常用的一些列:
图3-18路由表中常用的列
●掩码:
这列定义应用到路由表项的掩码。
●网络地址:
这列定义数据包要交付到的网络地址。
在特定主机路由选择中,这个字段定义目的主机的地址。
●下一跳地址:
这列定义了数据包要交付到的下一跳路由器的地址。
●接口:
这列指出接口的名字。
●标志:
这列定义了五个标志:
U(Up,工作),G(网关),H(特定主机),D(因改变路由而增加的)和M(因改变路由而修改的)。
路由选择过程如下图所示:
图3-19路由表使用过程
十一.协议栈实现代码解析
本实验将通过对netproto_ip_student.h、netproto_ip_shudent.c、netproto_iproute_student.h和netproto_iproute_student.c四个文件进行编码,完成协议栈中IP协议的实现。
netproto_ip_student.h和netproto_ip_shudent.c文件用于实现IP数据包发送和接收。
其中,netproto_ip_student.h文件中定义了IP协议实现相关数值以及IP的负载内容、负载长度,关键代码如下所示:
这段代码定义了8个宏,他们代表的含义如下表所示:
表3-2netproto_ip_student.h中定义的宏
在实验的编码过程中,应该使用这些宏对相应的变量进行赋值。
netproto_ip_shudent.c文件是协议栈中IP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验4 网际协议IP 实验 网际协议 IP