一、什么是多路复用和多路分解
在网络上主机与主机之间的通信,实质上是主机上运行的应用进程之间的通信。比如我们两个用电脑或手机实现聊天,就是两个QQ程序(进程)之间的通信。
倘若当你浏览这篇博客的同时,还挂着QQ,还使用ftp下载大文件,这时就有三个网络上的进程与你的主机上的三个进程进行通信,那么系统是怎么样正确地把接收到的数据定位到指定的进程中的呢?也就是说,系统是怎么把从http服务器发送过来的数据(这篇博客的内容)交付到客户端(你打开的这个网页上),而不把这些数据交付到你的QQ上的呢?反过来考虑,系统又是如何精确地把来自各个应用进程的数据发到网络上指定上的服务器上的对应进程的呢?这就是多路分解与多路复用的作用了。
其实当程序要使用网络时,要使用到对应的操作系统内核的操作和网卡设备,所以我们向操作系统申请,然后操作系统会为我们创建一个套接字Socket,并返回这个Socket的ID,以后我们的程序要使用网络资源,只要向这个Socket的编号ID操作即可。而我们的每一个网络通信的进程至少对应着一个Socket。向Socket的ID中写数据,相当于向网络发送数据,向Socket中读数据,相当于从网络中接收数据。而且这些套接字都有唯一标识符——端口号port。
那多路分解和多路复用到底是什么东东呢?
每个运输层的报文段中设置了几个字段&#