IP(Internet Protocol,网际协议)主要负责将数据包发送给最终的目标计算机。
因此,IP能够让世界上任何两台计算机之间进行通信。
本章主要介绍IP和ICMP(Internet Control Message Protocol)两个协议
网络层的主要作用是:实现终端节点之间的通信(也叫点对点(end-to-end)通信)。
数据链路层的主要作用是:在互连的同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层,网络层可以跨越不同的数据链路。
数据链路层提供直连两个设备之间的通信功能。
网络层的IP则负责在没有直连的两个网络之间进行通信传输。
说明:
此处的区间内就如同通信网络上的数据链路,而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目的地址等首部信息。
整个全程的行程表的作用就相当于网络层。
IP有三大作用模块:IP寻址,路由(最终节点为止的转发)、IP分包与组包。
数据链路的MAC地址:是用来标识同一个链路中不同计算机的一种标识码。在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址。因为这些设备只负责将IP包转化为0、1比特流或对数据链路帧的数据部分进行转发。
IP地址:连接到网络中的所有主机中识别出能进行通信的目标地址。
eg:
不论一台主机与哪种数据链路连接,其IP地址的形式都保持不变。
路由控制routing是指将分组数据发送到最终目标地址的功能。一个数据包之所以能够成功到达最终的目标地址,全靠路由控制。
Hop译为“跳”,它指的是网络中的一个区间。IP包正是在网络中的一个个跳间被转发,因此,IP路由也叫做多跳路由。
eg:
多条路由:在一个区间内决定着包在下一跳被转发的路径。
说明:
IP数据包的传输:当某个IP包到达路由器时,路由器首先查找其目标地址,从而再决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这个IP包到达那个路由器以后,会再次经历查找下一目标地址的过程。
为了将数据包发给目标主机,所有主机都维护着一张路由控制表(Routing Table)。
路由表记录了IP数据在下一步应该发给哪个路由器;
IP包将根据这个路由表在各个数据链路上传输。
eg
路由控制表
IP是实现各个数据链路之间通信的协议。不论底层数据链路使用以太网还是WLAN,或者PPP,都将被一视同仁。
不同数据链路有个最大的区别,就是它们各自的最大传输单位(MTU:Maximum Transmission Unit)不同。MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为9180字节。
为了解决该问题,IP进行了分片处理(IP Fragmentation)。
分片处理,就是将较大的IP包分成多个较小的IP包,分片的包到了对端目标地址以后,会被再组合起来传送给上一层。
从IP层上来看,它可以完全忽略数据包在途中的每个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。
面向无连接的情况是:即使对端主机关机或不存在,数据包还是会被发送出去。若没有做好准备就很有可能错过一些该收的包,因此,在面向无连接的方式下可能会有很多冗余的通信。
IP采用面向无连接?why?
主要有两点原因:一是为了简化,二是为了提速。
面向连接比起面向无连接处理相对复杂,甚至每个连接本身就是一个相当繁杂的事情。
此外,每次通信之前建立连接,会降低处理速度。
所以,需要有连接的时候,可以委托上一层提供此项服务。
为了提高可靠性,上一层的TCP采用面向有连接型
IP提供尽力服务(Best Effort),指的是:为了把数据包发送到最终目标地址,会尽最大努力,然而,他并不做最终收到与否的验证。
IP地址(IPv4地址)由32位正整数来表示。
TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。
IP地址在计算机内部是以二进制方式被处理。
补:一块网卡可以配置多个IP地址,一台路由器通常会配置两个以上的网卡,因此可以设置两个以上的IP地址。
IP地址=网络号(网络标识)+主机号(主机标识)
1)IP地址的唯一性:相同段内相连的主机必须有相同的网络地址;而在同一个网段内,IP地址的主机号不可以重复出现
2)路由器只要一见到网络号就能判断出是否为该网段内的主机
3)网络号是以子网掩码(网络前缀)来区分
eg:IP地址的网络号
根据IP地址中从第1位到第4位的比特列,对网络号和主机号进行区分。
1)A类地址
IP地址首位以“0”开头;
从第1位到第8位是它的网络号,后24位是主机号;
A类的网络地址范围是:0.0.0.0-127.0.0.0;
一个网段内可容纳的主机地址上限为16777214个;具体的计算过程如下(了解即可):
2)B类地址
IP地址的前两位是“10”;
从第1位到低16位是它的网络号,后16位是主机号;
B类网络地址范围是:128.0.0.1-191.255.0.0;
一个网段内可容纳的主机地址上限为65534,具体计算过程如下(了解即可):
3)C类地址
IP地址的前三位为110;
从第1位到第24位是它的网络号,后8位是主机号;
C类地址的范围:192.168.0.0-239.255.255.0;
一个网段内可容纳的主机地址上限为254个,具体计算过程如下(了解):
4)D类地址
IP地址前三位是1110;
从第1位到第32位是网络号,无主机号;
网络地址范围是:224.0.0.0-239.255.255.255;
常被用于多播;
注意:关于分配IP主机地址的注意事项
全部只有0,表示:在对应的网络地址或IP地址不可获知的情况下才使用;
全部为1,表示:主机地址通常作为广播地址;
广播地址用于在同一个链路中相互连接的主机之间发送数据。将IP地址中的主机地址全部设置为1,就成为了广播地址。
补充:以太网中的MAC地址
2)直接广播(由于安全问题,多数情况下路由器上设置为不转发)
在不同网络之间的广播叫做直接广播
1)同时发送提高效率
多播用于将包发送给特定组内的所有主机,由于使用IP协议,因此,也是一种不可靠传输。
广播无法穿透路由,多播可以穿透路由。
2)IP多播与地址
多播使用D类地址,如下所示:
多播地址的可用范围:224.0.0.0-239.255.255.255;
在同一个链路内可以实现多播,因为在224.0.0.0-224.0.0.255的范围内不需要路由控制;
在这个范围外,设置多播地址会给全网所有组内成员发送多播的包;
利用IP多播实现通信,除了地址外还需要IGMP等协议的支持。
下面列出既定已知的多播地址(了解即可):
1)传统的分类方式会造成资源的浪费
2)子网与子网掩码
一个IP地址有两种识别码,一是IP地址本身,二是表示网络部分的子网掩码;
子网掩码:其识别码通过子网网络地址细分出比A类、B类、C类更下粒度的网络;
子网掩码可以灵活指定网络标识的长度
子网掩码的位数:32位;
子网掩码对应的IP地址的网络号部分全为1,主机号部分全为“0”;
表示方式:
eg:172.20.100.52的前26位是网络地址为例:
CIDR(Classless Inter-Domain Routing):采用任意长度分割IP地址的网络号和主机号。
CIDR有效地利用了当前IPv4地址,同时通过路由集中降低了路由器的负担。
eg:
进一步提出可变长的、高效的IP地址分配方式
VLSM(Variable Length Subnet Mask,可变长子网掩码):可以随机修改组织内各个部门的子网掩码长度的机制。
它可以通过域间路由协议转换为RIP2以及OSPF来实现。
eg:根据当前网络的主机数,来确定子网掩码长度
总结:有了CIDR和VLSM技术,相对地缓解了全局IP地址不够用的问题
它不要求为每一台主机或路由器分配一个固定的IP地址,而是在必要的时候只为相应数量的设备分配唯一的IP地址。
私有IP与全局IP对比
而除此之外的是全局IP。
b)配有私有IP的地址主机连网时,则通过NAT进行通信
全局IP地址基本上要在整个互联网范围内保持唯一,而私有地址只需要在同一个域里保证唯一即可,在不同的域里出现相同的私有IP不会影响使用。
c)私有IP地址结合NAT技术已成为现在解决IP地址分配问题的主流方案
d)全局IP与私有IP的例子
连接某个区域网络的时候,一般不需要联系提供商,而是联系该区域网络的运营商;
固定IP地址申请全局IP地址的流程如下:
so,现在互联网的通信方式是:
设置私有地址,,通过少数设置全局IP地址的代理服务器结合NAT的设置进行互联网通信;
这时IP地址个数是由代理服务器和NAT的个数决定的。
eg:入股使用公司内网,今后不会直接接入互联网,只需要使用私有地址即可。
补充:
ICMP是诊断IP时必须的信息
1)发送数据包时所用的地址是网络层的IP地址;
主机和路由器都必须用一个路由表routing table才能实现IP通信;
2)路由表的作用:指名路由器或主机的信息,以便真正发送目标地址。
路由表的形成方式有两种:
静态路由:管理员手动控制;
动态路由:路由器与其它路由器相互交换信息时自动刷新,为了让动态路由及时刷新路由表,在网络上互连的路由器之间必须设置好路由协议,来保证正常读取路由控制信息。
3)IP本身并没有定义制作路由控制表的协议,该表由路由协议制作而成。
IP地址的网络地址部分用于进行路由控制。
默认路由一般记为0.0.0.0/32或者default。
注意:使用主机路由会导致路由表膨大,路由负荷增加,进而造成网络性能下降。
1)路由表的聚合也叫路由汇总aggregation
2)利用网络地址的比特分布可以有效地进行分层配置。
对内即使有多个子网掩码,对外呈现出的是同一个网络地址。;
通过路由信息的聚合可以有效地减少路由表的条目,更好地构建网络。
说明:
1)路由聚合可以将已知的路由信息传送给周围其它的路由器,以达到控制路由信息的目的。
1)每种数据链路的最大传输单元MTU之所以不同,是因为每个不同类型的数据链路的使用目的不同。
2)IP抽象化了底层的数据链路:IP属于数据链路上一层,它必须不受限于不同数据链路的MTU大小。
1)任何一台主机都有必要对IP分片(IP Fragmentation)。
2)经过分片之后的IP数据报只能由目标主机进行重组;
路由器只进行分片,不会重组
3)IP数据报在目标主机进行重组,在路由器进行分片的原因是:
下面是IP报文的分片与重组的例子(数字表示数据长度,单位为字节Byte)
注:在目标主机进行分片的IP报文进行重组的时候,可能有一部分包会延迟到达。因此,一般会从第一个数据报的分片到达的那一刻起,等待约30s后再处理。
分片机制的不足如下:
1)路由器的处理负荷加重。随着人们对网络安全要求提高,路由器需要做的其它处理越来越多,如网络过滤等。so,是不希望路由器进行IP数据包的分片处理。
注意:过滤是指只有带有一定特殊参数的IP数据报才能通过路由器。参数可以是:发送端主机、接收端主机、TCP或UDP端口号或TCP的SYN标志或ACK标志。
2)在分片处理中,一旦某个分片丢失了,则会造成整个IP数据报作废。
路径MTU发现(path MTU Discovery):指的是从发送端主机到接收端主机之间,所有链路中最小的MTU。路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送,从而避免在中途的路由器上进行分片处理。eg:现在很多操作系统(主机)都已经实现了路径MTU发现的功能。
1)在UDP的情况下,路径MTU发现的机制
2)在TCP的情况下,路径MTU发现的机制
在TCP情况下,根据路径MTU的大小计算出最大段长度MSS,然后再进行数据报的发送。
在TCP中采用MTU发现,IP层是不会进行分片处理,在目的主机也不会进行重组。
1)IPv4的地址长度为4个8位字节,即32bit。
IPv6的地址长度是原来的4倍,即128bit,一般写成8个16位bit
将128bit的IP地址以每16bit为一组,每组用冒号:隔开进行标记;
如果连续出现0的时候,可以将0进行省略,并用**两个冒号::**隔开(一个IP地址仅允许出现一次两个连续的冒号);
具体eg举例如下:
1)IPv6使用的是一种全局的单播地址,它是互联网中唯一的一个地址,不需要正式分配IP地址。
2)在不使用路由器或在一个以太网网段内进行通信的时候,可以使用链路本地单播地址。
3)在多种类型IP地址的网络时,在同一个链路上可以使用全局单播地址及唯一本地地址进行通信。
eg:具体eg如下:
说明:
全局单播地址是指世界上唯一的一个地址,前64bit为网络标识,后64bit为主机标识。
注意:从IPv6地址中查看定位设备没那么简单,因为接口IP可设置为一个与MAC地址没有关系的**“临时地址”,这种临时地址通常随机产生**,并会定期更新。
n=48,m=16
唯一本地地址是不进行互联网通信时所使用的地址。
作用:为了提高安全性,企业内部的网络与互联网通信时通常会通过NAT或网关(代理)进行。
唯一本地地址虽然不会与互联网连接,但是也会尽可能地随机生成一个唯一的全局ID。
用唯一本地地址可以在企业兼并、业务统一等等不改动IP地址的情况下,进行网络连接和实现网络的统一。
IPv6的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。
IPv6中最小MTU为1280字节。
作用:减少路由器的负荷,提高网速。
IPv4的数据报如下:
IP首部中包含着用于IP协议进行发包控制时所有的必要信息。
由4bit构成,标识IP首部的版本号,IPv4的版本号为4.
其它的IP首部的版本号如下:
区别与普通软件产品,版本号会随着更新而逐渐增大,最新版本号即为最大号码。
而在互联网中,在实验的额过程中,会选择一个最佳的产物进行标准化。
由4bit构成,表明IP首部的大小。
单位是4Byte(32bit)。eg:首部长度设置为5,那么IP首部的长度就是20Byte=4✖5。
由8bit构成,用来表明服务质量。
这个值通常由应用指定,由于实现TOS控制是极其复杂的,这也导致TOS整个互联网几乎就没有被投入使用。
长16bit,表示IP首部与数据部分结合起来的总字节数;
由于有IP分片处理,从IP的上一层的角度看,无论采用何种数据链路,都可以认为能够以IP的最大包长传输数据。
由16bit构成,用于分片重组;
同一个分片的标识值相同,不同分片的标识值不同,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
由3bit构成,表示包被分片的相关信息。
13bit构成,用来标识被分片的每一个分段相对于原始数据的位置。
由8bit构成,指的是:可以中转多少个路由器。每经过一个路由器,TTL会减少1,直到变成0,则丢弃该包。
8bit构成,表示IP首部的下一个首部隶属于哪个协议。
由16bit组成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。
32bit
32bit
这就能理解了为什么IPv4的协议首部里面可以表示这么多的内容
未能成为有效的技术
128bit