计网基本概念
网络
计算机网络,简称网络,是指容许节点彼此交换信息。处于网络中的任意两个设备,彼此可以通信。
若干「节点」能够彼此交换信息,这些节点就构成了网络。
网络包括了「节点」和「数据链路」
- 节点:包括主机,网关,路由器,交换机等等
- 数据链路:用于收发数据的工具和介质
传输介质有无线和有限两类:
- 无线:包括wifi,蓝牙,NFC
- 有线:包括光纤,双绞线等
网络的概念有点像「文件夹」,一个文件夹内可以包含文件(节点),也可以包含文件夹(子网),可以理解成一种组合模式,两个小网络彼此互联,就构成了一个更大的网络。
主机
主机其实有两个意思,「电脑主机」和「网络主机」的简写都叫主机。
- 电脑主机:机箱及其内部的所有硬件的总和
- 网络主机:是已连接到一个计算机网络的一台电子计算机或其他设备。
在讨论计算机网络的文章中提到的主机一般都指代网络主机。
端口
软件端口
软件端口用于标识接受网络IO的进程。
一个端口号使用16位无符号整数(unsigned integer)来表示,其范围介于0与65535之间。
HTTP默认80,HTTPS默认443。
硬件端口
即交换机等设备上的物理接口。
互联网,因特网
互联网的正式名称是 Internet,即互联网 = 因特网。
互联网是一个逻辑上的单一巨大国际网络,就是一个特殊(可能是最大的)的广域网。
我们上网上的通常是互联网的一个子集:万维网www,尽管互联网 90% 以上的部分都属于万维网。除了万维网,还有电子邮件,SSH安全登录等等,属于互联网而不属于万维网。
它们的区别是:应用层协议不同。
万维网:World Wide Web
万维网全部基于HTTP协议,是你每天访问网页的载体。
骨干网
一个拥有许多办公地点的大公司可能会有一个骨干网,需要将所有的办公地点联系在一起。
中国互联网骨干网,我们能接触的基本就三巨头:
中国电信,中国联通,中国移动,它们分别有3/2/2张骨干网。
常见组网技术
组网技术:即如何将若干设备互联形成一个网络。
下面介绍两个适用于非常近距离的,也是非常贴近生活的:
近场通信:NFC
NFC,Near-field communication,又称近距离无线通信、近距离通信。
NFC的通信距离在厘米级别,可以充当身份证,在公交,地铁的出进站支付也广泛应用。
蓝牙:Bluetooth
蓝牙也是一个近距离的无线通信技术标准,但距离比NFC远,通常在几米的范围。
一个设备最多与其它七台设备使用蓝牙进行连接。一个蓝牙子网最大的设备数量为8个。
有线局域网
有线局域网包括三类:以太网,令牌环,光纤分布式数据接口
1、以太网:Ethernet
Ethernet,以太网。以太网是最常用的局域网组网方式。不同以太网标准的传输介质可能不同。
因为以太网太过流行,将 有线局域网的组网方式与以太网划等号 在大多数情况都是成立的。
以太网与TCP/IP网络模型中的网络接口层息息相关,后文会深入分析以太网。
下面两个名词了解以下即可,最大的作用可能是通过对比让你能够记住以太网的概念:是个组网方式,是种技术。
2、令牌环
令牌环的优点是:传输速率高,作为对比,一个4M的令牌环网络和一个10M的「以太网」数据传送率相当
但缺点也很明显:令牌环网络不可复用,导致网络利用率低下。
令牌环已经基本被以太网取代了。
3、光纤分布式数据接口
FDDI,Fiber Distributed Data Interface,光纤分布式数据接口,使用光纤作为传输介质。最大连接约为200公里,远高于以太网,因此FDDI也可以算是「城域网」。FDDI基于令牌环协议,但派生自IEEE 802.4协议。
FDDI虽然很好,但造价过于昂贵了,因此实际上,「千兆快速以太网」是更加成熟的方案。
无线局域网
WLAN,无线局域网,无线局域网现在基本要和Wi-Fi划上等号了。从学习计网的角度来说,Wi-Fi不需要重点学习
无线与有线的对比
速度
无线的速度通常更慢,理论上限也只有1GB/s。
稳定性
无线局域网是依靠无线电波进行传输,任何障碍物都会影响电磁波的传输。
安全性
无线电波的信号非常容易监听,会造成信息泄漏。
便捷
有线局域网,无论是布线,还是接入,都非常麻烦。
无线局域网,在无线信号覆盖区域内的任何一个位置都可以轻易接入网络。
网络理论模型
TCP/IP四层模型
TCP/IP是简化版本的OSI。数据链路层+物理层在这个模型中就叫网络接口层。
OSI七层模型
OSI,Open System Interconnection Model,开放式系统互联模型
为什么会有两种模型
TCP/IP 发明于 1970 年代,当时除了它还有很多其他的网络协议,整个网络世界比较混乱。因此需要统一。
于是国际标准组织(ISO)定义了OSI七层模型,但这只是个理论模型,不是强制标准。
因为TCP/IP 等协议,已经流行起来了,没办法完全统一。
当然这种说法只是“理论上”的层次,并不是与现实完全对应。
OSI 的分层模型在四层以上分的太细,而 TCP/IP 实际应用时的会话管理、编码转换、压缩等和具体应用经常联系的很紧密,很难分开。例如,HTTP 协议就同时包含了连接管理和数据格式定义。
网段:物理层 or 网络层
严格的学术定义
学术定义的「网段」,是这样的:
两个设备处于同一个网段,是指:两个设备共用同一物理层。使用中继器和集线器等设备扩展,仍属于一个网段。
而上升到交换机,路由器,它们就不属于同一个网段,这些网络设备已经超出了物理层。
在这个定义下,网段不等于子网。(即IP地址中的网络地址相同并不代表处于同一个网段)
广传的计网概念:子网
而在计算机网络科技领域中,「网段」通常是指:子网
子网:就是在网络层,通过路由器和网关等设备分隔开的,小规模的网络。在学习IP协议的时候,我们就会知道:如何通过IP地址与子网掩码求得网络号,子网号。
例如IP为 192.168.0.1 ~ 192.168.0.254 的设备就位于掩码 255.255.255.0 的同一子网中,这句话经常被说成“位于192.168.0.x 网段中”。
从IP格式的角度,子网就是:「网络号」+「子网号」+「末尾补零至32位」,还是上面这个例子,网络号是192.168,没有子网号,剩余位补零,转为十进制,子网就是:192.168.0.0。而网段在计网中就指代子网。
URL和URI
URI,Uniform Resource Identifier,中文名:统一资源标识符,唯一地标记互联网上资源。
URL,Uniform Resource Locator,中文名:统一资源定位符,URL是URI的一个子集。
实际上,还有个东西叫URN,Uniform Resource Name,中文名:统一资源命名符。
URI 包含了 URL 和 URN。
通常已经不需要严格区分URI和URL了。
一个完整的URI包含了协议名,主机名(IP或域名),路径,查询参数,如下图所示:
?:URI查询参数
协议名+主机名+路径,已经能够唯一定位资源了,为什么还要query呢?query是为了满足我们额外的要求的。
比如要查询某件商品,查询到数万件,服务器不可能将全部的查询结果返回,而是需要分页,那就需要query来表达客户端的分页信息。
query以?开头,每个参数以key - value的形式保存,用&间隔。
http://www.chrono.com:8080/11-1?uid=1234&name=mario&referer=xxx
#:锚点
锚点:锚点是超链接的一种,通过锚点可以在同一个web页面内迅速定位,从而跳转到指定的位置。
实际上,在URI查询参数query之后,往往还跟着#,如下所示:
https://juejin.cn/post/7278983339544018956#heading-9
这是掘金的一篇文章,通过点击目录,URI就自动加上了#。
锚点只供浏览器定位使用,浏览器永远不会把带“#fragment”的 URI 发送给服务器。
特殊的本地URI
URI也可用来标记本地磁盘上的一个资源,是一种特殊的URI,它的协议用 file ,后面跟本地路径,以一个 / 开头,没有主机名(file允许省略主机名,默认是本机 localhost。)
file:///D:/http_study/www/
一个URL我们俗称”网址“,差异不大,所以通常不会做严格的区分。
Chrome浏览器中,直接将本地文件拖入地址栏,自动显示文件的URI,如下:
file:///C:/Users/xxx/Desktop/xxxx.docx
URI编码
URI 里只能使用 ASCII 码,当然URI也提供了转义字符 % 。
URI直接把非 ASCII 码或特殊字符转换成十六进制字节值,然后前面再加上一个“%”。
例如,空格被转义成“%20”,“?”被转义成“%3F”。而中文、日文等则通常使用 UTF-8 编码后再转义。
域名
IP地址虽然比 MAC 的 16 进制数要好一点,但还是难于记忆和输入,因此有了域名。
域名:是一个有层次的结构,是一串用“.”分隔的多个单词。
最左边的是主机名,通常用来表明主机的用途,比如开头的“www”表示提供万维网服务
硬件相关
网卡:NIC
NIC,Network Interface Card,网卡。也叫网络适配器。
网卡通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片,网卡有自己的MAC地址。
集线器:HUB
集线器工作在物理层。集线器会将自己收到的每一个字节,都复制到其他端口上去。
正因为这个特性,会造成许多不必要的数据传输,因此「以太网」,一种局域网组网技术,并没有采用集线器连接设备,而是采用了交换机。
网桥:br
网桥,本质上可以理解为两个网线口的交换机,正好可以把两台电脑给连起来,也叫桥接。而交换机,则是多网线口的网桥,可以把多台电脑给连(桥接)起来。其他功能方面,大差不差,不必太过纠结。
交换机
交换机有若干个端口,通常是几十个,这些端口可以通过网线物理连接到某一个主机,或是另一台交换机,从而构成一个局域网,也可以连接到一个路由器从而跨网通信。通过维护一张交换机表,表项为「MAC地址 - 交换机端口 - 时间」,来实现「聪明的通信」
光猫
光猫就是光纤调制解调器。但现在一般的光猫都可以用作路由器(路由默认),可以使用桥接模式,然后自己买路由器。光猫更接近生活,而在传统的计网学习中接触到的不多。
路由器
路由器的功能:就是使得跨网段的设备能够彼此通信。
当今的大多数多用户系统,包括几乎所有的Unix系统,都可以配置成一个路由器。
主机和路由器都有一张路由控制表,表项为:「目标地址-下一跳的IP地址-标志」
- 单臂路由器:在路由器的一个物理接口上通过配置多个子接口的方式,实现多个Vlan之间的互通。
- 边缘路由器:将设备连接到互联网的路由器。
- 核心路由器:如在ISP网络中,只负责与其他路由器之间传递数据。
- 无线网络路由器:通过无线方式(如wi-fi)连接终端设备,有的电信运营商为客户安装宽带时会提供含有Wi-Fi的路由器。
网关
网关的工作机制与代理非常相似。
网关是路由器的一个接口。如果目的IP跟本机IP不在同一个局域网下,那么会去获取默认网关的MAC地址,这里就是指获取家用路由器的MAC地址。然后把消息发给家用路由器,让路由器发到互联网,找到下一跳路由器,一跳一跳的发送数据,直到把消息发到目的IP上,又或者找不到目的地最终被丢弃。
参考文档
透视HTTP协议 - 罗剑锋
趣谈网络协议 - 刘超
全解网络协议