在这个世界上有俩种人,一种是每天趴在网上,跟计算机网络亲密接触的人,另外一种是天外飞仙,不吃烟火食,天然也不使用互联网的人😀。css
因此,不管你是互联网世界的新用户,或者,你已经投身互联网工做很长时间了,亦或是你天天喜欢使用计算机和网络的网民,你都应该了解基本的网络知识,特别是计算机网络。浏览器
若是你维护过服务器,或者是一个服务端的开发者,你了解远程的用户是如何链接到你的服务器或者访问到你的服务的吗?
发现大部分人的回答是模糊的,有的根本不明就理,因此,本文就尽量多的来聊一聊,有关这类计算机网络与网络组件的基本知识。ruby
咱们先来给计算机网络下个定义:服务器
计算机网络能够被定义为,借助于数据传输介质(例如电缆、光纤等),链接贯穿世界各地的计算机,并交换网络数据包。网络
这个图中包含了基本的网络组成结构,和常见的网络设施,以及一些网络术语,例如:因特网Internet、互联网服务提供商ISPs、路由器Router等,咱们接下来,看一下这些组件是如何工做的,以及之间的交互关系。框架
节点在计算机网络中的意思是各类计算设备,例如我的PC、移动手机、平板电脑、服务器等等,可用经过网络与相似的设备进行数据包的交换。ide
任何沟通都须要一致的沟通基础,咱们一般称为 协议,例如人类沟通的协议,包括各类地方语言、手语、表情等,都是须要事先约定好的规则。性能
而互联网是一个远距离传输信息的协议,在传输以前,须要先知道对方的位置。
好比,你考虑在你女友过生日的时候,送她一份礼物,你须要先知道把礼物送到哪里,她的家庭或工做地址。网站
如何给网络节点设置地址呢?
任何技术都不是凭空产生的,必须踩着前人的肩膀,参考现有技术的启发,演变而来的。
早期计算机科学家们,想经过惟一的ID,来识别网络中在计算机,他们想到了当今的电话号码(telephone number),由此,也想出了一个IP(Internet Protocol)的概念。google
这个IP是计算设备在计算机网络中的地址,从技术的角度来说,它是一个用于标识这个网络设备的32位数字,全部的网络设备都基于它们的IP地址往返通讯。
例如你上传一个文件到一个网站,或者从一个网站下载一个文件。在网络通讯中,文件会被转化成网络中若干个数据包,每一个 “包” 含有网络节点的目的地(ip和端口,服务端操做系统收到这个包之后,进行按序拼接,以后交给监听这个端口的进程,也就是一个程序)。
IP地址分为俩个类别:
IPv4,为了方便治理,对它进行了分类,包括Class A, B, C, D, E等五类,每一个类别可分配不一样数量的IP地址,使得路由表可以作的很是小, 路由器可以快速地处理网络转发,根据网络规模需求(例如设备的数量),采用不一样的IP分类,获得更好的网络性能。
32位IP地址,用第一组数字来区分IP所属种类,更多关于IP分类的信息请自行科普“IP分类”,其实就是对全部的ip地址进行了人为分段
俩种类型的IPv4地址:
须要注意的一点,每一个设备都有可能同时有几个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地址和路由器俩大网络核心技术,如何识别设备,以及设备彼此之间如何通讯,接下来我们看看如何实现更高层的技术应用。
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,Dynamic Host Configuration Protocol,
Internet网络服务商和路由器都有这个功能,为网络设备动态分配地址,例如你的电脑第一次接入路由器的时候,可有手动的设置一个静态的ip地址,也可有由路由器随机分配一个ip地址,固然,路由器与Internet服务商的网络链接的时候,也可有动态获取一个ip地址。
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去访问对应的服务器。
域名的结构:
包括协议,域名名字,后缀等。
注意,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),定义了不一样设备互联的标准,是设计和描述计算机网络通讯的基本框架。