在这个世界上有俩种人,一种是天天趴在网上,跟计算机网络亲密接触的人,另一种是天外飞仙,不食人间烟火,自然也不使用互联网的人。
如果你维护过服务器,或者是一个服务端的开发者,你了解远程的用户是如何连接到你的服务器或者访问到你的服务的吗?发现大部分人的回答是模糊的,有的根本不明就理,所以,本文就尽可能多的来聊一聊,有关这类计算机网络与网络组件的基本知识。
我们先来给计算机网络下个定义:
计算机网络可以被定义为,借助于数据传输介质(例如电缆、光纤等),连接贯穿世界各地的计算机,并交换网络数据包。
这个图中包含了基本的网络组成结构,和常见的网络设施,以及一些网络术语,例如:因特网Internet、互联网服务提供商ISPs、路由器Router等,我们接下来,看一下这些组件是如何工作的,以及之间的交互关系。
节点在计算机网络中的意思是各种计算设备,例如个人PC、移动手机、平板电脑、服务器等等,可用通过网络与类似的设备进行数据包的交换。
任何沟通都需要一致的沟通基础,我们通常称为协议,例如人类沟通的协议,包括各种地方语言、手语、表情等,都是需要事先约定好的规则。
而互联网是一个远距离传输信息的协议,在传输之前,需要先知道对方的位置。比如,你考虑在你女朋友过生日的时候,送她一份礼物,你需要先知道把礼物送到哪里,她的家庭或工作地址。
这个IP是计算设备在计算机网络中的地址,从技术的角度来讲,它是一个用于标识这个网络设备的32位数字,所有的网络设备都基于它们的IP地址往返通信。
例如你上传一个文件到一个网站,或者从一个网站下载一个文件。在网络通信中,文件会被转化成网络中若干个数据包,每个“包”含有网络节点的目的地(ip和端口,服务端操作系统收到这个包以后,进行按序拼接,之后交给监听这个端口的进程,也就是一个程序)。
IP地址分为俩个类别:
IPv4,为了方便治理,对它进行了分类,包括ClassA,B,C,D,E等五类,每个类别可分配不同数量的IP地址,使得路由表能够做的非常小,路由器能够快速地处理网络转发,根据网络规模需求(例如设备的数量),采用不同的IP分类,得到更好的网络性能。
32位IP地址,用第一组数字来区分IP所属种类,更多关于IP分类的信息请自行科普“IP分类”,其实就是对所有的ip地址进行了人为分段
俩种类型的IPv4地址:
需要注意的一点,每个设备都有可能同时有几个ip地址,例如一台计算机同时连接了有线和无线网络,那它就有俩个ip地址。
顾名思义,路由器是一个物理的网络组件,负责转发数据包到指定的目的网络设备。网络中的设备本身是不知道自己通信的对方的具体位置,由路由器根据路由器自身维护的路由表,加上数据包中的目的设备地址来转发数据包的请求。
Routingtable:DestinationGatewayGenmaskFlagsMetricRefsIfacedefault192.168.0.10.0.0.0UG1024233eth0192.168.0.0*255.255.255.0UC00wlan0192.168.0.0*255.255.255.0UH02eth0以上主要是网络基础层面的内容,主要包括ip地址和路由器俩大网络核心技术,如何识别设备,以及设备彼此之间如何通信,接下来咱们看看如何实现更高层的技术应用。
NetworkAddressTranslation,网络地址转换,为了让有限的公有ip连接更多网络设备,就需要用到NAT,网络地址转换,这个功能通常也是由路由器来实现。路由器一头与Internet服务商获取一个公网ip,另一头挂了很多网络设备,路由器为每一个设备分配一个内部私有的ip地址,只有这个路由器内部的设备之间可见,之外是无法与这些设备直接连接,需要通过路由器来转发信号,这就是NAT技术。例如,你在家里通过电脑访问Twitter,网络连接大概是这样的,电脑随机选择一个端口,去连接路由器,路由器随机选择一个端口去连接Twitter服务器,如下:
PrivateIP|PrivatePort|PublicIP|PublicPort|Remote|RemotePort---------------------------------------------------------------192.168.1.100|37641|104.244.42.129|59273|104.244.42.129|80PrivateIP和PrivatePort是你电脑的ip和端口,PublicIP和PublicPort是路由器的公有ip和路由器的端口,而Remote和RemotePort是Twitter服务器的ip和端口。
DHCP,DynamicHostConfigurationProtocol,Internet网络服务商和路由器都有这个功能,为网络设备动态分配地址,例如你的电脑第一次接入路由器的时候,可有手动的设置一个静态的ip地址,也可有由路由器随机分配一个ip地址,当然,路由器与Internet服务商的网络连接的时候,也可有动态获取一个ip地址。
DNS,DomainNameSystem/Server,我们现在都知道,所有的网络设备都有ip地址,无论是公有ip还是私有ip,通过这个ip就可以访问响应的网络设备或者网络服务,例如,我们访问104.244.42.129这个地址的时候就能打开Twitter的网站,因为这是Twitter服务器的ip地址。
但是,这个地址没有可解释性,就是几个随机的数字,人类很难记忆,或者可被记住的数量非常有线,所有,DNS就应用而生了,其实就是一个翻译的过程,将ip地址和人类容易理解的文字相互转换,这些文字叫做域名,例如google.com,twitter.com等,我们访问这些地址的时候,DNS会将其对应的ip地址找到,然后通过ip去访问对应的服务器。
域名的结构:
包括协议,域名名字,后缀等。
注意,Internet和internet不是同一个东西,internet是互联网,泛指所有可以互联互通的网络,而Internet是一个具体的互联网,叫因特网,就好比人和黑人、白人、男人、女人的区别,一个是概念,一个是具象的东西。
Internet是通过TCP/IP实现的internet,当然还有基于其他协议的internet,而,目前最大,应用范围最广的internet就是Internet(因特网)。
而,ISPs(InternetServiceProviders)就是Internet网络服务提供商,可以让人们很方便的接入Internet,实现与Internet互联,据说Internet的前身是ARPAnet,美国高等研究计划署开发的世界上第一个运营的网络,是全球Internet的鼻祖。
Internet服务商是分层组织结构,包括1级、2级和3级,如下图:
1级服务商是Internet的主要服务商,国际级别,这些互联网服务提供商通过海底的大电缆相互连接,并且为2级服务商提供接入的服务。
整个Internet的结构看起来如下图:
可见路由器是网络中非常重要的一个关键环节,对外通过公有ip相互通信,内部为各个设备分配私有的ip地址,然后通过NAT协议实现网络转发,形成了局域网。而不同的ISPs实现了上层网络的跨区域连接,形成了广域网,而最终形成的整张大网就是Internet,因特网,也就是我们天天都离不开的互联网。
而,每个网络设备之间到底是如何传输数据,经过了哪些网络设备和转换,以及各种网络服务是如何,用什么方式对外提供的,这就是开放式系统互联通信模型(OpenSystemInterconnectionReferenceModel,简称OSI),定义了不同设备互联的标准,是设计和描述计算机网络通信的基本框架。