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

实训十一——网络通信原理

补充

如何解决IPv4地址不足的问题?

使用专用的IPv4地址范围(如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)并通过NAT转换与外部网络通信,能有效节约公网IPv4地址。

根据RFC 1918的定义,以下是保留的私有IPv4地址范围:

  1. 10.0.0.0 到 10.255.255.255 (10.0.0.0/8)

  2. 172.16.0.0 到 172.31.255.255 (172.16.0.0/12)

  3. 192.168.0.0 到 192.168.255.255 (192.168.0.0/16)

一、对等网络通信原理

公有——公有,私有——私有

 

1.电脑A封装数据 

  • Sport:10000以上的随机端口(临时借用)
  • Dport:80(假设)
  • SIP:A(已知)
  • DIP:B(局域网:查询或访问)(公网:DNS)
  • SMAC:A(固定在网卡的ROM中)
  • DMAC:R1-1(网关IP地址)(ARP协议)

注:MAC地址仅限局域网内通信,没有办法跨网段,所以目标MAC是R1-1口,因为A和B不在同一个网段,所以A会选择将数据发送给路由器。

       而想要找到路由器,就需要路由器的IP地址,这个IP地址就是我们通常所配置的网关,我们根据网关访问路由器,又通过ARP协议找到R1-1口的MAC地址。

2.流程

  1. 电脑A发送数据到交换机,交换机查看自身MAC地址表,发现目标MAC对应2接口(未找到目标MAC就泛洪),就从2接口发出,到达路由器R1的1口
  2. 路由器R1接收到数据,丢弃MAC包,查看IP地址,通过检查自身路由表,发现目标IP需要经过2口,到达路由器R2的1口,所以将数据重新封装MAC包
  3. 重新封装的MAC包中,SMAC是R1-2口,DMAC是R2-1口,因为两口处于同一个网段,所以路由器R1可以通过ARP请求拿到R2-1口的MAC地址,正常通信
  4. R2接收到数据后丢弃MAC包,查看自身路由表,发现目标网段经过R2-2口后,将数据重新封装MAC,SMAC是R2-2口的MAC,DMAC是B的MAC(ARP请求)
  5. R2将重新封装好的数据通过2口传递给交换机S2,S2检查自身MAC地址表,找到2接口对应B的MAC地址后,直接将数据发送给B,B收到消息后应答,原路返回。

3.网关

  • 用于让局域网内所有电脑能够跨网段通信
  • 网关首先是一个路由器,还是默认路由 

非对等通信原理

私有——>公网

拓扑图

电脑A和电脑B——交换机——路由器——公网

1.适不适合对等通信网络?

不适合。因为私有IP可重复,私有网段可以访问公网,但公网找不到私有IP

2.NAT功能(网络地址转换)(PAT)

  • NAT是解决IPv4地址不足问题的一项重要技术,通过转换私有IP地址和公网IP地址之间的映射,使得多个设备能够共享一个公网IP地址,实现与互联网的通信
  • 基本工作原理:在数据包从内部网络发送到外部网络(如互联网)时,将私有IP地址转换为公网IP地址

路由器中的NAT表

真SIP真DIP改SIP改DIP端口
1.3(假设)百度公网IP百度10001
1.2(假设)百度公网IP百度10002

注:PAT是端口地址转换,相较于其他的NAT类型更加实用,所以这里只了解PAT技术 ,如果内网多台电脑访问同一目标IP,响应数据可通过端口返回对应客户端。

问题

1.NAT网络是单向的吗?

是。因为私有IP可重复,外网无法正确访问内网中固定的某一台主机。

2.NAT网络一定是单向的吗?

不一定。有网络穿透技术。

        (1)网络穿透技术(ssh隧道或Windows的端口映射)(VPN)

        条件:对外路由拥有以上功能;对外IP地址,必须是公网IP地址

        (2)中转服务器,进入NAT网络(QQ远程协助,花生壳,向日葵)

3.NAT网络中的虚拟机,为什么能访问公网?到底是否可以和局域网通信?

可以访问公网,可以和局域网通信。

        (1)虚拟机把真实机当成了NAT网关路由器,所以虚拟机对外访问的时候被包装成了真实机的IP,真实机再访问外网又被包装成了路由器上的公网IP,可以互通。

        (2)NAT网络允许多次包装,跟局域网通信也是一样,被包装成了真实机的IP。 

http://www.dtcms.com/a/282017.html

相关文章:

  • 【Java】【力扣】94.二叉树的中序遍历
  • 通过 Docker 安装 MySQL
  • 手撕Spring底层系列之:IOC、AOP
  • Web前端性能优化原理与方法
  • 力扣面试150(31/150)
  • React之旅-09 useMemo,优化计算性能的利器
  • Python设计模式深度解析:建造者模式(Builder Pattern)完全指南
  • 浅析BLE/MQTT协议的区别
  • React 源码7:Lane、React和schedule优先级转换
  • Ansible 查看PostgreSQL的版本
  • beautiful-react-hooks库——入门实践常用hook详解
  • React Hooks 数据请求库——SWR使用详解
  • 为来时路,OCM拿证学习和考试
  • 产品经理笔试考试回忆集(2025湖南某国企)
  • 消息中间件(Kafka VS RocketMQ)
  • 每天一个前端小知识 Day 33 - 虚拟列表与长列表性能优化实践(Virtual Scroll)
  • 短剧App/小程序/H5多端开发全流程解析:从架构设计到性能优化
  • WPF 加载和显示 GIF 图片的完整指南
  • 借助AI学习开源代码git0.7之编译和使用
  • Gradle vs Maven:构建工具世纪对决 —— 像乐高积木与标准模型之间的选择艺术
  • SQL中对字符串字段模糊查询(LIKE)的索引命中情况
  • Git问题排查与故障解决详解
  • C++---emplace_back与push_back
  • 工业网络协议桥接设计指南:从LIN到CAN/RS-232的毫秒级互通方案
  • Adobe illustrator、klayout绘制光刻图及其尺寸映射
  • docker的搭建
  • 微信小程序141~150
  • 控制Vue对话框显示隐藏
  • 实例操作:基于 PipeLine 实现 JAVA项目集成 SonarQube代码检测通知 Jenkins
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat