当前位置: 首页 > 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.lryc.cn/news/589823.html

相关文章:

  • 震坤行获取商品SKU操作详解
  • LeetCode|Day15|125. 验证回文串|Python刷题笔记
  • C语言基础笔记——位操作
  • 虚幻引擎5 GAS开发俯视角RPG游戏 #06-7:无限游戏效果
  • 使用EF Core修改数据:Update方法与SaveChanges的深度解析
  • 前端性能追踪工具:用户体验的毫秒战争
  • Kiro:亚马逊云发布,革命性AI编程工具!以“规范驱动开发“重塑软件构建范式!
  • es启动问题解决
  • Java数据结构第二十五期:红黑树传奇,当二叉树穿上 “红黑铠甲” 应对失衡挑战
  • 树莓派系统安装
  • GENERALIST REWARD MODELS: FOUND INSIDE LARGELANGUAGE MODELS
  • Java对象的比较
  • 【ArcGISPro】修改conda虚拟安装包路径
  • C++ 计数排序、归并排序、快速排序
  • 图机器学习(10)——监督学习中的图神经网络
  • 【AI智能体】Dify 基于知识库搭建智能客服问答应用详解
  • AdsPower 功能详解 | 应用中心使用指南:插件统一管理更高效、更安全!
  • 医疗AI“全栈原生态“系统设计路径分析
  • Win11专业工作站版安装配置要求
  • 力扣每日一题--2025.7.16
  • MAC 苹果版Adobe Photoshop 2019下载及保姆级安装教程!!
  • 第六章 OBProxy 路由与使用运维
  • 【基于PaddlePaddle训练的车牌识别系统】
  • http协议学习-1
  • vue的provide和inject
  • 基于 Docker 环境的 JupyterHub 详细部署手册
  • 论文导读--PQ3D:通过分段级分组实现多模态特征融合和 MTU3D:在线查询表示学习与动态空间记忆
  • cell2location复现
  • xss-labs练习
  • Android-EDLA【CTS】CtsTetheringTest存在fail