局域网的路由器&网卡

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 网卡 唯一的标志 MAC地址:14:21:S8:8B:44:89 昵称:TP-Link-4489 如何获取局域网IP? DHCP(动态主机配置协议) DHCP 服务器可以动态的分配地址。 1)网卡(TP-Link-4489)向局域网发送一个报文以获取自己在局域网中的IP地址。

网卡

唯一的标志 MAC地址:14:21:S8:8B:44:89 昵称:TP-Link-4489

如何获取局域网IP?

DHCP(动态主机配置协议)

DHCP 服务器可以动态的分配地址。

1)网卡(TP-Link-4489)向局域网发送一个报文以获取自己在局域网中的IP地址。

网卡工作在数据链路层, 必须得知道对方的MAC地址才能发信,如果不知道就对外广播, 那就是所有局域网内的电脑都会收到。

报文包括:

应用层的DHCP发现报文, 然后被一个UDP的报文封装,然后再被一个IP的数据报封装,然后再被以太网数据链路层的数据报封装。

 

通过网线发给了交换机。  交换机看到FF:FF:FF:FF:FF:FF, 立刻转发给了所有连到交换机的设备。

2)局域网里可能有多台DHCP服务器,每台服务器都会跟进MAC和端口进行回复,里面包含了分配给你的IP地址和DHCP服务器地址。

3)需要网卡(TP-Link-4489)选择一个DHCP服务器地址并进行回复确认分配的IP。

4)DHCP会返回一个确认消息,包括网关路由器的地址 , DNS服务器的地址,当然还有IP地址。

最终,网卡(TP-Link-4489)得到了:自己在局域网中的IP : 192.168.1.2,网关路由器:192.168.1.1,DNS服务器:202.152.219.74

如何访问外网?

最直接获取域名IP地址的方式:

发件人: 192.168.1.2    (网卡(TP-Link-4489))

收件人: 202.152.219.74   (DNS服务器)

内容:  给我www.baidu.com的IP地址 

存在的问题:

  1. 网卡是数据链路层的需要通过mac地址通信
  2. DNS服务器不在我们的局域网内,要把这个发给网关路由器(有一个与ISP网络相连的外网IP地址89.32.288.156),由他转给DNS服务器的。
  3. 网关路由器的MAC地址是什么呢?

ARP(地址解析协议)

通过广播查询一个IP地址对应的MAC地址。

收件人: FF:FF:FF:FF:FF:FF (同一子网内的所有电脑)

发件人: 14:21:S8: 8B:44:89  (网卡(TP-Link-4489))

内容:网关路由器(192.168.1.1), 给我你的MAC地址!

通过返回信息获取网关路由器的mac地址(28:91:S8:3A:44:55)并进行保存。

NAT(网络地址转换)

发给网关路由器查询域名对应的IP:

发件人: 14:21:S8: 8B:44:89  (网卡(TP-Link-4489))

收件人: 28:91:S8:3A:44:55   (网关路由器)

内容: DNS服务器(202.152.219.74)  给我www.baidu.com的IP地址

把数据链路层的封装去掉, 发现IP数据包中的目标地址是 202.152.219.74, 网关就知道这是要向外网发出请求了。
于是把IP数据包中的源地址192.168.1.2 替换成网关的外网地址  89.32.288.156。
创建一个新的端口号1029, 把TCP数据包中的源端口也替换掉, 数据包就变成了这个样子:

把源地址和源端口都替换了, 其实就是让外部的网络认为这是网关路由器发出的, 而局域网内的网卡对外是不可见的。

这就是网络地址转换,网关路由器需要保存一份NAT转换表,譬如LAN端192.168.1.2:1028-->202.152.219.74:1029

当回复到达路由器时去掉数据链路层的封装,发现TCP和IP数据报中包含这样的信息:目的地IP : 202.152.219.74 , 端口 1029 ,根据NAT转换表,把数据报中的IP地址和端口号改了发回给网卡(TP-Link-4489)。

UPnP

网卡主动要求网关路由器建立一个NAT映射 (192.168.1.2 : 4096) <-> (61.52.247.112: 3001)。 

此时此网关的某个端口就是某块网卡专用了,此网卡的此端口就可以成为网卡与外界交流的专线。

 

目录
相关文章
|
8月前
|
移动开发 JavaScript 前端开发
精通服务器推送事件(SSE)与 Python 和 Go 实现实时数据流 🚀
服务器推送事件(SSE)是HTML5规范的一部分,允许服务器通过HTTP向客户端实时推送更新。相比WebSocket,SSE更轻量、简单,适合单向通信场景,如实时股票更新或聊天消息。它基于HTTP协议,使用`EventSource` API实现客户端监听,支持自动重连和事件追踪。虽然存在单向通信与连接数限制,但其高效性使其成为许多轻量级实时应用的理想选择。文中提供了Python和Go语言的服务器实现示例,以及HTML/JavaScript的客户端代码,帮助开发者快速集成SSE功能,提升用户体验。
|
9月前
|
前端开发 Java 数据库连接
Spring框架初识
Spring 是一个分层的轻量级开源框架,核心功能包括控制反转(IOC)和面向切面编程(AOP)。主要模块有核心容器、Spring 上下文、AOP、DAO、ORM、Web 模块和 MVC 框架。它通过 IOC 将配置与代码分离,简化开发;AOP 提供了声明性事务管理等增强功能。
160 21
Spring框架初识
|
人工智能 监控 物联网
深度探索人工智能与物联网的融合:构建未来智能生态系统###
在当今这个数据驱动的时代,人工智能(AI)与物联网(IoT)的深度融合正引领着一场前所未有的技术革命。本文旨在深入剖析这一融合背后的技术原理、探讨其在不同领域的应用实例及面临的挑战与机遇,为读者描绘一幅关于未来智能生态系统的宏伟蓝图。通过技术创新的视角,我们不仅揭示了AI与IoT结合的强大潜力,也展望了它们如何共同塑造一个更加高效、可持续且互联的世界。 ###
|
8月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
241 11
|
JSON 文字识别 小程序
UNIAPP小程序OCR识别
UNIAPP小程序OCR识别
585 0
UNIAPP小程序OCR识别
|
存储 弹性计算 数据处理
【云故事探索】NO.6:云端生物,自服务用云的溯源精微
简介: 在北京溯源精微科技有限公司的故事里,云计算成为了驱动生物科技革新的核心力量。自2011年成立以来,溯源精微深耕生物信息分析领域,利用自主研发的BinBash科学计算平台及阿里云的弹性计算与存储解决方案,成功克服了数据处理上的瓶颈。通过与阿里云的合作,公司实现了大规模数据的高效处理,将原本耗时数月的任务缩短至几天乃至几小时。此外,灵活的资源调配能力和按需付费模式极大地降低了计算成本,使溯源精微得以提供精准高效的基因组分析服务。展望未来,溯源精微将继续深化与阿里云的合作,推动生物科技领域智能化发展,携手行业伙伴共创辉煌。
|
人工智能 算法
众店模式:构建消费生态圈的创新商业模式
该平台结合线上自营商城与品牌商城,以及线下门店联盟,形成跨行业资源共享体系,提供无缝购物体验。绿色积分模式下,消费者与商家均可通过消费获得积分及消费券,积分可在多周期内增值,转化为高价值抵用券,甚至实现免单,有效促进循环消费。平台还通过强大的招商推广机制和多元化的盈利模式,提升用户粘性和商家盈利能力,成功案例显示其在降低获客成本、提升留存率和复购率方面成效显著。
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
645 3
|
JavaScript
Vue学习之--------深入理解Vuex之getters、mapState、mapGetters(2022/9/3)
这篇文章深入探讨了Vuex中的getters概念和用法,以及如何通过mapState、mapGetters、mapActions和mapMutations四个辅助函数简化组件中的Vuex状态访问和操作,通过实际项目案例展示了这些概念的应用和效果。
|
消息中间件 负载均衡 算法
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
588 2