网络协议
我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络;手机自动获取网络配置,使用的是 DHCP 协议,获取配置后手机才能正常通信。这时手机已经连入局域网,可以访问局域网内的设备和资源,但还不能使用互联网应用,例如:微信、抖音等。想要访问互联网,还需要在手机的上联网络设备上实现相关协议,即在无线路由器上配置 NAT、 PPPOE 等功能,再通过运营商提供的互联网线路把局域网接入到互联网中,手机就可以上网玩微信、刷抖音了。
局域网 :小范围内的私有网络,一个家庭内的网络、一个公司内的网络、一个校园内的网络都属于局域网。
广域网:把不同地域的局域网互相连接起来的网络。运营商搭建广域网实现跨区域的网络互连。
互联网:互联全世界的网络。互联网是一个开放、互联的网络计算机网络通信技术的认识,不属于任何个人和任何机构,接入互联网后可以和互联网的任何一台主机进行通信。
简单来说,就是手机、无线路由器等设备通过多种网络协议实现通信。网络协议就是为了通信各方能够互相交流而定义的标准或规则,设备只要遵循相同的网络协议就能够实现通信。那网络协议又是谁规定的呢? ISO 制定了一个国际标准 OSI , 其中的 OSI 参考模型常被用于网络协议的制定。
OSI 参考模型
OSI 参考模型将网络协议提供的服务分成 7 层,并定义每一层的服务内容,实现每一层服务的是协议,协议的具体内容是规则。上下层之间通过接口进行交互,同一层之间通过协议进行交互。 OSI 参考模型只对各层的服务做了粗略的界定,并没有对协议进行详细的定义,但是许多协议都对应了 7 个分层的某一层。所以要了解网络,首先要了解 OSI 参考模型。
应用层
OSI参考模型的第 7 层(最高层)。应用程序和网络之间的接口,直接向用户提供服务。应用层协议有电子邮件、远程登录等协议。
表示层
OSI参考模型的第 6 层。负责数据格式的互相转换,如编码、数据格式转换和加密解密等。保证一个系统应用层发出的信息可被另一系统的应用层读出。
会话层
OSI参考模型的第 5 层。主要是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话。
传输层
OSI参考模型的第 4 层。为上层协议提供通信主机间的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。只在通信主机上处理,不需要在路由器上处理。
网络层
OSI参考模型的第 3 层。在网络上将数据传输到目的地址,主要负责寻址和路由选择。
数据链路层
OSI参考模型的第 2 层。负责物理层面上两个互连主机间的通信传输,将由 0 、 1 组成的比特流划分成数据帧传输给对端,即数据帧的生成与接收。通信传输实际上是通过物理的传输介质实现的。 数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。
网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址计算机网络通信技术的认识 36张图详解网络基础知识, 而数据链路层则只负责发送一个分段内的数据。
物理层
OSI参考模型的第 1 层(最底层)。负责逻辑信号(比特流)与物理信号(电信号、光信号)之间的互相转换,通过传输介质为数据链路层提供物理连接。
TCP/IP 参考模型
由于 OSI 参考模型把服务划得过于琐碎,先定义参考模型再定义协议,有点理想化。 TCP/IP 模型则正好相反,通过已有的协议归纳总结出来的模型,成为业界的实际网络协议标准。
TCP/IP 是有由 IETF 建议、推进其标准化的一种协议,是 IP 、 TCP 、 HTTP 等协议的集合。TCP/IP 是为使用互联网而开发制定的协议族,所以互联网的协议就是 TCP/IP 。
先介绍下 TCP/IP 与 OSI 分层之间的对应关系,以及 TCP/IP 每层的主要协议。
网络接入层
TCP/IP 是以 OSI 参考模型的物理层和数据链路层的功能是透明的为前提制定的,并未对这两层进行定义,所以可以把物理层和数据链路层合并称为网络接入层。网络接入层是对网络介质的管理,定义如何使用网络来传送数据。但是在通信过程中这两层起到的作用不一样,所以也有把物理层和数据链路层分别称为硬件、网络接口层。 TCP/IP 分为四层或者五层都可以,只要能理解其中的原理即可。
设备之间通过物理的传输介质互连, 而互连的设备之间使用 MAC 地址实现数据传输。采用 MAC 地址,目的是为了识别连接到同一个传输介质上的设备。
网络层
相当于 OSI 模型中的第 3 层网络层,使用 IP 协议。 IP 协议基于 IP 地址转发分包数据,作用是将数据包从源地址发送到目的地址。
TCP/IP 分层中的网络层与传输层的功能通常由操作系统提供。 路由器就是通过网络层实现转发数据包的功能。
网络传输中,每个节点会根据数据的地址信息,来判断该报文应该由哪个网卡发送出去。各个地址会参考一个发出接口列表, MAC 寻址中所参考的这张表叫做 MAC 地址转发表,而 IP 寻址中所参考的叫做路由控制表。 MAC 地址转发表根据自学自动生成。 路由控制表则根据路由协议自动生成。 MAC 地址转发表中所记录的是实际的 MAC 地址本身,而路由表中记录的 IP 地址则是集中了之后的网络号(即网络号与子网掩码)。
传输层
相当于 OSI 模型中的第 4 层传输层,主要功能就是让应用程序之间互相通信,通过端口号识别应用程序,使用的协议有面向连接的 TCP 协议和面向无连接的 UDP 协议。
面向连接是在发送数据之前, 在收发主机之间连接一条逻辑通信链路。好比平常打电话,输入完对方电话号码拨出之后,只有对方接通电话才能真正通话,通话结束后将电话机扣上就如同切断电源。
面向无连接不要求建立和断开连接。发送端可于任何时候自由发送数据。如同去寄信,不需要确认收件人信息是否真实存在,也不需要确认收件人是否能收到信件,只要有个寄件地址就可以寄信了。
应用层
相当于 OSI 模型中的第 5 - 7 层的集合,不仅要实现 OSI 模型应用层的功能,还要实现会话层和表示层的功能。 HTTP 、 POP3 、 、 SSH 、 FTP 、 SNMP都是应用层协议。
TCP/IP 应用的架构绝大多数属于客户端/服务端模型。 提供服务的程序叫服务端, 接受服务的程序叫客户端。客户端可以随时发送请求给服务端。
封装与解封装
通常,为协议提供的信息为包头部,所要发送的内容为数据。每个分层中,都会对所发送的数据附加一个头部,在这个头部中包含了该层必要的信息, 如发送的目标地址以及协议相关信息。在下一层的角度看,从上一分层收到的包全部都被认为是本层的数据。
数据发送前,按照参考模型从上到下,在数据经过每一层时,添加协议报文头部信息,这个过程叫封装。
数据接收后,按照参考模型从下到上,在数据经过每一层时,去掉协议头部信息,这个过程叫解封装。
经过传输层协议封装后的数据称为段,经过网络层协议封装后的数据称为包,经过数据链路层协议封装后的数据称为帧,物理层传输的数据为比特。
TCP/IP 通信中使用 MAC 地址、 IP 地址、端口号等信息作为地址标识。甚至在应用层中,可以将电子邮件地址作为网络通信的地址。
实际数据传输举例
实际生活中计算机网络通信技术的认识,互联网是使用的 TCP/IP 协议进行网络连接的。我们以访问网站为例,看看网络是如何进行通信的。
发送数据包