网际协议IP基础

一、架构
首先需要明白一个图:
这里写图片描述
这里与IP配套使用的有三个协议:
ARP(Address Resolution Protocol):地址解析协议
ICMP(Internet Control Message Protocol):网际控制报文协议
IGMP(Internet Group Management Protocol):网际组管理协议
之所以ARP画在最下面,因为IP要经常使用这个协议和MAC地址进行转换,偏向于在IP层和物理层。而ICMP和IGMP画在上面,是因为这俩协议要使用到IP协议。相关协议待会儿再叙述。
这里需要理解一些将网路连接起来的一些中间设备:
转发器:物理层
网桥:数据链路层
路由器:网络层
网关:网络层以上使用的中间设备。

二、IP地址分类
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址有32bit,5类。详细情况见下图。
这里写图片描述
网络号(net-id):标志主机所连接到的网络。
主机号(host-id):标志该主机。
1.A类地址
A类地址的目的是支持巨型网络。A类地址比较少,但是支持的主机数量很大。
A类地址的第一位总为0,所以A类地址的范围小于127,因此理论上只有127个可能的A类网络。但是0.0.0.0又没有分配,所以实际上只有126个A类地址。技术上讲,127.0.0.0也是一个A类地址,但是它已经作为一个闭环(Look Back)测试。
A类地址里面有24位表示主机地址。注意IP中全0表示网络,而全1表示网络内的广播地址。
2.B类地址:B类地址的目的是支持中型和大型网络。
3.C类地址:C类地址目的是支持小型网络。
4.D类地址:D类地址用于IP网络中的组播。
5.E类地址:保留研究。

三、IP和MAC的简单区别
IP:网络层
MAC:数据链路层
如图:
这里写图片描述

下面给出一个数据转发的过程:
这里写图片描述
则首部里的地址是不同的:

                   **IP数据报首部地址**        **MAC帧首部地址**
**从H1R1:**          IP1->IP2                  HA1->HA3
**从R1R2:**          IP1->IP2                  HA4->HA5
**从R2H2:**          IP1->IP2                  HA6->HA2

四、ARP
网络层使用IP地址,但是实际上网络链路上传送数据帧的时候,最终还是使用该网络的硬件地址。但是IP地址和下面的硬件地址之间格式不同,比如说IP是32位,MAC是48位,所以存在一定的映射关系。另外,在一个网络上还会有新的主机加入进来,或者撤走一些主机,更换网络适配器也会使主机的硬件地址改变。所以我们一般在主机ARP高速缓存中应存放一个从IP地址到MAC的地址表,并且还要动态更新,这样才能正常和本局域网中的主机通信。
在cmd窗口下输入arp -a :
这里写图片描述

但是主机怎么更新自己的ARP列表呢?
当Computer A要向本局域网Computer B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址,如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。

如果没有:
1.ARP进程在本局域网上广播一个ARP请求分组
2.在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
3.主机B的IP地址和ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,并在这个ARP响应分组里写下自己的MAC地址,并且在自己的ARP缓存里更新,写下主机A的AMC地址。其余主机不理睬这个ARP请求分组。
4.主机A收到这个响应分组后,更新自己的ARP缓冲列表。

如果两台主机不是同一个局域网,那么中间的过程需要用到路由器。而MAC地址也是不断转换的。所以,发送数据报的主机只需要找到最合适的路由器就可以了。剩下的工作由路由器来做。

五、IP数据报格式
如图:
这里写图片描述
(1)版本:占4位,指IP协议的版本,目前使用的IP协议版本号为4(即IPV4),二进制表示就是0100。
(2)首部长度:占4位,可表示的最大十进制数值为15,二进制表示就是1111,但是首部长度字段所表示数的单位是32位字(1个32位字长是4字节)。因此,首部长度字段的最小值是5,二进制表示就是0101,相当于IP首部长度为5*4=20字节。当首部长度为1111,即十进制的15,首部长度就达到最大值15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制在60字节的缺点是有时可能不够。但这样做是希望用户尽量减少开销。最常用的首部长度是20字节。
(3)区分服务:占8位,用来获得更好的服务。,只有在使用区分服务时,这个字段才起作用。
(4)总长度:总长度是指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节(其实就是2^0+2^1+···+2^15=2^16-1),然而实际上传送的数据报都达不到这个长度。这里牵扯到一个MTU。
所谓MTU(Maximum Transfer Unit),就是最大传送单元。当一个IP数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层所规定的MTU值。最常用的以太网的MTU=1500字节。
(5)标识:占16位。IP软件在存储器重维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接受的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确的重装成为原来的数据报。
(6)标志:占3位。但目前只有2位有意义。
标识字段中的最低位MF(More Fragment).MF=1即表示后面“还有分片”的数据报。MF=0表示这已经是若干数据报中的最后一个。
标识字段中间的一位DF(Don’t Fragment):不能分片,只有当DF=0时才允许分片
(7)片偏移:占13位。较长的分组在分片后,某片在原分组中的相同位置。也就是说,相对于用户数据字段的起点,该片从何处开始,片偏移以8字节为单位。每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间:TTL,表示数据报在网络中的寿命,每经过一跳,TTL就减一。如果TTL=1,表示该数据报只能在本局域网内传送。
(9)协议:表示该数据报携带的数据是使用何种协议。ICMP,IGMP,TCP,UDP等
(10)首部检验和:占16位。只检验数据报的首部,不包括数据部分。

六、子网掩码
划分子网是个什么样的情况呢?举个例子:
这里写图片描述

在该图中,145.13.0.0是一个B类网络(B类网络前两位是网络号,后面的0.0表示本网络),为了简化网络,我们把它分成了三个子网,每个自往里面有多台计算机。那么当数据报(其目的地址是145.13.3.10)已经到达了路由器R1的时候,但是从IP数据报的首部我们无法看到源主机或者目的主机所连接的网络是否进行了子网划分,那么路由器怎么把它转发到子网145.13.3.0呢?这就用到了子网掩码。
这里写图片描述
两级IP地址就是没有划分子网的IP地址,而三级IP地址是划分子网的IP地址。路由器要想从数据报中的目的IP地址中提取出所要找的子网的网络地址,路由器就要使用三级IP地址的子网掩码,当三级IP地址和三级IP地址的子网掩码与(AND)之后,就会得到所要找的子网的网络地址145.13.3.0。
因特网上规定,所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就是默认的子网掩码。

A类地址的默认子网掩码:      255.0.0.0
B                 :      255.255.0.0
C255.255.255.0

七、使用子网时分组的转发
在划分子网的情况下,路由器的转发分组的算法如下:

1.从收到的数据报的首部提取目的IP地址D
2.先判断是否为直接交付。对路由器直接相连的网络逐个进行排查:用各网络的子网掩码与D逐位相”与“,看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束,否则就是间接交付。执行3
3.若路由表中有目的地址为D的特定路由主机,则把数据报传送给路由表中所指明的下一跳路由器,否则,执行4
4.对路由表中的每一行,用其中的子网掩码和D逐位相“与”,其结果为N,若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器,否则,执行5
5.若路由表中有一个默认路由器,则把数据报传送给路由表中所指明的默认路由器,否则,执行6
6.报告转发分组出错。
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keneyr

老爷~给小的赏点盘缠吧555~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值