计网:五层协议栈

707 阅读6分钟

互联网的核心是一系列协议,这些协议规定着世界上每一台计算机之间如何连接。互联网的实现,可以分为以下五层:

  • 应用层
  • 传输层
  • 网络层
  • 链接层
  • 实体层 越往下越靠近计算机硬件,而越往上则越靠近用户

这里我从最下面一层开始讲起

实体层

实体层的作用就是把计算机先连起来,比如用光缆,电缆,双绞线,无线电波等,用于传播01的电气信号。

链接层

链接层主要规定了如何解读01信号,多少个信号一组,各个信号有什么意义,目前主要以以太网协议来解读这些信号

以太网协议

以太网协议规定一组电信号为一个数据包,每个数据包包含标头 + 数据,标头包含了发送者和接收者的位置信息,而这些信息,就是接下来要介绍的MAC地址。

MAC地址

每个接入网络的设备,都要有一块网卡接口,数据包必须由一块网卡传输到另一块网卡,而网卡的地址就是MAC地址,每一块网卡都有全世界独一无二的MAC地址,有了这个地址,就可以定位了

广播

前面光有MAC地址还不够,一块网卡不知道另一块网卡的MAC地址,所以这时有了ARP协议,以太网用了一种原始的方式,即将数据包向本网络内所有的计算机发送,让每台计算机自己判断是否是接收方,这种方式叫广播

网络层

单靠广播是不行的,因为这么多的计算机不可能每一台都接受其他所有计算机发出的数据包再进行判断,这里我们就有了一个子网络概念。

IP协议

IP协议规定了计算机的网络地址,可以称为IP地址,该地址表明这台计算机属于哪一个子网络,属于子网络内的哪一部计算机。目前我们广泛采用的是IPv4,这个版本规定IP地址由32个二进制位组成,每8位为一组,每组再表示为10进制数显示。 如192.168.1.2 用点进行分组,每组都是8位2进制数组成的十进制数,但我们目前还无法从这个IP地址上看它属于哪个子网络,于是就出现了子网掩码

子网掩码

子网掩码用于表示IP地址的哪一部分是网络部分,哪一部分是主机部分,并且在形式上与IP地址相同,由32位二进制数组成,同样分为四组,但是特殊的,它的网络部分全部为1,主机部分全部为0,根据这个,我们就可以知道IP地址哪一部分是网络部分了,看一个例子

现在IP地址为172.16.254.1,子网掩码为255.255.255.0,于是我们就可以根据子网掩码求出IP地址的网络部分,可以看到子网掩码的前三部分都是255,255转为二进制就是11111111,因此255部分代表的就是网络部分,即IP地址的前三部分就是网络部分,代表了子网络地址

通常我们判断两个IP地址是否在同一个子网下,我们可以将各自的IP跟子网掩码进行与(AND)运算,再判断得到的结果进行比较,相同则表明两个IP在同一个子网下

IP数据包

根据IP协议发送的数据叫做IP数据包,它也包括标头和数据,标头包含了IP地址等信息,然后这个数据包整个被放进了以太网数据包的数据部分

ARP协议

我们现在只知道对方的IP地址,但却不知道对方的MAC地址,所以这里的ARP协议可以帮助我们通过IP地址去获取对方的MAC地址

当两个IP处于同一个子网络时,发送者广播一个包含目标IP的数据包,发送给子网络内每一台主机,每台主机通过对比其中的IP与自身的IP,如果相同则说明自己是接收者,然后向对方报告自己的MAC地址,于是发送者就获得了目标的MAC地址

传输层

传输层建立的是端口到端口的通信,在一台主机上,有可能不止一个互联网应用,比如你现在正在浏览微博,同时也在微信聊天,两个应用程序都需要发送和接受数据包,那你怎么知道数据包到底是哪个应用程序接收或者发送的,因此我们就有了端口这个参数,每个应用程序会选择一个端口进行通讯,每个数据包都发送到主机特定的端口,所以不同程序才能获取到属于自己的数据包

UDP协议

现在我们要往数据包中加入端口信息,因此就诞生了新的协议:UDP协议,该协议发送的数据称为UDP数据包,也由标头和数据组成,标头包含了端口信息,然后整个UDP数据包放入IP数据包中的数据部分

TCP协议

UDP协议发出的数据包无法确认对方是否接收,因此诞生了TCP协议,TCP协议发出的每一个数据包都需要确认,如果有一个数据包丢失,就收不到确认,发出方就知道有必要重发这个数据包,TCP数据包和UDP数据包一样,放在IP数据包的数据部分

应用层

应用层的作用就是解析收到的数据包,举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。而这些应用层协议的数据就放在了TCP包的数据部分

所以到最终,整个数据包的结构就变为了下面这个样子

以太网(MAC) + IP + TCP(端口) + 应用层数据包