互联网协议群(TCP/IP):多路复用是怎么回事?
协议的分层
对于多数的应用和用户而言,使用互联网的一个基本要求就是数据可以无损地到达。用户通过应用进行网络通信,应用启动之后变成了进程。因此,所有网络通信的本质目标就是进程间通信。
世界上有很多进程需要通信,要找到一种通用的,每个进程都能认可和接受的通信方式,就是协议。
应用层
从分层架构上看,应用工作在应用层。应用的功能,都在应用层实现。所以应用层很好理解,说的就是应用本身。当两个应用需要通信的时候,应用就调用传输层进行通信。
从构架上说,应用层只专注于为用户提供价值即可,没有必要思考数据如何传输。
传输层
为应用层提供网络支持的,就是传输层。
传输层控制协议是目前世界上应用最广泛的传输层协议。传输层为应用层提供通信能力。比如浏览器想访问服务器,浏览器程序就会调用传输层程序;Web服务接受浏览器的请求,Web服务程序就会调用传输层程序接受数据。
考虑到应用需要传输的数据可能非常大,直接传输不好控制。传输层需要将数据切块,即使一个分块丢了、损坏了,可以重新发一个分块,而不用重新发送整体。
TCP协议中,把每个分块称为一个TCP段
网络层
问题:传输层到底负不负责将数据从一个设备传输到另一个设备(主机到主机)
从一个主机到另一个主机传输数据的网络环境是非常复杂的。中间会通过各种各样的线路。
核心的设计原则是,不希望一层协议处理太多的问题。传输层作为应用间数据传输的媒介,服务好应用即可。对应用层而言,传输层帮助实现应用到应用的通信。而实际的传输功能交给传输层的下一层,也就是网络层。
IP协议是目前起到统治地位的网络协议。IP协议会将传输层的封包再次切分,得到IP封包。网络层负责实际将数据从一台主机传输到另一台主机,因此网络层需要区分主机的编号。
数据链路层
考虑到现实的情况,网络并不是一个完整的统一体。比如一个基站覆盖的周边就会形成一个网络。一个家庭的所有设备,一个公司的所有设备也会形成一个网络。
而数据一旦需要跨网络传输,就需要有一个设备同时在两个网络当中。数据链路层为网络层提供链路级别传输的支持。
物理层
当数据在实际的设备间传递时,可能会用电线、电缆、光纤、卫星、无线等各种通信手段。还需要一层将光电信号、设备差异封装起来,为数据链路提供二进制传输的服务。这这就是物理层。
互联网协议可以分成五层
多路复用
在上述的分层模型当中,一台机器的应用可以有很多。但是实际的出口设备,如网卡、网线通常只有一份。因此这里需要用到一个叫做多路复用的技术。多路复用,就是多个信号,复用一个通道。
多路复用的意义
在工作当中,经常会使用到多路复用的能力。多路复用让多个信号(例如:请求/返回等)共用一个通道,那么在这个信道上,信息密度就会增加。
在密度增加的同时,通过并行发送信号的方式,可以减少阻塞。如应用层的HTTP协议,浏览器打开的时候就会往服务器发送很多请求,多个请求混合在一起,复用相同的连接,数据紧密且互相隔离。同理,服务之间的远程调用、消息队列,这些也经常用到多路复用。