深入了解 IP 协议:TCP/IP 协议族中核心的网络层协议

日期: 2024-08-19 11:09:35|浏览: 397|编号: 61335

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

在此处写入目录标题

IP 协议

IP协议:它其实是TCP/IP协议中针对网络层的协议(注意,IP协议是TCP/IP协议族中的核心协议,因为上层数据将以IP数据报的格式进行传输)。

基本概念

既然IP协议是网络层协议,那么我们先来了解一下网络层主要解决什么问题:

1.网络层:主要任务是实现网络互连,进而实现网络间数据包的传输。

路由器功能:在上图中,路由器的功能是连接不同的网络,在网络层解析要传输的数据报,为其找到一条路径(找到到达目标主机的路)并转发数据。

2. 在网络层实现这些任务需要解决哪些问题?(下面我们会一一解答这些问题)

通过以上网络层的主要任务和解决的问题我们可以看出,对于IP协议来说,它的主要任务是负责地址管理和路由选择。

注:我们在学习的时候经常会了解到IP协议提供的是不可靠的、无连接的数据包传输服务。

实际上是这样的:

协议头格式

如下图所示:

如图所示,我们可以看到一个IP协议数据包头的格式(水平表示为32bit,从左到右依次为0~31,这样排列的原因是TCP/IP头中所有的二进制整数都是按照大端字节序(先0~7bit,然后8~15bit以此类推)传输的,因此也叫网络字节序(big ))。

以上各部分内容如下:

网络分段

我们知道ipv4地址是一种数据类型,它所对应的IP地址数量大概是42.9亿个,所以实际上IP地址是不够用的,我们如何设置IP地址,使得每个主机的IP地址不重复呢?

答:为了解决这个问题,通过划分网络来进行地址管理。一个网络中可以分配给主机的IP地址都会有相同的网络号。此时只要保证各个网络的网络号不同,就可以进行网络地址的简单管理。

1、IP地址的组成:网络号+主机号。(也是网络中一台主机的唯一标识)

在:

①:通过合理设置主机号和网络号,可以保证互联网络中各主机的IP地址不同。

②:IP地址占用4个字节,32位,以点分十进制表示。

2.DHCP技术

①:手动管理IP地址是一个非常麻烦的工作,因此引入了DHCP技术。

②:DHCP技术是一种动态分配IP地址的技术。它可以自动为网络中新增加的主机分配IP地址,避免手动管理IP地址的不便。(一般路由器都具有DHCP功能,因此路由器也可以称为DHCP服务器)

3. 早期网络分割

在早期的网络细分中,所有的IP地址被分成了五类,如下图所示:

在:

(由于只能为网络上的主机分配 A 类、B 类和 C 类 IP 地址,因此我们不会详细介绍 D 类和 E 类。)

4、由于现代网络发展迅速,大多数单位基本上都申请B类网络,因此B类网络地址很快就被分配完毕,而A类地址则被浪费(因为A类中每个网络号对应的主机号数量过多,而对于一个网络来说,一般不会有那么多的主机号)。因此,为了解决这种情况,就引入了一种新的划分方案,即CIDR方案。

①:CIDR方案提出引入一个新的字段——子网掩码。

②:子网掩码:它是一种数据(即和IP地址一样,占用4个字节,以点分十进制表示),但数据是由连续的二进制1组成的。

特点如下:

这样,无论是A类IP地址、B类IP地址还是C类IP地址,都可以根据IP地址来划分子网,大大减少了IP地址的浪费。

下面的例子:

①例1:IP地址加上子网掩码就可以得到网络号,而该子网中主机号占一个字节,因此子网范围如上图。

②例2:IP地址与子网掩码相加得到网络号,但在这个子网中,它的最后一个子节点的二进制数为“1111 0000”(之所以只看最后一位,是因为子网掩码前三个子节点的十进制数为255,用二进制表示为“1111 1111”,这个数加上任何数都等于它所加上的数),而IP地址最后一个子节点68的二进制数为“0100 0100”,所以相加之后为“0100 0000”,对应十进制数为64,由此可知它的网络号。那么,由于子网掩码最后一位为0的位置有4个,最大为15个,所以子网地址的范围如上图所示。

从上面我们可以了解到,对于子网,IP地址的主机数中固定几位作为子网数(所以对于网络号所占子网数对应的子网掩码所占的位置,在这个范围内子网掩码所占的位都是1),然后在子网内进行主机数的划分。这样就避免了像A类网络那样,每个网络中的主机数非常庞大。

例如某公司申请了一个C类网络192.168.2.0/24(其中/24代表子网掩码,从高位到低位,24位为1,8位为0),此时需要将网络均匀划分为4个子网。

划分方法是:由于是C类网络,主机号占8位,取最高两位来划分,因为2位最多可以表示4个数(00/01/11/10),而此时这个子网的掩码为“255.255.255.192”(因为最后一个字节的最高两位已经被占用),所以每个子网所包含的主机号个数为剩下6位所能表示的最大个数。

特殊 IP 地址

1.针对可分配的A、B、C类。

IP地址由网络号和主机号组成,但在特定范围内,并不是每个主机号都可以分配给网络上的主机。有两种特殊的IP地址。

2.特殊IP地址:

私有IP地址和公有IP地址

1、某单位组建了一个局域网,但是IP地址仅限于局域网之间通信,并不与互联网相连。因此在这个局域网中,这些IP地址都是私网IP地址。理论上来说,任意IP地址都可以使用,但是不能与公网IP地址重复。因此,文件规定:

这个范围内包含的都是私有IP,其余的都是全局IP(也叫公有IP)。

2.如下图所示:

IP 地址数量限制

上面我们知道,IP地址是一个4字节32位正整数(也就是类型),它所能表示的IP地址最大不超过43亿个。TCP/IP规定每台主机都必须有一个IP地址。(实际上由于一些特殊IP地址的存在,即使这些能表示的IP地址也不能用在实际的主机IP地址中。而且现在的路由结构已经没有层次结构,而是扁平结构,每个网络都需要一个路由表项。所以随着网络的发展,一个有多个网络的网站必须分配多个C类地址)

1、CIDR( Inter- ,其实就是提出了子网掩码)在一定程度上缓解了IP地址不足的问题,但也仅仅止步于提高原有IP地址数量的利用率,而原有的数量并没有改变,所以还是不够用。

2.针对以上问题给出了三种解决方案:

3.NAT技术:

该技术很大程度上解决了IP地址不足的问题,主要是通过IP地址的重用来实现的。(这里的重用并不违反网络中IP地址不能重复的规则)

1、上面我们知道,对于一个局域网来说,它有一个私有IP地址和一个公有IP地址。(其实私有IP地址是用于局域网内部通信的,而公有IP地址是用于不同局域网之间的通信的)

2、对于私有IP地址来说,它们只用于局域网内不同主机之间的通信。不同局域网内的主机通信时,它们的通信其实并不是两台主机之间,而是它们的公有IP地址之间。因此,对于不同的私有网络,它们的内部IP地址是可以重复的。(全局IP必须是唯一的,而私有IP则不必如此,不同局域网内同一个私有IP完全没有影响,所以这大大减少了IP地址的使用。通过重复使用IP地址,可以缓解IP地址不足带来的弊端。)

3、IP转换技术:将私网IP转换为公网IP,进行数据通讯。(不同网络的主机间通讯)

如下图所示:

假设客户端A想要跟服务器进行通信,此时客户端A发送数据,被自己网络的路由器接收,路由器收到后发现目标IP地址是外网的,于是就把自己的公网IP地址替换成源IP地址然后发送给服务器,大致流程如下:

其中:对于每一台私网主机,它们在与外网主机通讯时,其路由器在转发时都会分配一个不同于其他主机的端口号,以防止同一个私网内的不同主机请求同一个外网主机时,造成数据混乱,如下图所示:

其中:客户端A和客户端B同时向服务器发出请求,转换的时候NAT路由表中的转换表会将不同的主机转换成不同的端口号。

4.NAT技术缺陷

由于NAT技术很大程度上依赖于这个转换表,因此:

5. NAT 和代理服务器

① 代理服务器:其实就是一个中间人,客户端向代理服务器发送请求,代理服务器把请求转发给客户端真正要请求的服务器,服务器响应请求,把响应数据发送给代理服务器,代理服务器再把响应转发给客户端。(通常用于绕过防火墙(广域网中的代理,比如查看外网的一些资源)和负载均衡(局域网中的代理))

其实代理服务器的做法和NAT技术类似,一般的路由器都具备NAT设备的功能,当局域网下的主机请求外网的服务器时,会转至路由器中的NAT设备下。

②:这两者这么相似,那么有什么区别呢?

③:正向代理与反向代理

路由

在大型网络中,两台主机之间的通信必须经过许多不同的路由器转发,才能到达另一端进行通信。(因为网络是复杂的星型网络结构)

所以实际上一台主机从源主机向对端主机发送的数据,是经过很多台路由器进行转发的,如下图所示:

如图所示,主机A与主机B通信时,数据会经过A、B、C、D四个路由器的转发,最终到达主机B。(这个过程也叫“跳跃”)

这些路由器怎么知道主机B在哪儿,然后安排路由呢?

1.路由表

①:每个节点设备都配有一张路由表(在每个网段、每个节点中都有),路由表里包含了该路由加入到IP路由表的目的地址、网络掩码、优先级、路由代价、输出接口和下一跳IP地址。(这些信息的存在使得IP数据包能够在网络中找到准确的目的地址)

②:IP数据包到达路由表时要经过哪些操作?

当路由器收到一个IP数据包时,它会取出目标的IP地址,然后在自己的路由表中查找,找到合适的“下一跳”,然后转发给“下一跳”,然后继续类似的操作。

具体操作如下:

如下图所示:

如上图所示,这是不同网络内的主机之间的通信情况。

2.示例

如图所示,是一张路由表:

在:

例如:如果发送的数据包的目的地址是192.168.56.3

操作如下:

如果在上面的例子中,执行到最后一行之后,还是没有找到合适的IP地址,那么证明目的主机已经不在网络中了,所以这时候就需要寻找路由器(网络的默​​认网关)进行转发。

提醒:请联系我时一定说明是从101箱包皮具网上看到的!