IP协议知识点总结

IP协议主要分为三个
1. 地址管理

每个网络上的设备, 要能分配一个唯一的地址

2. 路由选择

小A 给小B 发消息, 具体应该走什么路线

3. 地址管理

IP 地址. 本质上是一个 32 位的整数

通常将, 32 位的整数使用点分十进制来表示, 如 192.168.1.1

一共可以表示 42 亿 9 千万个地址

但是目前这些 IP 地址并不够用

如何解决 IP 不够用的问题呢???

1. 动态分配 IP 地址

设备上网才分配, 不上网就不分配 -> 这样就可以剩下一大批的 IP 地址

但是并没有增加 IP 地址的数量, 只能一定程度上缓解, 并不能彻底解决问题

2. NAT 机制

将所有的 IP 地址分成两大类

  • 内网 IP:10.* 172.16.* 172.31.* 192.168.*

  • 外网 IP : 剩下的 IP

  • 内网 IP: 可以重复出现 (在不同的局域网中)

  • 外网 IP: 必须是唯一

  • 内网设备如果要访问外网的话, 会给他分配一个外网 IP

  • 这个外网 IP 不是这个设备独占的, 而是内网中的所有设备都共用这一个外网 IP

小栗子

比如我上网买个衣服

收货地址 : 福建省, 福州市, xxxx大学

而一个大学有上万人, 每个人都填这个大学, 这个大学地址是唯一的, 但是代表的人不是唯一

大学里的人就是内网, 里面的人都用同一个外网的 IP

简单模拟一下内网访问外网

在之后, 当服务器发送响应数据报的时候, 路由器本身知道替换, 所以将数据报各自发给我和小a 的主机

由于 NAT 机制, 导致电脑处在内网中, 无法被外部直接访问

两个误区

  1. 不是所有的数据通过路由器转发, 就一定会触发 NAT 功能
  2. 只要求外网的 IP 必须唯一 , 但是内网的 IP 在不同的局域网里是允许重复的 (同一个局域网内不允许重复)

在 NAT 的背景下如何进行通信???

  • 外网设备 -> 外网设备, 不需要任何的 NAT, 就可以直接通信
  • 内网设备 -> 其他的内网设备, 不允许 ×
  • 外网设备 -> 内网设备, 不允许 ×
  • 内网设备 -> 外网设备, 对应的内网设备的路由器, 触发 NAT 机制, 进行 IP 替换, 此时会将这个数据报的源 IP 替换成路由器的 IP

通过 动态分配 + NAT ==> 解决 IP 地址不够用的问题

补充

DHCP是路由器自动给你的设备分配一个局域网内唯一一个 IP

IPv6

IPv4 是使用传统的 IP 协议, 使用 4 个字节, 32 位来表示 IP 地址

IPv6 是新的 IP协议, 使用 16个字节, 128 位来表示 IP 地址

IP 地址的组成

IP 地址分为两个部分, 网络号和主机号

  • 网络号:标识网段 ,保证相互连接的两个网段具有不同的标识 -> 标识一个局域网
  • 主机号:标识主机 ,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号 -> 标识一个局域网内部的主机

一个路由器中, 有两个 IP 地址, 分别是在不同的局域网里

路由器的作用 -> 把两个局域网连起来

WAN:用于连接外部网络 , 通常连接到互联网, 属于广域网接口

LAN:用于连接内网设备, 提供本地网络的连接, 属于局域网接口


比如以上我画的拓扑图, 其中路由器就是把两个局域网连接到了一起,

此时这两个局域网就被称作 " 相邻 " 的局域网, 这两个局域网的网络号是不可以重复的

IP 地址的划分

1. (ABCDE)划分

这种早已不再使用, 只有教科书中会考, 所以了解即可

2. 子网掩码

如图是我的电脑的 IP 地址 以及子网掩码

IP 地址的前 24 位都是网络号, 因为都是 1 , 剩下的八位是主机号

特殊的 IP 地址

假设子网掩码是 255.255.255.0

  • 主机号为 0 的 IP 192.168.0.0 局域网内不应该存在某个主机的主机号为 0

  • 主机号全为1 192.168.0.255 是广播地址, 向这个地址发送 UDP 数据报, 此时这个数据报就会被转发给整个局域网的所有主机

  • IP 为 127 开头的比如 127.* 称作环回 IP 127.0.0.1 (是最常用的) 其他如127.1.1.1 也都是环回 IP , 环回 IP 有很多个

  • 主机号为 1 的比如图上的 192.168.3.1 一般作为网关 IP (指的是大部分情况下, 并不是强制的)

路由选择

比如你要从 A -> B 其中有很多的路线, 具体路线应该如何走, 这就是路由选择需要做的事情

由于网络环境非常复杂, 某一个路由器无法将网络环境全部记录下来

路由器只能记录周围的情况 (也就是只知道附近的路由器是谁)

路由器内部使用 路由表 这种数据结构来记录周围邻居的信息

实际的转发过程, 类似像问路一样, 不断接近最终目标

如图, IP 数据报在转发的过程中, 就是不断问路的过程

  • 由于每个路由器只认识自己周围的情况, 很可能想去的地方, 其实并不知道 (目的 IP 在路由表中, 没有匹配的结果)

  • 如果在自己的表中找不到, 此时就会给你指出一条默认的路径, (路由表中的 "下一条表项" ) ==> 把 IP 数据报指引向更上级的路由器(越上级的路由器就知道越多的内容)

以上是路由选择转发的过程**(简化版)**

其中细节部分还有 路由表是如何生成的, 路由表如何进行匹配 ...(具体不多阐述)

相关推荐
HSunR20 分钟前
概率论 期末 笔记
笔记·概率论
红色的山茶花30 分钟前
YOLOv9-0.1部分代码阅读笔记-loss_tal.py
笔记·深度学习·yolo
小蜗牛慢慢爬行1 小时前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
MARIN_shen1 小时前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
打鱼又晒网1 小时前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
m0_748240021 小时前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome
終不似少年遊*2 小时前
华为云计算HCIE笔记05
网络·华为云·云计算·学习笔记·hcie·认证·hcs
车轮滚滚__2 小时前
uniapp对接unipush 1.0 ios/android
笔记
蜜獾云2 小时前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小林熬夜学编程3 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http