在这个世界上有俩种人,一种是天天趴在网上,跟计算机网络亲密接触的人,另一种是天外飞仙,不食人间烟火,自然也不使用互联网的人😀。
所以,无论你是互联网世界的新用户,或者,你已经投身互联网工作很长时间了,亦或是你每天喜欢使用计算机和网络的网民,你都应该了解基本的网络知识,特别是计算机网络。
如果你维护过服务器,或者是一个服务端的开发者,你了解远程的用户是如何连接到你的服务器或者访问到你的服务的吗?
发现大部分人的回答是模糊的,有的根本不明就理,所以,本文就尽可能多的来聊一聊,有关这类计算机网络与网络组件的基本知识。
我们先来给计算机网络下个定义:
计算机网络可以被定义为,借助于数据传输介质(例如电缆、光纤等),连接贯穿世界各地的计算机,并交换网络数据包。
这个图中包含了基本的网络组成结构,和常见的网络设施,以及一些网络术语,例如:因特网Internet、互联网服务提供商ISPs、路由器Router等,我们接下来,看一下这些组件是如何工作的,以及之间的交互关系。
计算机网络常用术语
网络节点
节点在计算机网络中的意思是各种计算设备,例如个人PC、移动手机、平板电脑、服务器等等,可用通过网络与类似的设备进行数据包的交换。
互联网协议
任何沟通都需要一致的沟通基础,我们通常称为 协议,例如人类沟通的协议,包括各种地方语言、手语、表情等,都是需要事先约定好的规则。
而互联网是一个远距离传输信息的协议,在传输之前,需要先知道对方的位置。
比如,你考虑在你女朋友过生日的时候,送她一份礼物,你需要先知道把礼物送到哪里,她的家庭或工作地址。
如何给网络节点设置地址呢?
任何技术都不是凭空产生的,必须踩着前人的肩膀,参考现有技术的启发,演变而来的。
早期计算机科学家们,想通过唯一的ID,来识别网络中在计算机,他们想到了当今的电话号码(telephone number),由此,也想出了一个IP(Internet Protocol)的概念。
这个IP是计算设备在计算机网络中的地址,从技术的角度来讲,它是一个用于标识这个网络设备的32位数字,所有的网络设备都基于它们的IP地址往返通信。
例如你上传一个文件到一个网站,或者从一个网站下载一个文件。在网络通信中,文件会被转化成网络中若干个数据包,每个 “包” 含有网络节点的目的地(ip和端口,服务端操作系统收到这个包以后,进行按序拼接,之后交给监听这个端口的进程,也就是一个程序)。
IP地址分为俩个类别:
- IPv4,由4组数字组成,二进制每组1kb,8bits,所以共32bits来定义一个IP地址,例如 104.244.42.129 这个ip地址是 twitter.com 的全球唯一地址,它一般是稳定不变的;
- IPv6,IPv6地址是继IPv4之后,由于网络设备大量涌现,IPv4出现不够用的情况,而定义的一个新的网络地址协议,基于8个16进制数,用“:”来分割,例如:2001:0cb8:85a3:0000:0000:8a2e:0370:7334,由于还不太稳定,目前没有被广泛使用,出于稳定性的考虑,目前互联网主要还是使用IPv4协议。
IPv4,为了方便治理,对它进行了分类,包括Class A, B, C, D, E等五类,每个类别可分配不同数量的IP地址,使得路由表能够做的非常小, 路由器能够快速地处理网络转发,根据网络规模需求(例如设备的数量),采用不同的IP分类,得到更好的网络性能。
32位IP地址,用第一组数字来区分IP所属种类,更多关于IP分类的信息请自行科普“IP分类”,其实就是对所有的ip地址进行了人为分段
俩种类型的IPv4地址:
- 静态, 随着时间的变化,这些设备的地址保持不变。例如一些远程服务器的ip地址通常是的固定不变的,确保用户每次都能访问到它。
- 动态,一般来说,这些ip在网络中通常分配给普通计算机使用,例如在本地局域网中,内网设备的ip是由所在路由器来动态分配的,设备每次接入或者路由器从新启动,这些设备的ip地址都有可能发生变化。这个是DHCP(Dynamic Host Configuration Protocol)协议,一般路由器会集成这个服务。
需要注意的一点,每个设备都有可能同时有几个ip地址,例如一台计算机同时连接了有线和无线网络,那它就有俩个ip地址。
路由器
顾名思义,路由器是一个物理的网络组件,负责转发数据包到指定的目的网络设备。网络中的设备本身是不知道自己通信的对方的具体位置,由路由器根据路由器自身维护的路由表,加上数据包中的目的设备地址来转发数据包的请求。
Routing table:
Destination Gateway Genmask Flags Metric Refs Iface
default 192.168.0.1 0.0.0.0 UG 1024 233 eth0
192.168.0.0 * 255.255.255.0 UC 0 0 wlan0
192.168.0.0 * 255.255.255.0 UH 0 2 eth0
Destination,目地设备的ip地址;
Gateway,网关,网络与网络连接的中间设备,例如俩台路由器的连接,然而,俩台路由器不能直接连接,需要借助另一台路由器,这台路由器就是网关。
子网掩码(Genmask/Subnet mask),仅仅是为了划分网络,子网掩码结合ip地址可以分割成相对较小的ip逻辑区域,便于管理。
Flags,接入网络设备的标记,例如UG,U表示是路由器,G表示是网关。
Iface(网络接口),接入网络的网络类型,例如你的设备接入的Wifi,那这个网络接口就是“wlan”,如果接入的是有线LAN,那网络接口iface就是“eth”。
以上主要是网络基础层面的内容,主要包括ip地址和路由器俩大网络核心技术,如何识别设备,以及设备彼此之间如何通信,接下来咱们看看如何实现更高层的技术应用。
NAT
Network Address Translation ,网络地址转换,为了让有限的公有ip连接更多网络设备,就需要用到NAT,网络地址转换,这个功能通常也是由路由器来实现。路由器一头与Internet服务商获取一个公网ip,另一头挂了很多网络设备,路由器为每一个设备分配一个内部私有的ip地址,只有这个路由器内部的设备之间可见,之外是无法与这些设备直接连接,需要通过路由器来转发信号,这就是NAT技术。
例如,你在家里通过电脑访问Twitter,网络连接大概是这样的,电脑随机选择一个端口,去连接路由器,路由器随机选择一个端口去连接Twitter服务器,如下:
Private IP |PrivatePort |PublicIP |PublicPort |Remote |RemotePort
------------- ------------ --------- ----------- ------- -----------
192.168.1.100 | 37641 | 104.244.42.129 | 59273 | 104.244.42.129 | 80
Private IP 和 PrivatePort 是你电脑的ip和端口,PublicIP 和 PublicPort 是路由器的公有ip和路由器的端口,而 Remote 和 RemotePort 是Twitter服务器的ip和端口。
DHCP
DHCP,Dynamic Host Configuration Protocol,
Internet网络服务商和路由器都有这个功能,为网络设备动态分配地址,例如你的电脑第一次接入路由器的时候,可有手动的设置一个静态的ip地址,也可有由路由器随机分配一个ip地址,当然,路由器与Internet服务商的网络连接的时候,也可有动态获取一个ip地址。
DNS
DNS,Domain Name System/Server,
我们现在都知道,所有的网络设备都有ip地址,无论是公有ip还是私有ip,通过这个ip就可以访问响应的网络设备或者网络服务,例如,我们访问 104.244.42.129
这个地址的时候就能打开Twitter的网站,因为这是Twitter服务器的ip地址。
但是,这个地址没有可解释性,就是几个随机的数字,人类很难记忆,或者可被记住的数量非常有线,所有,DNS就应用而生了,其实就是一个翻译的过程,将ip地址和人类容易理解的文字相互转换,这些文字叫做 域名,例如google.com, twitter.com等,我们访问这些地址的时候,DNS会将其对应的ip地址找到,然后通过ip去访问对应的服务器。
DNS是怎么工作的?
- DNS是由Internet网络服务商来管理和维护的;
- 在自己的电脑或者路由器上配置DNS服务的地址;
- 当我们在浏览器敲入一个地址的时候,浏览器会向DNS服务商询问这个域名对应的ip地址,如果这个DNS服务商没有找到,就会向上级询问,直到对顶层,如果还没有找到,就返回域名无效的信息。
域名的结构:
包括协议,域名名字,后缀等。
互联网服务提供商(ISPs)
注意,Internet 和 internet 不是同一个东西,
internet是互联网,泛指所有可以互联互通的网络,而Internet是一个具体的互联网,叫因特网,就好比 人 和 黑人、白人、男人、女人的区别,一个是概念,一个是具象的东西。
Internet是通过TCP/IP实现的internet,当然还有基于其他协议的internet,而,目前最大,应用范围最广的internet就是Internet(因特网)。
而,ISPs(Internet Service Providers)就是Internet网络服务提供商,可以让人们很方便的接入Internet,实现与Internet互联,据说Internet的前身是ARPAnet,美国高等研究计划署开发的世界上第一个运营的网络,是全球Internet的鼻祖。
Internet服务商是分层组织结构,包括1级、2级和3级,如下图:
1级服务商是Internet的主要服务商,国际级别,这些互联网服务提供商通过海底的大电缆相互连接,并且为2级服务商提供接入的服务。
小结:
整个Internet的结构看起来如下图:
可见路由器是网络中非常重要的一个关键环节,对外通过公有ip相互通信,内部为各个设备分配私有的ip地址,然后通过NAT协议实现网络转发,形成了局域网。
而不同的ISPs实现了上层网络的跨区域连接,形成了广域网,而最终形成的整张大网就是Internet,因特网,也就是我们天天都离不开的互联网。
而,每个网络设备之间到底是如何传输数据,经过了哪些网络设备和转换,以及各种网络服务是如何,用什么方式对外提供的,这就是开放式系统互联通信模型(Open System Interconnection Reference Model,简称OSI),定义了不同设备互联的标准,是设计和描述计算机网络通信的基本框架。