网络协议

45 阅读9分钟

什么是网络

网络是一个区域计算机的集合,这个区域的计算机都可以相互的通信。

局域网

image.png

两台电脑通过网线相连,这两台电脑可以随意的相互通信,这就是一个简易的局网络。

随着要加入的计算机越来越多,比如一个办公大楼的计算机都需要接入这个网络,如果再依次让它们网线相连,会变得非常复杂且庞大,这样子是不合理的。

我们使用交换器来解决这个问题,想要接入这个网络,将网线插入交换机即可。

![image.png](p1-juejin.byteimg.com/tos-cn-i-k3…?

多台电脑通过链接一个交换机来相互通信。

image.png

一个交换机接口有限,有时候不够用,就需要多台交换机来互相链接提供服务。

image.png

--此图摘自LAN、WAN、WLAN的区别_360新知 (so.com)

这样子就形成了一个局域网,覆盖范围为通常为一栋大楼或者一个学校,比如我们的校园网就是一个局域网。

局域网内的设备只能在局域网内相互通信,那如何去访问其他网络的设备。比如我们链接校园网去刷doyin B站,

B站 doyin的服务器设备可不在校园网的覆盖范围内。

广域网

回到我们之前的问题,因为doyin和B站的服务器在公网内,所以需要接入公网,来扩大访问范围。

image.png

--图片摘自LAN、WAN、WLAN的区别_360新知 (so.com)

广域网是一种跨越大的、地域性的计算机网络的集合。通常跨越省、市,甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网。

网络协议

网络协议用来规定在网络内的设备如何的进行通信。

假设有两个不同的局域网a和b,a使用一种协议进行通信,b使用另一种协议通信。那a和b想要相互通信,就必须规范协议,就比如有一个聊天室,里面的人都来自世界各地,使用语言都不相同,如果想要大家都无障碍的沟通,那就必须要求大家都学会所有的语言,这肯定是不合理的,所以规范大家都使用英语,这样依赖所有人都只需要学习英语一门语言。

image.png

--摘自计算机网络基础知识总结 | 菜鸟教程 (runoob.com)

ois参考模型

ISO 制定了一套标准用来制作网络协议。

image.png

-- 摘自36张图详解网络基础知识 - 知乎 (zhihu.com)

ISO模型将计算机之间不同的通信方式分为了七层,为每一层都制定了一套标准,协议是这套标准的实现。

实现了那一套标准,那就属于那一层的协议。

tcp/ip 4层/五层模型

tcp/ip模型将 ois模型简化为了4层或者五层

image.png

这里我们详细介绍tcp/ip的五层模型

物理层

一台机器和另一台机器通信需要干什么?当然是要将两台机器连接起来,我们可以使用光缆,电缆,双绞线去把它们连接起来。

物理层就是负责如何将两台机器连接起来,如何使得机器可以传输高低电压信号来表示0和1。

数据链路层

如果我们在电缆上传输的0,1信号毫无规章,计算机是无法识别我们的信号的,必须要有一套规范来约束。 比如多少个电信号为一组,每一组信号的标识是什么。就如同白话文之中的逗号和句号一般,用于理解阅读。

如今使用最为广泛的数据链路层规范就是以太网协议。

以太网协议

以太网协议规定一组电信号构成一个数据包,数据包称为帧,每一帧由标头(head)和数据(data)两部分组成。

image.png

帧的大小一般为64 – 1518 个字节,如果要传输的数据很大,需要分帧进行传输。标头大小固定,便于计算机去识别标头,包含有发送者和接收者的信息,数据部分就是真正想要发送给接收者的数据了。

我们知道,在局域网未接入公网之前计算机是没有IP地址分配的,那如何识别每一台计算机并且准确发送帧又成了一个问题。

于是mac地址就出现了。

mac地址

连接网络的每一台计算机都需要有一个网卡,每个网卡都有一个唯一的标识--mac地址,由48位二进制数字构成,与ip不同mac地址在出厂的时候就内都烧录在内,在任何网络内不会变化,也成为物理地址。

在局域网内,计算机就是通过mac地址来进行相互通信。

广播

广播

image.png

假如a知道了b的mac地址,想要向b发送数据,但是无法精确的知道b在哪条路线上,因为a不仅连着b还连着c和d还有e,为了解决这个问题,广播就出现了。

a会往所有的路线都发送数据包,所有的计算机都会收到这个数据包,数据包内标头内有接收者的mac地址,bcde收到后会跟自己的mac地址进行比对,比对成功则接收,不成功则不接受,这就是广播。

就如同上课老师点名一样,所有的学生都会听见,但只有名字对应的学生才会站起来签到。

那a是如何知道b的mac地址的呢,这个通过ARP协议获取,这个放在后面与IP协议一起说明。

网络层

上面我们知道了在局域网内计算机是如何通信的,知道了mac地址就可以通过广播进行数据的传输。假如我们的局域网接入了公网,要向公网的一台计算机发数据包。如果还是采用广播的方式来,那就得向公网的所有计算机都发送数据包,这样子是非常不合理的。网络层就是为了解决寻址的问题,IP协议孕育而生。

IP协议

IP协议有IPv4和IPv6两种,我们这里只讨论ipv4。

IP由32位二进制数组成,一般把它们表示为4位10进制数字,范围为0.0.0.0~255.255.255.255。

ip地址被分为两部分,前面一部分为网络部分,表示这台机器所处的网络,后面为主机部分,由该网络的代理动态分配(路由器)。

IP又被分为公网ip和局域网IP 局域网IP的范围为

(1)10.0.0.0 到 10.255.255.255

(2)192.168.0.0 到192.168.255.255

(3)172.16.0.0 到172.31.255.255

其他的都是公网IP。

只要一个局域网接入公网,这个局域网就会被分配到一个网段(对应IP的网络部分),里面的每一台设备都会被分配到一个局域网IP(其实就是分配主机名)。比如我们学校的校园网被分配到一个192.168.43.0的网段,那这个校园网可以容纳255台设备,范围为192.168.43.0~192.168.43.255。

局域网IP只能被同局域网内的设备访问,而公网IP可以被所有的设备访问。

假如两台设备IP的网络部分相同,那他们就处于同一个局域网内。但问题是如何知道它们的网络部分的长度呢。这就有了子网掩码,子网掩码也是32位二进制数字组成,不过它和IP不同的是它的每一位都只由0和1组成。1所占位代表网络部分,0所占位代表主机部分。只要知道了两台设备的IP和子网掩码,就可以知道这两台设备是否处于同一网络。

子网掩码在网段分配时就确定了,公网Ip是没有子网掩码的。

ARP协议

一台设备在向另一台设备通信之前会使密码网掩码和IP判断是否处于同一网段,处于则会通过arp协议去获取该设备的mac地址。

arp协议其实也是通过广播来发送一个包含目标设备的IP的数据包,所有的设备拿到数据包和跟自己的IP进行比对,如果比对成功则返回自己的mac地址。

image.png

--摘自(99+ 封私信 / 44 条消息) IP地址和MAC地址的区别和联系是什么? - 知乎 (zhihu.com)

如果两台设备网段不相同,则会把数据包交给网关处理。

网络层的作用其实就是寻址,找寻目标设备在哪里

传输层

在前三层的协助下,我们已经将数据包从计算机a传输到b中,但是b这台设备里面有各种各样的进程,我们如何知道到底是哪个进程需要这个数据。

我们知道每一台设备是都有许多的端口,一个进程需要运行,必须占用一个端口,端口的出现解决了这个问题,我们在传输数据包的时候还得去指定一个端口号,以便于特定的进程来接收数据。

传输层的作用就是建立端口到端口的链接。有了IP和端口我们就能精确的传输数据包了。

最经典的两个传输层协议就是tcp和udp协议,一个进行可靠传输,一个不可靠传输。

tcp协议运用最为广泛。

应用层

应用层是最接近用户的一层协议,是用户可以感知的协议。

我们传输的数据是五花八门的,有图片,文字,音频,视频。目标设备如果无法知道你传输的是什么格式数据,它是无法解析的,必须在数据包指明数据的格式。

最常见的应用层协议就是http协议,

http请求状态栏规定了用户应该使用的请求方式和请求url,在请求头中写入了数据格式和字符编码等消息,在请求正文(请求体)内写入具体数据。

http响应状态栏有本次请求的状态码,协议,和文本描述,在响应正文(响应体)内写入具体响应数据。

具体http详解可以看这篇文章--深入理解HTTP协议 - 知乎 (zhihu.com),这里不做过多概述。