计算机网络:IP层

一、IP基本认识

IP 在 TCP/IP 参考模型中处于第三层,也就是⽹络层。

网络层的主要作⽤是:实现主机与主机之间的通信,也叫点对点(end to end)通信

计算机网络:IP层_第1张图片

⽹络层与数据链路层有什么关系呢?

IP 的作用是主机之间通信⽤的,而 MAC 的作⽤则是实现「直连」的两个设备 之间通信,IP 则负责在「没有直连」的两个网络之间进行通信传输。

源IP地址和目标IP地址在传输过程中是不会变化的,只有源 MAC 地址和目标 MAC ⼀直在变化

二、IP地址基础知识

2.1 IP地址分类

计算机网络:IP层_第2张图片

 计算机网络:IP层_第3张图片

 计算机网络:IP层_第4张图片

  • 主机号全为 1 指定某个网络下的所有主机,用于⼴播,作为目标地址
  • 主机号全为 0 指定某个网络

广播地址分类:

  • 在本网络内广播的叫做受限广播。因为这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 本地网络以外的其他链路上。受限广播地址IP的网络字段和主机字段全为1
  • 在不同网络之间的广播叫做直接广播。由于直接广播有⼀定的安全问题,多数情况下会在路由 器上设置为不转发。IP地址的网络字段定义这个网络,主机字通常全为1,192.168.10.255

多播地址:

多播⽤于将包发送给特定组内的所有主机。由于⼴播⽆法穿透路由,若想给其他⽹段发送同样的包,就可以使⽤可以穿透路由的多播。

计算机网络:IP层_第5张图片

IP分类的缺点

  • 同⼀网络下没有地址层次,⽐如⼀个公司⾥⽤了 B 类地址,但是可能需要根据⽣产环境、测试环境、开发环境来划 分地址层次,⽽这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
  • A、B、C类有个尴尬处境,就是不能很好的与现实⽹络匹配。 C 类地址能包含的最⼤主机数实在太少了,只有 254 个,估计⼀个⽹吧都不够⽤。 而B 类地址能包含的最⼤主机数⼜太多了,6 万多台机器放在⼀个⽹络下⾯,⼀般的企业基本达不到这个 规模,闲着的地址就是浪费。

2.2 无分类地址 CIDR

这种⽅式不再有分类地址的概念,32 ⽐特的 IP 地址被划分为两部分,前⾯是网络号,后⾯是主机号。

表示形式 a.b.c.d/x ,其中 /x 表示前 x 位属于⽹络号, x 的范围是 0 ~ 32 ,这就使得 IP 地址更加具有灵活性。 

还有另⼀种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。 将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

子网掩码还有⼀个作⽤,那就是划分子网。 子网划分实际上是将主机地址分为两个部分:子网网络络地址和子网主机地址。

2.3 公有地址和私有地址

计算机网络:IP层_第6张图片

2.4 IP地址与路由控制

IP地址的网络地址这⼀部分是⽤于进⾏路由控制。

路由控制表中记录着网络地址与下⼀步应该发送⾄路由器的地址。在主机和路由器上都会有各⾃的路由器控制表。 在发送 IP 包时,⾸先要确定 IP 包⾸部中的⽬标地址,再从路由控制表中找到与该地址具有相同⽹络地址的记录, 根据该记录将 IP 包转发给相应的下⼀个路由器。如果路由控制表中存在多条相同⽹络地址的记录,就选择相同位数最多的⽹络地址,也就是最长匹配。

路由表中表项内容一般包括:

1、destination:目的地址,用来标识IP包的目的地址或者目的网络。

2、mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。

3、nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。(若下一跳为直接,则说明找到了对应的子网了,直接从接口转发)

4、interface:输出接口,说明IP包将从该路由器哪个接口转发。

计算机网络:IP层_第7张图片

环回地址

环回地址是在同⼀台计算机上的程序之间进⾏网络通信时所使⽤的⼀个默认地址。 计算机使⽤⼀个特殊的 IP 地址 127.0.0.1 作为环回地址。与该地址具有相同意义的是⼀个叫做 localhost 的主机 名。使⽤这个 IP 或主机名时,数据包不会流向⽹络

2.5 IP分片与重组

每种数据链路的最⼤传输单元 MTU之所以不同,是因为每个不同类型的数据链路的使⽤⽬的不同。使⽤目的不同,可承载的 MTU 也就不同。

其中,我们最常⻅数据链路是以太⽹,它的 MTU 是 1500 字节。 那么当 IP 数据包⼤于 MTU 时, IP 数据包就会被分片(源主机或者路由器分片)。 经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进⾏。 

在网络编程中,我们要避免出现IP分片,原因是IP层是没有超时重传机制的,如果IP层对一个数据包进行了分片,只要有一个分片丢失了,只能依赖于传输层进行重传,结果是所有的分片都要重传一遍,这个代价有点大。由此可见,IP分片会大大降低传输层传送数据的成功率,所以我们要避免IP分片。

对于UDP包,我们需要在应用层去限制每个包的大小,一般不要超过1472字节,即以太网MTU(1500)减去 UDP首部(8)减去IP首部(20)。

对于TCP数据,应用层就不需要考虑这个问题了,因为传输层已经帮我们做了。在建立连接的三次握手的过程中,连接双方会相互通告MSS(Maximum Segment Size,最大报文段长度),MSS一般是MTU减去IP首部(20)减去TCP首部(20),每次发送的TCP数据都不会超过双方MSS的最小值,所以就保证了IP数据报不会超过MTU,避免了IP分片。

你可能感兴趣的:(计算机网络,tcp/ip)