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

相关文章:

  • WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!
  • ByteToMessageDecoder详解
  • 神经网络常见激活函数 13-Softplus函数
  • Linux4:线程
  • 7.16 Java基础 | 集合框架(上)
  • SM3算法工程中添加bouncycastle.bcprov.jdk15on库
  • 从函数调用到进程通信:Linux下的多语言协作实践
  • MySQL 8.0 OCP 1Z0-908 题目解析(27)
  • 解决“Windows 无法启动服务”问题指南
  • 论文导读--PQ3D:通过分段级分组实现多模态特征融合和 MTU3D:在线查询表示学习与动态空间记忆
  • C# 8.0 创建一个简单的控制台应用程序
  • 使用 CrewAI 进行股票分析:自动化投资决策的新途径
  • YAML 自动化用例中 GET vs POST 请求的参数写法差异
  • 剑指offer64_圆圈中最后剩下的数字
  • 分块(chunked) vs 滑动窗口(windowed)
  • 力扣面试150(31/150)
  • Python爬虫实战:研究PyYAML库相关技术
  • 工作第一步建立连接——ssh
  • STM32硬件I2C的注意事项
  • UniApp 多端人脸认证图片上传实现
  • Sketch 与 Figma
  • 基于 Python/PHP/Node.js 的淘宝 API 商品数据抓取开发教程
  • 个人笔记(linux/sort与uniq命令)
  • [硬件电路-28]:从简单到复杂:宇宙、芯片与虚拟世界的共通逻辑
  • 快速掌握 Kafka:从核心概念到生产级部署指南
  • 网络安全初级(XSS-labs 1-8)
  • 基于Canal实现MySQL数据库数据同步
  • 数字IC后端培训教程之数字后端项目典型项目案例解析
  • 端侧推理软件栈
  • 智慧农业新图景:物联网如何精准守护作物生长​