这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
什么是互联网协议
互联网中用户众多,设备众多,不同的用户的可能使用不同的文件类型来储存信息,不同的设备能够识别的电信号信息也不尽相同,所以我们必须制定一系列“公约”来约定通信格式,这些“公约”就是互联网协议(Internet Protocol Suite)。
互联网的层次模型
互联网被分为多个层级,每一层都负责相应的功能,相邻两层之间相互依赖,传递信息。通常常用的分层方法是OSI七层模型,它的七层模型结构主要如下图(引自百度百科)所示:
如上图所示,互联网层中越往上越接近用户,越往下越接近实现硬件,用户仅需要与应用层进行交互便可以获得相应的信息。下面我们自下而上地对互联网模型中的每一层进行介绍。
物理层
信息的传递主要依赖电信号,而不同的设备之间传播电信号可以通过双绞线、光前、无线电波来实现,由于他们是在物理层面上对信息进行传递,所以我们将之称之为物理层。而物理层中也需要各种各样的协议来对电信号的幅值,频率等电气特性进行统一与规定。
数据链路层
当我们的设备同物理层进行了01电信号的交换后,我们还需要知道他之中蕴含的信息,这时我们便需要知道多少电信号是一帧,哪些电信号是用于标识状态,哪些电信号是用于储存信息,这时我们便需要数据链路层协议来对其进行规定。其中目前主要使用的是“以太网”协议,其以“帧”作为一个数据包,其中的每一帧包含标头和数据两部分,标头中记录了发送者、接受者、数据类型等信息,其长度固定位18字节。而数据则是46-1500字节的,因此帧的长度范围是64-1518字节。
所有联网的设备都具有一块网卡,每块网卡中包含一个长度48位二进制数的MAC地址,用于对发出者和接受者唯一表示。
网络层
以太网采用广播的方式发送数据包,这也就意味着当前网络内的所有用户都会收到数据包,这种广播方式的效率较低,而且不同的子网络之间的MAC地址无法通过以太网广播联系,所以我们必须给出一种协议来辨别哪些MAC地址属于同一网络层,并且给与这些MAC地址组成的子网络一个IP地址,IP协议就是负责这些工作的。
IP协议发送的数据称为数据包,他也包含标头和数据两部分,标头长度在20-60字节,整个IP包的长度最大为65535字节。
传输层
有了MAC地址和IP地址,我们便可以在互联网上的人已两台主机上建立通讯,但是同一台设备上可能存在着多个程序来链接互联网并收发数据,因此我们还需要一个参数来规定某一数据包到底由哪一个进程使用,这一数据被我们称之为端口。端口的范围在0-65535之间。传输层协议主要有UDP和TCP两种
UDP实现简单,速度较快,但只管发不管收,可靠性较差
TCP实现复杂,速度较慢,但可以保证消息的准确性
应用层
对收到的数据进行解包主要依赖应用层协议,例如Email、HTTP、FTP等,本次情绪营大项目中我们主要使用HTTP协议。