美文网首页每日更100字
编程 || 网络规划

编程 || 网络规划

作者: 快语 | 来源:发表于2022-04-12 17:24 被阅读0次

这是系列文章第二篇。

上一篇重点说了解决问题和完整理解。其中解决问题是一个需要在日常工作中时时联系的能力。我亲眼见到一些资深级别的同事,不论是业务或是技术,在遇到问题是都会首先产生对抗的情绪,觉得问题是个麻烦。
实际上,问题是价值,我们遇到问题,如果你能冲在最前面解决问题,那你就是有价值的人。长此以往,能力会越来越强,薪资也会越来越高。
我的文章和其他的技术教程不太一样,一是因原本每个人知识体系就不一样,二是希望以一种更通俗的方式让你理解。
但是有一点可放心,我带领团队,实实在在地为一个估值过亿的科技公司搭建了所有的系统,并且目前为止运转良好。
今天,我们要解决的问题是网络规划。

回顾

我们先来回顾一下之前的清单。

技术名 场景 使用频率
域名 网站名
IP 主机标识
DNS 域名和IP的映射
负载均衡 将请求分流
路由器 外网与内网的中转站
交换机 内网与内网的中转站
服务器 一台电脑
数据库 专门放数据的工具
业务应用程序 专门计算的工具
缓存服务器 专门放热点数据的工具
消息队列 先把数据丢进去,排队等着处理的工具
文件存储 存文件的工具
搜索引擎 类似数据库,但是能支持模糊搜索的工具
配置中心 专门放配置信息的工具
邮件服务 发邮件的工具
短信服务 发短信的工具
Jenkins 帮你串命令自动化发布的工具
Java 你的编程语言

我们可以看到,最上面的部分都是与网络相关的。并且使用频率也相对不高。确实这部分内容通常只需要专人首次去处理,在之后的工作中相对就不会有变化。但为什么第一个讲,因为是从完整搭建一个项目的角度来说,这些就是第一步动作。

目标

网络规划是个多目标问题。它的目标包含又不限于以下这些:

  • 首先,我们的应用要被外部访问。
  • 区分不同的环境,比如测试、预发、生产等。
  • 内网和外网的隔离,只保证一个入口与外网交互。
  • 固定IP,可供上下游定黑白名单。
  • 安全性,比如自己定义黑白名单,比如SSL证书。

如何让外部访问

为了让外部访问,我们要理解几个概念,URL,IP,域名,DNS。

URL

我们的网址就是URL。实际上,它的全程是统一资源定位符,网络上的任何资源,都可以通过URL去标识。那么,你的网址可以用URL标识,你在这个网站里面的每一个图片、每一个按钮,背后都会对应一个URL。
对于URL,目前做到理解即可。
相关的概念还包括URI和URN,感兴趣可以扩展。

IP

我们可以看到192.168.1.1,这几个数字。这些数字就像你家的门牌号,它会指向你的主机。一个通常会用到的概念是“外网IP”和“内网IP”,这也非常好理解。外网IP还是你家的门牌号,内网IP则是进你家后,你自己房间的门牌号。比如你住在次卧,那么“次卧”就是你的内网IP。
现在,打开你的终端,输入一个命令:ping www.baidu.com。于是你会看到百度的IP地址,你复制它到浏览器地址栏,就可以通过它访问到百度。
对于IP,目前做到理解即可。

域名

域名其实更容易理解,www.baidu.com就是域名。它是我们通常理解的标识网站的名称,相比IP它的特点就是有意义,从而更通俗好记。计算机的一个特点是,它连接了人和机器,域名是给人看的,IP是给机器看的。同理,文档是给人看的,高级编程语言是给程序员看的,汇编语言机器语言是给机器看的。
对于域名,我们不仅要理解,还要会申请。事实上域名的申请真不太容易,我司曾为了一个好的域名花了1w元的费用,而一个全新的域名,其实只有几十元/年即可。有人专门就通过抢注域名赚钱。无论是阿里云、腾讯云,都有代理购买域名的服务。

DNS

有了域名,IP,URL,那么它们是什么关系呢?
URL起到定位作用,它可以借助域名来表示,也可以借助IP来表示。这里说是借助,因为域名或IP,是URL的组成部分,一个完整的URL,除了能定位到网站,同样需要定位到这个网站的某个页面,某个按钮,比如www.baidu.com/help?param=a。这是我虚构的一个URL,可以看到域名是它的组成,此外还有更丰富的信息表达其他内容,这个我们后续再看。
域名和IP的关系,就相当于小明和小兰说过一次自家的门牌号(IP),之后再沟通时,小明说“在我家(域名)那儿”,小兰就知道是哪儿了。所以我们看到,域名,核心是“名”,IP,核心是“号”。那么DNS做了什么?DNS记录下所有“名”和“号”的关系,它是个映射表。
DNS还是个云服务,它是全互联网共享的一个服务,我们自己搭建网站的话,只需要找一个DNS厂商,在它加的网站上去配置域名和IP即可。阿里云、腾讯云都云服务,都可以做到。
对于DNS,我们首先要理解,其次要找到地方配置,即可。

备案

在国内搭建网站,都需要对域名进行备案,相关服务参考备案教程即可,这里不存在技术问题。

如何区分不同环境

一个正式的运营系统,必然会区分测试和生产,甚至更多的环境。环境和环境之前,要有网络隔离。

VPC

VPC全称是Virtual Private Cloud,可以认为它就是一个局域网。VPC下有多台交换机,连通不同的主机。通过路由器和其他的VPC以及公网进行交互。
VPC-路由器-交换机的关系,可参考下图。

路由器

路由器,它会将两个网络进行连通。比如,对外对接公网,对内对接交换机。和交换机是1对n的关系。

交换机

交换机下,会关联具体的主机,包括服务器、数据库等。当然数据库也是部署在某个服务器之上。
这里有个tips,我们看到交换器可以在不同的可用区,可用区是云服务对于同城不同机房的概念,A可用区可能A地,B可用区可能在B地。但是AB两区同属一个VPC的话,是可以算作内网的。这是云服务的一个特点。那么,我们就可以利用这个特点,针对自己的集群,做一个容灾的部署。

三者关系

当然,路由器也可以起到交换器的作用。不过,为了减少我们的心智负担,我们统一使用下图作为我们的最佳实践。vpc下是路由器,路由器下是交换机,交换机下是主机。vpc是个大屋子,路由器是外交官,交换机是内勤官。


image.png

环境隔离

如何做测试、生产的隔离,有了上图就非常容易,就是通过创建两个VPC即可。
另外,每个VPC会对应一个IP网段,每个交换机会对应VPC网段下的一个IP子网段,每个主机会对应一个具体IP。即VPC-交换机-主机,层层细化。
这里留一个问题给你们。为什么路由器出现在这个结构里,但是不对应IP?

网段

刚才提到了网段,又是一个新的名词。其实这也非常好理解。IP地址的理论最小值是0.0.0.0,理论最大值是255.255.255.255。其实IP地址就是4个2的8次方组成的,最高能表达2的32次方个地址,当然,现实可用的公网IP表达不了那么多,所以有了IPV6的概念,这个我们本次不细说。网段就是110归A,1120归B,不管用二进制还是十进制,都是数字,都是号。门牌号110的商铺归王家,门牌号1120的商铺归苏家,这就是网段。有一些黑话,比如某IP和另一个IP不是同一个网段的,其实就暗含着它们是部署于同一个VPC,网络做了隔离的。当然,这不是很严谨。
综上,我们就可以做好一个网络隔离。当然,还有非常多实践的内容。其实原理是一回事,原理浩如烟海,但是实践过程中,我们务必“先完成,再完美”,而完美的过程,则是由问题去指引。这样才能高效地做成事情。

其他概念

以上是搭建一个网络的最小知识,当然,为了做到更完整的功能,还需要不止这些。

NAT网关

它可以让你的VPC以一个固定IP,访问外网。当然,同样也存在不同的实践。这是一种方式。

负载均衡

如果我们搭建的是集群环境,那么我们就需要负载均衡。外部的访问,先到负载均衡,再到VPC内的具体主机。起到一个分流的效果。

ssl证书

这是你安全的保证。加密、加签。加密是让信息的传输是密文的形式,他人无法拦截,加签,是保证调用者是调用者本人。关于这些内容,我们将来会细讲。

黑白名单

黑名单就是你确定这些人不能访问你。白名单就是你确定可以访问。这是互为镜像的策略。对于网络安全严格的环境,自然是全黑开白,反之则全白开黑。有不同的方式可以做到,比如负载均衡、比如防火墙、比如安全组等。

安全监控

你要时时监控网络流量,就需要打好相应的日志。如果你购买的是云服务,就会有相应的服务提供。这也是云服务的好处。

总结

以上,简单介绍了网络规划需要的基本知识。其实每一处都可以细细展开。但从实践可用的角度,你不可能了解了所有的理论,再去动手。理论实践是交错前行,你的理论只要足够支撑你的实践,即可。毕竟,你还有非常多其他的事情要做。

相关文章

  • 编程 || 网络规划

    这是系列文章第二篇。 上一篇重点说了解决问题和完整理解。其中解决问题是一个需要在日常工作中时时联系的能力。我亲眼见...

  • 网络编程学习路线规划

    为了更好帮助到计划深入、全面学习网络编程的童鞋们,这里简单列举一份学习地图。 1.网络协议 tcp、ip、udp协...

  • Android 网络编程 目录

    Android 网络编程 目录 Android 网络编程1 Http协议Android 网络编程2 Okhttp缓...

  • Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊...

  • iOS关于HTTP协议和网络编程

    1.网络编程 1>什么是网络编程? 网络编程,是我们iOS程序开发者针对网络模块进行得代码编程,是作为一个资深开发...

  • 网络编程

    网络编程 网络编程: 网络编程主要用于解决计算机与计算机(手机、平板..)之间的数据传输问题。 网络编程: 不需要...

  • 网络基本了解

    网络基础 问题:为什么要学习网络编程?(1)网络编程是一种实时更新应用数据的常用手段(2)网络编程是开发优秀网络应...

  • Android应用开发:网络编程2

    网络编程 Java基础:网络编程 Uri、URL、UriMatcher、ContentUris详解 Android...

  • Http协议

    网络编程 Java基础:网络编程 Uri、URL、UriMatcher、ContentUris详解 Android...

  • 网络编程,TCP,UDP

    day26笔记【网络编程,TCP,UDP】 day26授课目录: 1_网络编程(网络编程概述)(了解) A:计算机...

网友评论

    本文标题:编程 || 网络规划

    本文链接:https://www.haomeiwen.com/subject/nkcnsrtx.html