简单认识网络协议
通过浅谈互联网协议,我们已经了解了TCP/IP的参考模型,对网络的分层管理有了有一个概念。我们知道计算机之间的通信,靠的就是这些互联网协议(IPS,Internet Protocol Suite)来保障的。下面我们将通过最底层数据链路层到最顶层应用层,来简单的了解一下计算机通信的背后到底是怎么样子。
0x01 数据链路层
我们的电脑如果想要上网,首先要干嘛?想必大家会吧。我们要么连接WiFi,要么插根网线。之后我们就可以在广阔的物联网上冲浪,浏览浏览新闻,刷刷B站...(打住,回归正题。)网线,WiFi,无非就是我们把电脑连接起来的方式。利用这些电气属性,我们可以发送和接受0,1信号。这样计算机之间就建立了联系。
能发送0/1信号,计算机就可以进行交流了,最初的时候,各家都有各个的语言,但计算机又不像我们人类一样能学会多种语言。它有点笨,不能同时掌握多种方式的0/1信号的解读方式。
但慢慢地,一种叫做"以太网"(Ethernet)的协议出现了,并占据了主导地位。
以太网协议
以太网规定了一种电信号的分组方式,一组电信号构成一个数据包,称做以太网帧 ( Frame )。
以太网帧,分为 头部 ( Header
)、 数据 ( Data
)以及 校验和 ( Checksum
)总共 3
大部分。
头部包含数据包的一些说明项,比如发送者、接受者、数据类型等等,头部固定为18个字节头部依次是一个 6
字节长的 目的地址 ,用于标记数据由哪台机器接收; 一个 6
字节长的 源地址 ,用于标记数据由哪台机器发送; 一个 2
字节长的 类型 ,用于标记数据包该如何处理, 最后4
字节表示承载的是一个 IP
包。
数据 可以是任何需要发送的信息,长度可变, 46
至 1500
个字节。 数据还有另一个称谓, 叫做负荷 ( Payload )。
网卡
每台计算机进行网线通讯,都要借助一个硬件设备,网卡,简称NIC,NIC
是 Network Interface Controller
的缩写。网卡则负责将比特流转换成电信号发送出去和将检测到的电信号转换成比特流并接收。
发送数据时,内核协议栈负责封装以太网帧( 目的地址 、源地址 、类型和数据并计算校验和),并调用网卡驱动发送; 接收数据时,负责验证目的地址、校验和并取出数据部分,交由上层协议栈处理。
MAC地址
以太网数据包的头部包含了发送者和接受者的信息。那么如何标识发送者和接受者呢?这时就要用到MAC地址了。每块网卡出厂时,预先分配了一个全球唯一的 MAC地址 ,并烧进硬件。有些设备也支持更改MAC地址。以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。而网卡的地址,就是数据包的发送地址和接收地址,就是MAC地址。所以说有了MAC地址,就可以定位网卡和数据包的路径了。
MAC
地址 6
个字节可以划分成两半部分:
3
字节长的 厂商代码 (OUI
),由国际组织分配给不同的网络设备商;3
字节长的 序列号 (SN
),由厂商分配给其生产的网络设备,也就是流水号;
MAC地址采用冒分十进制来表示,比如00:1A:3F:F1:4C:C6
。冒分十六进制总共需要 17
个字节。 如果算上结尾处的