当前位置: 首页 > news >正文

网络原理:网段划分

传输层 TCP

网络层 IP 协议

1)动态分配 IP

2)NAT

3)IPv6

IP 地址分成了 内网 IP 和 外网 IP 一个外网 IP 可以代表一系列局域网内部的设备. NAT 设备做网络地址的转换(内部维护 IP + 端口 映射关系)

网段划分

组建网络:

        IP 地址分成两个部分

                网络号:标识局域网

                主机号:标识主机

同一个局域网内部,网络号必须相同,主机号必须不同,两个相邻局域网,网络号必须不同,主机号随意

子网掩码  通过 ipconfig 命令来查看主机中的网络信息,可能有多组,每一组对应一个"网络接口"(网卡/虚拟网卡)

子网掩码一把都是 32 位整数,转为 2 进制左侧都是 1 右侧都是 0

三种特殊的 IP 地址

1.主机号全 0 (所有的比特位都是 0)

        这个 IP 就是特殊的 IP,表示该网段,不能把这个 IP 分配给某个具体的机器使用

2.主机号为 全 1 (所有的比特位都是1)

        这个 IP 也是特殊的 IP,表示该局域网的"广播IP",广播IP 的作用,往这个 IP 上发送数据,广播给改局域网中的所有设备(只能基于 UDP 使用,TCP 用不了)

广播 IP 和 微信群消息, 区分开

广播 IP :网络层, IP 协议支持的广播,只能是在当前局域网内进行广播 UDP

微信群消息: 是应用层实现的广播效果,不受限制,看你代码是怎么写的,本质上是你把消息发给服务器,服务器获取到所在的成员列表通过循环遍历,把刚才的消息一个一个的发送给所有的成员

广播 IP 的应用场景:手机投屏

点击投屏,显示出局域网内有哪些设备(基于广播 IP 实现)可以投屏,因为你电视的 IP 手机是不知道的

投屏软件在启动的时候就可以往局域网的广播 IP 发送一个数据包,局域网中大部分的设备都不会理会数据包(没有对应的投屏软件),但是你的电视有投屏软件,收到数据之后就可以做出响应,响应中告知手机 我的 IP 是啥,我能进行 xx 投屏

投屏的软件不是把手机上的画面传输到电视上(这种投屏也有)更多的是把要播放的视频的地址告诉电视,手机该干啥干啥,完全不影响

3.127.*

        环回 IP

        通过这个 IP 发送的数据, 还能通过这个 IP 收到,自己发,自己收,经常用到的是 127.0.0.1

上述基于子网掩码的网段划分方式,是现代的划分方式,在这以前还有其他的方式

上述功能,都是围绕 IP 协议的"地址管理"

接下来看一下"路由选择"(从起点到终点,路径是怎么规划的)

现在有地图导航,在以前是没有的

比如gaode地图这样的软件,导航的时候,能够获取到"全局信息",你在搜索的时候,会给你一个"最优解"

网络上的路由选择,虽然也是在"导航",由于每个路由器都无法知道整个网络的结构环境,只能知道自己和自己相邻的一些设备的情况,只能提供一个"较优解"

路由器的路由选择,"启发式" "探索式"的过程,这个过程就好比是,问路

你从地点 X 去往地点 Y(假设这时候还没有导航这样的东西)

1)你从地点 X 出来,问第一个人 A 他可能自己也不清楚具体的方向在哪?但是A知道 Y 在 X 的南边,让我坐几号线是往南边的

2)你上车后遇到其他人B,他告诉你你要在这号地铁的 xxx 地方要下车,然后在坐 xx 号公交车,坐到xx路口在下车

3)你到了这个地方下车后继续问C,然后他跟你说他知道,先向南 => 在向北 => 在向南 你就到达了 Y 地点

ABC 这几个路人,就相当于是"路由器"

你的 IP 数据报发给 A,A就会看 目的 IP 是否认识,路由器里就会维护一个数据结构"路由表"(目的 Ip的网络号)(路由表的生产是一个复杂的事情)

匹配路由器,如果匹配到了就说明的 IP 就是该路由器相邻的设备,直接转发就行了

如果没有匹配成功(目的 IP 不是路由器相邻的设备),给你一个默认的路线(下一跳 next hop) 下一跳对应的设备,往往就是更高层级的路由器

数据链路层

负责 两个相邻节点 之间的数据传输

最常见的 数据链路层协议

1.以太网(IEEE 802.3)

        通过网线/光纤 进行传输的网络

2.WIFI (IEEE.802.11)

        无线信号

"以太" => 物理学 迈克尔逊莫雷 实验  => 光速不变 

        之前把光理解成波,介质,真空中存在一个介质"以太"(计算机就把这个词拿过来了)

数据包报文格式(使用 帧)

IP 数据报的拆包组包,要不了 64 KB ,在数据链路层,长度就已经被限制住,需要进行拆包

目的地址:此处的"地址"是 6 个字节(2^32 * 2^16,非常大的数字(比 IPv6要小的多,但是比 IPv4还是大了不少)),不是 IP 地址 mac 地址(数据链路层中,也提出的地址体系,专注于解决两个相邻节点的数据转发)/物理地址

现在是可以做到每个设备都有唯一一个的 mac 地址的,通常是网卡出厂的时候就写死了(mac 地址也通常会作为一个机器的身份标识(有些程序会绑定设备))

mac 地址的本质工作,还是要进行 网络转发的

两个十六进制的数字,相当于 1 个字节,mac 地址的标识方式,通常是十六进制.两两一组.组和组之间通常使用 - 或者 : 来分割

举个例子

我在 A 要去 B出差

网络层,规划路线

1) A -> a -> b -> c -> d -> B

2)A -> a -> c -> d -> B

3)A -> a -> e -> f -> B

4)A ->a -> e -> g -> f -> B

数据链路层,具体的实施

源 IP A, 目的 IP B

源 mac A, 目的 IP B

到了 a

源 IP A, 目的 IP B

源 mac a, 目的 IP b

到了 b

源 IP A, 目的 IP B

源 mac b, 目的 IP c

到了 c

源 IP A, 目的 IP B

源 mac c, 目的 IP d

到了 d

源 IP A, 目的 IP B

源 mac d, 目的 IP B

这里的类型都是十六进制的

ARP 协议

ARP 协议准确的说,是横跨网络层和数据链路层的协议, ARP 不携带业务数据,是为了实现网络的转发(给数据链路层的转发)提供必要的支持的

网络转发的时候, A 给 B 发送一个数据, A 不光要知道 B 的地址,也需要知道 B 的 mac地址(尤其是 A 和 B 相邻的时候)

IP 协议,路由器中,存在一个路由器, IP 地址 -> 网络接口(WAN/LAN)关系数据链路层协议,交换机中,存在一个转发表 mac -> 具体的网口之间的关系

ARP 就是为了协助构造出这个转发表, ARP 能够更具 IP 地址,获取到对应设备的 mac 地址

ARP 协议的报文"周期性"触发(网络结构可能变化),ARP 广播给局域网中的所有设备,询问每个设备的 mac 地址,每个设备收到 ARP 请求之后,返回响应中就会包含对应 mac 地址的值

DNS 应用层协议,域名解析系统

网络上通过 IP 地址,描述一个设备的位置

32 位的数字 => 点分十进制 比较晦涩拗口,引入"域名",通过一串比较有意义的单词,表示一个 IP 地址

域名的一个好处在于,未来如果更换了机器(更换了 IP)只需要再DNS系统中重新设置一下域名和 IP 的关联关系就好了,对于用户来说是没有感知的

最早的 DNS 系统,通过 hosts 文件表示的,随着网络的发展,网站的数目越来越多了,每天都有新的网站上线,也有旧的网站消失,手动维护你本地的 hosts 文件就非常麻烦了,现在的 DNS 系统不在依赖 hosts 文件,而是通过一组 DNS 服务器来完成域名解析

DNS 服务器中;有11个根(大部分都是在美国),最初维护数据的 DNS 服务器 根服务器

每个国家/地区,都会架设自己的 DNS 服务器(里面的映射关系数据,都是从主 DNS 服务器同步来的,这样的服务器也称为"镜像服务器"),国内,各种运营商就会在各个地区,架设镜像服务器,用户访问的时候,直接就在就近的 DNS 服务器即可,不只是运营商,知名的互联网公司,也会维护 DNS 服务器

这个模型下,DNS 服务器就会收到海量的请求

思路一:访问某个网站的时候,不是每次访问都需要进行 DNS 访问,相邻的几次访问,域名和 IP 的映射关系是不会改变的,浏览器会对 域名解析的结果 进行缓存,引入的缓存,大幅度降低访问 DNS 服务器的频率

思路二:分布式系统

        引入更多的硬件资源

在日常生活中,经常见到,你附近的 DNS 服务器挂了,浏览器打开网站,打不开,但是不依赖域名(直接使用 IP 地址通信)的程序,就可以正常工作,比如 QQ

相关文章:

  • 北斗导航 | 基于MATLAB的卫星导航单点定位算法(卡尔曼滤波增强)
  • 对称加密和非对称加密
  • Python 数据分析10
  • 【Python 进阶系列】第4篇:初探 Python Pandas 数据分析的世界
  • 大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
  • 【60 Pandas+Pyecharts | 箱包订单数据分析可视化】
  • Spring Boot自动配置原理与实践
  • 一文掌握 Windows 文件传输:5 种命令行工具的原理、参数与示例
  • UR机器人解锁关节扭矩控制:利用英伟达Isaac Lab框架,推动装配自动化的Sim2Real迁移
  • electron-builder打包配置(应用名、安装包、图标、快捷方式、自定义文件关联启动等)
  • 全新RA2L2 MCU超低功耗、支持CAN及USB-C、拓展工业及便携式应用
  • 护城河尚浅,理想汽车驶入慢车道
  • torch 高维矩阵乘法分析,一文说透
  • Linux set 命令
  • Vue的双向绑定魔法:如何让数据与视图‘心有灵犀’?
  • Spring Boot 集成国内AI,包含文心一言、通义千问和讯飞星火平台实战教程
  • python学习打卡day52
  • 哈希表三种数据结构在leetcode中的使用情况分析
  • 前端给一行文字不设置宽度 ,不拆分 ,又能让某几个字在视觉下方居中显示
  • 打破语言壁垒!DHTMLX Gantt 与 Scheduler 文档正式上线中文等多语言版本!
  • tk网站免费/网站流量排名查询工具
  • html5网站建设思路/网络营销ppt案例
  • 做公司网站有什么需要注意的/广州现在有什么病毒感染
  • 大型网站开发方案/seo推广代理
  • 四川省工程建设信息官方网站/引流推广多少钱一个
  • ps做图 游戏下载网站有哪些/营销到底是干嘛的