网际协议IP

一、概述

1、什么是IP

​ IP是Internet Protocol(网际协议)的缩写。是TCP/IP中的网络层协议。IP协议只提供了无连接,不可靠,尽力而为的数据传输方式

IP主要包含三方面内容:IP编址方案、分组封装格式及分组转发规则。

​ IP设计出来是为了提高网络的可扩展性

1、解决互联网问题:实现大规模网络互联

2、解耦:让各层协议互不影响,独立发展

2、网络层协议有哪些

0、网际协议IP(Internet Protocol) ==》数据转发

1、地址解析协议 ARP (Address Resolution Protocol) ==》IP地址转换成MAC地址

2、逆地址解析协议 RARP (Reverse Address Resolution Protocol) ==》MAC地址转换成IP地址

3、网际控制报文协议 ICMP (Internet Control Message Protocol) ==》检测网络报错

4、网际组管理协议 IGMP(Internet Group Management Protocol) ==》路由选择

image-20201230144852253

二、IP地址

1、IP地址组成

IP地址是一种分等级的地址结构。每一类地址都由两个固定长度的字段组成(一共32位)。

​ 其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络。

​ 而另一个字段则是主机号 host-id,它标志该主机(或路由器)。

  • 分等级的好处

    1、方便IP地址的管理。只用分配网络号,主机号自己分配
    2、方便路由器进行转发。 只用根据网络号进行转发,减少路由表的存储量
    

2、IP地址分类

image-20201230150546059

​ A类地址有8位网络号,以0开头。可以容纳2的24次方台计算机

​ B类地址有16位网络号,以10开头。可以容纳2的16次方台计算机

​ C类地址有24位网络号,以110开头。可以容纳2的8次方台计算机

​ D类地址以1110开头。多播使用

​ E类地址以1111开头。保存为今后使用

3、IP地址使用范围

image-20201230151541283

4、特殊的IP地址

127.0.0.1 		本地环回地址
169.254.0.0   	window自动分配的ip地址


--- 保留的私网地址(内网),在公网上访问不到
10.0.0.0
172.16.0.0 -- 172.31.0.0      B类地址
192.168.0.0 -- 192.168.255.0  C类地址

三、划分子网

需求:将一个c类地址划分成多个子网

1、子网掩码

子网掩码:屏蔽一个IP地址的网络部分的“全1”比特模式。 ==》即把网络部分全部变为1,主机位全部为0。就得到了子网掩码

​ 对于A类地址来说,默认的子网掩码是255.0.0.0;

​ 对于B类地址来说默认的子网掩码是255.255.0.0;

​ 对于C类地址来说默认的子网掩码是255.255.255.0。

  • ​ 作用

    1、 区分网络号和主机号
    2、 划分子网
    3、 判断是不是在一个网段里
    	比如ip地址为192.168.0.1  子网掩码为255.255.255.0 --》 做与运算。网络号为192.168.0 
           ip地址为192.168.1.1  ==》网络号为192.168.1 所以不在同一网段
    

  • ​ 案例:利用子网数量计算子网掩码

    前提: 192.168.0.0 划分成两个子网(2的二进制位10)
    
    1、计算主机位需要变成网络位的位数:1  ==》 如果二进制中只有一个1,那么就减一位。否则保持原状 (如10和11000 分别为1和5位)
    
    2、得到最终的子网掩码 ==》 原子网掩码为255.255.255.0==>那么现在的子网掩码为:255.255.255.128
    

2、子网划分步骤

1、确定子网掩码

2、确定主机号和网络号

3、确定各子网可用ip地址范围(主机位不全为0或1

网段除一次2,子网掩码右移1位

3、子网划分案例

​ 假设将192.168.0.1 、255.255.255.0(子网掩码) 这个C类地址划分成四个子网 :

​ 如图: 划分四个子网,子网掩码需要右移两位。可知 子网掩码为: 255.255.255.192

image-20201230170053404

网络位 主机位 子网地址 可用ip地址范围
00 000000 192.168.0.0 192.168.0.1 -- 192.168.0.62
01 000000 192.168.0.64 192.168.0.65 -- 192.168.0.126
10 000000 192.168.0.128 192.168.0.129 -- 192.168.0.190
11 000000 192.168.0.192 192.168.0.193 -- 192.168.0.253

小技巧: 当画出上述图时,可以通过 子网开始+1 ---- 子网结束-2 得到可用ip地址范围 ==》 比如 0+1 ---- 64-2

4、子网划分的意义

1、减少网络风暴带来的危害 ==》 当网络风暴产生时,只影响本网段的计算机

2、节省IP地址 ==》比如:学校里有四间教室,如果每个教室(各有10台主机)都分配一个C类ip地址的话,那么就会浪费很多ip地址(每个网段只有10台主机,但原本可以容纳254台)。但是如果只分配一个ip地址,在这基础上划分四个子网,就会减少ip地址的浪费

四、子网合并:构造超网

​ 需求:将多个子网合并到一个子网中,可以互相通信

image-20201230180950044

前提:将200台机器接到交换机C下,分配ip:192.168.0.1

​ 将200台机器接到交换机D下,分配ip:192.168.1.1

​ 子网掩码都是255.255.255.0 经过和ip地址进行与运算得出网络号分别为 192.168.0和192.168.1。 所以不在同一网段下,不能互相通信

​ 为了让两网段可以互相通信,有以下解决方案:

  • 方案一

    让路由器作为两个网段的网关,这样A发送的数据可以通过路由器再转向B。效率慢
    

  • 方案二:构造超网

    将192.168.0.1和192.168.1.1两个c类网络合并 
    

    image-20201230181228303

    1、子网掩码前移一位。 这样网络位就变为23位,子网掩码变成255.255.254 (原来最后一位变为主机位)
    2、总网段在192.168.0下面(主机号归零)
    

    image-20201230181506872

五、IP地址与MAC硬件地址

​ 以下为数据通信的原理图:

image-20201230182601045

发送数据时,数据从高层到底层逐层封装,到数据链路层时,将ip数据报封装成MAC帧,并带上源地址和目标地址的硬件地址

  • 计算机通信过程

image-20201230183133221

1、ip地址决定最终要到哪台计算机,MAC地址决定下一跳是哪

2、交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据包;

六、IP数据报

1、格式

一个 IP 数据报由首部和数据两部分组成。(数据报也可以说是数据包)

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

在首部的固定部分的后面是一些可选字段,其长度是可变的。

image-20201230183301080

2、IP 数据报首部

image-20201230183331848

数据报首部可分为固定部分和可变部分,固定部分为了五行,每行32位即4个字节。

  • 版本——占 4 位(第一行四个字节中0~3位),指 IP 协议的版本该 IP 协议的版本号为 4 (即 IPv4);

  • 首部长度——占 4 位(第一行四个字节中4~7位),表示首部总的长度(固定+可变部分);可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。

  • 区分服务——占 8 位(第一行四个字节中8~15位),区分服务。即该段设置了数据报的优先程度,若要想实现数据报优先传输还需要在路由器端配置相应的区分服务设置。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 。

  • 总长度——占 16 位(第一行四个字节中16~31位),指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

  • 标识(identification)——占 16 位(第二行四个字节中1~15位),它是一个计数器,用来产生数据报的标识,即每产生一个数据报贴上一个标识。

  • 标志(flag)——占 3 位(第二行四个字节中16~18位),目前只有前两位有意义。

    ​ 标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。

    ​ 标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF = 0 时才允许分片。即标志表示该数据报是否分片了?是第几个分片?

  • 片偏移——占12 位(第二行四个字节19~31位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

    ​ 由于最多只能传输1500字节的数据,所以会先把大字节数据分片传输,如下所示:

    image-20201230183502156

  • 生存时间——占 8 位(第三行四个字节中0~7位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。即计算机发出数据时会附带一个TTL值,该值在数据报每经过一个路由器就自减1,等到某路由器接收到该数据报发现其TTL值变为0时不在中转该数据报,而是将其丢弃并向最初发送者返回一个ICMP报文。TTL的设置可以防止数据报无限循环传输

image-20201230183656480

​ 如上,得到TTL为52,说明中间经过(128-52)=76个路由器。通过加参数 ping www.baidu.com -i 1 可以追踪数据报传输过程

  • 协议——占 8 位(第三行四个字节8~15位)字段指出此数据报携带的数据使用何种协议。比如4:IP协议 17:UDP协议等

  • 首部校验和——占 16 位(第三行四个字节16~31位)字段只检验数据报的首部不检验数据部分,目的是验证数据报的首部有无错误。

3、抓包演示

​ 下载Wireshark https://www.wireshark.org/#download

过滤ip:   ip.addr == 180.101.49.12 and icmp

image-20201230183913826

七、IP数据报转发分组的流程

1、 流程

数据路由: 路由器在不同网段转发数据包;

网络畅通的条件:数据包能去能回;(路由器要知道到目标网络 下一跳应该给哪个接口)

image-20201230184340541

当计算机PC0 ping PC1时,网络要想通。

就要求Router0、 Router1、 Router2和Router3都有到192.168.1.0/24网络的路由

同时,当数据从PC1 返回给PC0时,也需要Router0、 Router1、 Router2和Router3都有到192.168.0.0/24网络的路由

注意:路由器知道直连网络的网段。即Router0知道192.168.0.0 和172.16.0.0网段的信息

2、 数据包转发:案例分析

image-20201230185012673

前提:没有配置静态路由

  • PC0是否可以ping通Router1的2接口
不可以。 Router1的2接口在172.16.0.0网段,和PC0不在同一网段。        
	去的时候: 由于不在同一网段,PC0先把数据包给Router0的左边端口(网关),Router0直连172.16.0.0网段,所以可以去Router1的2接口        
	回的时候:Router1直连的是172.16.0.0和172.16.1.0网段,与192.168.0.0网段非直连,所以如果不给Router1手动输入关于网段192.168.0.0的相关路径信息,Router1将无法把数据传回PC0,数据包能去不能回,造成通信失败。

3、windows路由设置

windows的默认网关就是默认路由

  • 查看路由表
route print

image-20201230185423714

  • 测试:没有配置网关的情况

    使用自配置ip,但是没有配置网关(即没有路由)

image-20201230185518421

ip route ==> 查看路由表==》没有默认路由了,无法访问其他网段

image-20201230185525804

ping 其他网段,无法访问

image-20201230185531983

  • 解决方法:自己配置路由表或配置网关

    route add 0.0.0.0 mask 0.0.0.0 172.16.24.129
    

    三个地址分别是网络目标IP地址、 网络掩码和网关。

4、多网卡转发:案例分析

image-20201230185735932

前提: PC-PT 有两张网卡,所以有两个网关,即两个默认路由。

​ 172.16.0.0 为内网

  • 问题

    当Clou-PT-Cloud0用户访问PC-PT时,去的时候可以访问到PC-PT。但是当PC-PT返回数据时,由于有两个路由(可以选择任意路径发送),所以并不一定能把数据包准确发送给用户(可能会由网卡2的路由转到内网,内网发现自己没有这个ip地址,就丢弃)

  • 解决方法

    删除网卡2的默认路由,配置静态路由

route add 172.16.0.0 mask 255.255.255.0 172.16.0.1  ==>去172.16.0.0网段走路由172.16.0.1

这样设置之后,网卡1通过默认路由访问Internet, 网卡2通过指定路由访问内网

参考链接:

https://baike.baidu.com/item/IP/224599


如果本篇博客有任何错误和建议,欢迎大佬们批评指正

我是知逆,我们下期见

Peace

原文地址:https://www.cnblogs.com/mercurytan/p/14213056.html