互联网
互联网是由全世界众多网络连接而成的网络。互联网的核心就是一系列协议,总称为"互联网协议"。
协议
协议是定义了数据如何在计算机内或之间,进行交换的规则。它们对电脑如何连接和组网,做出了详尽的规定。
五层模型
用户接触到的,只是最上面的一层,根本没有感觉到下面的层。越下面的层,越靠近硬件;越上面的层,越靠近用户。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"(protocol)。
互联网的每一层,都定义了很多协议。这些协议的总称,就叫做互联网协议(Internet Protocol Suite)。
实体层
它是什么?
它是把电脑连接起来的
物理手段
(网线、光缆、电缆、无线电波)。它的用途是什么?
作用是负责传送
0
和1
的电信号。
链接层
它的用途是什么?
解读电信号,确定
0
和1
的分组方式。
以太网协议
它有什么规则?
它规定,一组电信号构成一个
数据包
,也叫做帧(Frame)
。每一个数据包为两个部分:
- 标头(Head):包含数据的一些说明项,如发送者、接受者、数据类型等等。
- 数据(Data):数据包的具体内容。
MAC 地址
以太网
规定,连入网络的所有设备,都必须具有网卡
接口。数据包必须是从一块网卡,传送到另一块网卡。
它是什么?
它是网卡地址,也是数据包的发送和接收地址。
它的作用是什么?
用来定位网卡和数据包的路径。
它的特点是什么?
每一块网卡出厂的时候,都有一个全世界独一无二的
MAC地址
。
广播
它是什么?
一种发送数据包的方式。
它是怎么发送的?
向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
它的特点是什么?
广播的限制是,两台计算机要在同一个
子网络
中。这是合理的设计,可以避免很多灾难。
总结
我们有了MAC地址
,然后以太网
会使用广播
的方式,将数据包
发送给局域网
内所有的计算机,它们读取数据包的标头
,找到接收方的 MAC 地址,与自身的 MAC 地址相比较,如果相同就接收这个包,否则就丢弃这个包。
有了数据包的定义、网卡的 MAC 地址、广播的发送方式,“链接层”就可以在多台计算机之间传送数据。
网络层
它是什么?
一套新的地址,这套地址叫做
网络地址
,简称网址
。它的用途是什么?
引进一套新的地址,使我们能够区分不同的计算机是否属于同一个子网络。
它是怎么区分的?
通过
IP协议
和子网掩码
。
IP 协议
它是什么?
用来规定
网络地址
的协议。它的作用是什么?
一个是为每一台计算机分配 IP 地址,另一个是确定哪些地址在同一个子网络中。
它长什么样?
用四段十进制数表示,从
0.0.0.0
到255.255.255.255
。前一部分表示网络,后一部分表示主机。它的特点是什么?
网络部分相同,就表示处于同一个子网络。
怎么判断网络部分是否相同?
将两个
IP地址
与子网掩码
分别进行AND运算
,比较是否相同,就可以知道是否在一个子网络中。
ARP 协议
它有什么用?
在同一个子网络中,已知
IP地址
的情况下,通过ARP
协议,可以得到主机的MAC地址
。它的局限是什么?
只作用于同一个子网络中,如果两台主机不在同一个子网络,那只能把数据包传送到两个子网络连接处的
网关
去处理。
总结
每台计算机有两种地址,一个种是MAC地址
,另一种是网络地址
。这两种地址之间没有任何联系,MAC 地址绑定在网卡上,网络地址由管理员分配,它们只是随机组合在一起。
网络地址用来确定计算机所在的子网络,MAC 地址则将数据包发送到该子网络中的目标网卡。
如果是同一个子网络
,就采用广播方式发送,否则就采用路由
方式发送。
传输层
它的用途是什么?
建立
端口
到端口
之间的通信。
端口(port)
它是什么?
它是一个编号。
它的用途是什么?
用来区分接收到的
数据包
要提供给哪个程序使用。它的特点是什么?
由 16 个二进制位组成,一个
0
到65535
之间的整数,前面1023
个被系统占用。
UDP 协议
它的用途是什么?
在
数据包
中加入端口
信息。它的缺陷是什么?
可靠性较差,可以将数据发出,但是无法知道对方是否收到。
TCP 协议
它是什么?
一个有确认机制的
UDP协议
。它的用途是什么?
为了解决
UDP协议
的问题,提高可靠性。它是怎么做到的?
操作系统会有接口来管理它,它使用三次握手来建立一个连接,使用四次握手来中断一个连接。
它还有什么特点?
它会确保数据传输的可靠性,并保证每一个字节在接收时,维持它们的发送顺序。
总结
有了 MAC 地址和 IP 地址,我们已经可以在互联网上任意两台主机上建立通信。接下来的问题是,同一台主机上有许多程序都需要用到网络,想要知道接收到的数据包
到底是给哪个程序使用,这还需要一个参数,就是端口
。
网络层
的功能是建立主机到主机
之间的通信,传输层
的功能是建立端口到端口
之间的通信。
每一层都会往数据包
中追加新的信息,最后就是这个样子:
应用层
它是什么?
它是应用程序的数据协议。
它的作用是什么?
用来规定应用程序的数据格式。应用层接收到传输层的数据,加下来就要进行解读。
总结
网络通信就是交换数据包
,发送数据包需要知道两个地址:一个是对方的MAC地址
,另一个是对方的IP地址
。
如果两台电脑不在同一个子网络中,就无法知道对方的 MAC 地址,必须通过网关转发
。
用户上网设置
通常必须做一些设置,需要四个参数:
- 本机的 IP 地址
- 子网掩码
- 网关的 IP 地址
- DNS 的 IP 地址
DHCP
动态 IP 地址,指计算机开机后,会自动分配一个 IP 地址,使用的协议叫做DHCP协议
。
每一个子网络中,有一台计算机负责管理本网络的所有 IP 地址,它叫做DHCP服务器
。
域名
它是什么?
IP 地址的别名。
NDS 协议
它的用途是什么?
将域名查出 IP 地址。
它是如何做到的?
本机需要先知道 DNS 服务器的 IP 地址,然后根据域名的
层级
,使用分级查询
。域名的层级是什么?
- 所有域名的尾部,实际上都有一个根域名。举例来说,
www.lcong.cn
真正的域名是www.lcong.cn.root
,简写为www.lcong.cn.
,后面有一个.
。 - 主机名(三级域名).次级域名(二级域名).顶级域名(一级域名).根域名
- 所有域名的尾部,实际上都有一个根域名。举例来说,
分级查询是什么?
从根域名开始,依次查询每一级域名的 NS 记录,直到查到最终的 IP 地址。
- 从
根域名服务器
查到顶级域名服务器
的 NS 记录和 A 记录 - 从
顶级域名服务器
查到次级域名服务器
的 NS 记录和 A 记录 - 从
次级域名服务器
查出主机名
的 IP 地址
- 从
A 记录和 NS 记录是什么?
域名与 IP 之间的对应关系,称为
记录
。根据使用场景,记录
可以分成不同的类型,NS
和A
就是类型。常见的记录有哪些?
A
:地址记录,返回域名指向的 IP 地址NS
:域名服务器记录,返回保存下一级域名信息的服务器地址,只能设置为域名MX
:邮件记录,返回接收电子邮件的服务器地址CNAME
:规范名称记录,返回另一个域名,即当前查询的域名是另一个域名的跳转
Hosts 文件
它是什么?
Hosts 文件存放的是
域名
和IP
的对应关系,在网络请求阶段发挥作用。