网络通信IP细节

目录

1.通信的NAT技术

2.代理服务器

3.内网穿透和内网打洞


1.通信的NAT技术

        NAT技术产生的背景是我们为了解决IPV4不够用的问题,NAT在通信的时候可以对IP将私网IP转化为公网IP,全局IP要求唯一,但是私人IP不是唯一的。

将报文发给路由器进行转发的时候,,路由器有一张NATP表,记录了IP的替换情况,比如在一个局域网内我的客户端A要去访问我们的服务器,它就会将报文交给路由器,路由器将SRC转化为它的公网IP,再把这个报文交给我们的服务器,服务器往回发的时候DST就是运营商路由器的公网IP和端口,然后路由器收到我们的服务器的应答在路由器内取查它的NATP表,IP和端口全部对上,进行跳跃,接下来的就是局域网内进行转发的工作了。

我们一个局域网内可能同时有多台主机要去访问同一个服务器和端口,服务器返回的时候SRC都是相同的,它怎么把报文精准送达的呢?答案就是NATP表,每个路由器在对该局域网内的报文进行转发的时候都会构建一一对应的映射表,我们的运营商路由器的公网IP是全球唯一的,加上不同的端口,我们的这个IP+端口就是全球唯一的!

当我们把数据发送给运用商的路由器,它就会在它的内部构建一一对应的映射关系,为我们的私人IP分配一个端口,如果端口冲突,就会自动分配一个端口,拿着这个IP+端口去访问服务器就可以了。

所以如果我们的私人IP不向公网发请求的话,公网是无法随意访问我们的私人IP的,它没有NAPT映射表就找不到我们对应的主机,数据自然无法传输。

但是内网可以访问公网,因为在发送的过程中在路由器会建立NAPT表!返回的时候查NAPT表查到是哪个主机发的请求,再把请求返回给这个主机,我们就完成了内网对公网的访问。

所以当我们聊微信的时候,你必须先登录微信,对方也登录微信,才可以进行聊天,不就是因为我们的公网无法直接访问私人IP吗?需要内网IP先向公网发送数据,公网才知道你这个主机在哪里?才好给你进行消息的转发。

2.代理服务器

        我们校园网上网需要认证,认证是什么?不就是申请一个私人IP吗?

        这样我们访问数据客户端要先把请求交给校园网的机房,然后校园网构建应答,去互联网去发送请求,当请求返回来的时候再返回给对应的客户端。

        代理服务器有缓存查找和内容过滤的功能,我们可以把一些常用的资源缓存在本地,提高访问的效率,内容过滤就是当一些请求含有恶意网站的时候,不让它响应,直接丢掉。

也可以进行访问控制,比如不让你看腾讯视频,直接把腾讯视频的请求识别拦截,直接干掉,就无法访问这个网站了。

具体的应用是:

        上面的服务器是我们的正向代理,是客户端把请求全部交给服务器,让服务器统一去访问互联网。

        反向代理呢?反向代理就是,我们公司有很多服务器,然后为了统一调配,我们有一个前置Web服务器,服务器的响应全部交给Web服务器,然后有Web服务器再把响应返回给客户端。

反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先
会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web
服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际
与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。
有了反向代理服务器,可以实现负载均衡,实现高并发,还可以隐藏服务器真正的IP地址,还可以把一些常常访问的数据缓存在服务器里,加速访问,还可以进行内容过滤和重写。

总而言之,正向代理是代表客户端去和服务器。反向代理是代表服务器去和客户端。

我们的CDN就是利用了反向代理

由于我们的前端代码是公开的,也有对应的库和框架,但是如果每一份前端代码都带一个库和框架会浪费资源,所以把框架和库放在一个服务器上,如果需要就直接向服务器发起请求。

CDN背后是一个服务器集群,我只需要访问CDN,它帮助我和它连接的服务器进行交互。

3.内网穿透和内网打洞

        内网穿透就是把本地的某个端口给到云服务器,然后映射一个端口比如8080,然后我另一台主机如果想要时刻访问这个主机,我拿着映射的端口8080就可以访问到我们的本地主机了。

        它主要运用于让我们的能直接从公网访问到内网。

        而内网打洞呢,是利用NAT的特性,当我们把自己的报文发到同一台服务器,然后服务器把它们的报文互相交换,各自拿到对端的IP和端口,这样我们下一次进行访问的话就不用通过服务器了,直接进行通信了。

        本质就是互相拿到对方的入口路由器的IP和端口。

        我们数据返回的时候也因为拿到了我们数据来的时候入口路由器的公网IP和端口,根据NAT技术进行转发才进行应答的。

        我们之所以无法访问谷歌的网站是因为我们将我们的报文给我们的运营商的路由器它会对我们的链接做域名解析,发现你访问的是黑名单的连接会直接丢掉,我们为了学习了解一下原理,报文在第一步就被干掉了,连公网都没进去就没了,所以我们需要对我们的报文进行加密,把我们得分请求放在加密的数据里面,然后把它交给一个既可以访问国内的服务器,也可以访问国外的服务器的地区,比如香港,把报文发给香港,然后香港去访问外网,然后再把应答加密,发回给我们的主机,主机再对报文进行解密。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95373.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内真实的交换机、路由器和分组情况

一、未考虑拥挤情况理想状态的网络通信 前面我对骨干网: 宜春城区SDH网图分析-CSDN博客 数据链路层MAC传输: 无线通信网卡底层原理(Inter Wi-Fi AX201)_ax201ngw是cnvio转pci-e-CSDN博客 物理层、数据链路层、网络层及传输层…

atomic常用类方法

Java中的java.util.concurrent.atomic包提供了多种原子操作工具类,以下是核心类及其方法:‌1. AtomicBoolean‌‌方法‌:get():获取当前值set(boolean newValue):强制设置值compareAndSet(boolean expect, boolean upd…

算法题打卡力扣第3题:无重复字符的最长子串(mid)

文章目录题目描述解法一:暴力解解法二:滑动窗口题目描述 解法一:暴力解 遍历每一个可能的子串,然后逐一判断每个子串中是否有重复字符。 具体步骤: 使用两层嵌套循环来生成所有子串的起止位置: 外层循环 i…

HTML5 简介和基础骨架

一、HTML5 简介HTML5 是 HTML(超文本标记语言)的第五个主要版本,于 2014 年 10 月由 W3C(万维网联盟)正式发布。它不仅是对 HTML4.01 和 XHTML 的升级,更是一套完整的 Web 技术标准,包含了新的标…

.NET技术深度解析:现代企业级开发指南

每日激励: “不要一直责怪过去的自己,他曾经站在雾里也很迷茫” 🌟 Hello,我是蒋星熠Jaxonic! 🌈 在浩瀚无垠的技术宇宙中,我是一名执着的星际旅人,用代码绘制探索的轨迹。 &#x1…

苹果手机文本转音频,自行制作背诵素材

当你在学习一段专业内容或者背诵重要知识点时,是不是有时会觉得眼睛看久了疲惫,而且记忆效果也不太理想呢?利用手头的苹果手机或iPad,你可以轻松将文本内容生成音频文件,然后随时随地反复听,这对于备考人士…

电子电子技术知识------MOSFET管

电子电子技术知识------MOSFET管前言一、结构与符号二、工作原理1.小功率MOSFET(横向导电)2.电力MOS管三、基本特性总结前言 MOSFET是电力场效应晶体管的英文简写,又称功率mos管,mos管 一、结构与符号 二、工作原理 1.小功率M…

仿真波导中超短脉冲传输中的各种非线性效应所产生的超连续谱

在波导中,超短脉冲传输时会受到各种非线性效应的影响,从而产生超连续谱。这些非线性效应包括自相位调制(SPM)、交叉相位调制(XPM)、四波混频(FWM)等。基于MATLAB的仿真程序&#xff…

docker-compose的使用

目录 1-查看容器 2-查看docker镜像 3-运行两个容器 4-进入idea 编写docker-compose文件中的内容 5-编写配置文件 6-运行 7-docker-compose中的一些命令 启动服务 关闭服务 查看正在运行的容器 查看日志 重构新的服务 指令docker-compose 文件名 停止已运行的服务 启动 重启 1-查…

搭建分布式Hadoop集群[2025] 实战笔记

文章目录 一、实战目标 二、集群规划 1. 集群拓扑结构 2. 角色分配 说明: 三、环境准备 1. 修改 SSH 端口(安全加固) 操作步骤(所有节点执行): 2. FinalShell 连接配置 3. 防火墙配置 启动并配置 firewalld: 关闭并禁用防火墙(生产环境建议精细配置,测试环境可关闭):…

【自记录】Ubuntu20.04下Python自编译

因为需要新的Python版本,但是我们不希望修改系统原生的Python版本避免某些系统应用无法启动,因此自建一个干净的路径引入Python。 1.编译 以下在aarch64下测试,x64下可能有差异 必须把相关的devel包安装完毕,否则python可能缺功能…

Linux - 进程切换

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录进…

机器算法(五)模型选择与调优

一 交叉验证1 保留交叉验证HoldOutholdOut Cross-validation(Train-Test Split)在这种交叉验证技术中,整个技术集被随机划分为训练集和验证集。根据经验法则,整个数据集的近70%被用作训练集,其余30%被用作验证集,也就是最常使用的…

Ubuntu 服务器实战:Docker 部署 Nextcloud+ZeroTier,打造可远程访问的个人云

本次部署基于 Ubuntu 系统(桌面版 / Server 版通用,核心操作一致),硬件配置参考如下,低配置主机可顺畅运行: ubuntu服务器配置如下 硬件类型具体型号/参数CPUIntel Core i3-6100T内存条8GB(DD…

移动硬盘删除东西后,没有释放空间

请按照以下步骤,从最简单、最常见的原因开始排查和解决:主要原因和解决方案1. 检查操作系统回收站 (最常见原因!)这是最容易被忽略的一点。当您直接在外接移动硬盘上删除文件时,文件并不会直接消失,而是被移到了该移动…

spring boot驴友结伴游网站的设计与实现(代码+数据库+LW)

摘要 本文介绍了基于Spring Boot框架开发的驴友结伴游网站的设计与实现。该网站旨在为旅行爱好者提供一个便捷的平台,使他们能够轻松地寻找伙伴、预定酒店、参与活动以及分享旅行经历。系统主要分为两大模块:用户模块和管理员模块。用户可以通过注册账号…

人机之间的强交互与弱交互

人机交互不是简单的人机,其本质是人机环境系统的交互。在这个系统中,人和机器不是孤立的存在,而是在特定环境下相互影响、相互作用的一部分。人机之间的强交互与弱交互可以从以下几个方面来理解:1、人机强交互通常是指人与机器之间…

OpenCV 基础知识总结

学习网站 https://zhuanlan.zhihu.com/p/483604320 命名空间 using namespace cv; Mat 作用 创建图像(矩阵) 格式 Mat image; //创建一个空图像image,大小为0 Mat image(100,100,CV_8U); //指定矩阵大小(矩阵行数/列数&#xff09…

C#基础(⑦user32.dll)

我们来详细学习如何使用 user32.dll,它是 Windows 系统中负责用户界面交互的核心 DLL,包含窗口管理、消息处理、键盘鼠标输入等功能。下面从基础到进阶,一步一步教你调用其中的常用函数。在 C# 中调用 user32.dll 需要使用 DllImport 特性&am…

Markdown格式.md文件的编辑预览使用

推荐工具Visual Studio Code (VS Code) - 强烈推荐特点:微软出品,免费、开源、跨平台(Windows, macOS, Linux)。拥有海量插件市场。编辑体验:安装 Markdown All in One 等插件后,可以获得语法高亮、实时预览…