在Linux进程与进程间通信中,学到以下进程间通信方式:管道、信号、共享内存、消息队列、信号量。但是这些通信方式限于本地计算机,如何解决不同计算机中进程间通信的问题?这就需要学习网络。
Linux网络主要基础知识如下:
1. TCP/IP协议体系结构
2. TCP/IP协议
3. TCP和UDP协议
1. TCP/IP协议体系结构,该体系结构分四层,每层常见的协议列举如下:
注:FTP文件传输协议,PING命令用的是ICMP协议,以太网应用于局域网,令牌网应用于路由器之间,FDDI是光缆上发送数据的一组协议,TCP/IP协议指的是这个体系结构中所有的协议。
TCP/IP为什么要分四层?因为为了好管理不同计算机之间的数据通信,怎么样的好管理?需要自己慢慢体会,不需要着急一下子体悟到。
2. TCP/IP协议
1)TCP/IP协议通信模型
2)数据的封装与传递过程
注1:数据的封装过程就是不断给数据增加协议身份信息的过程,比如在应用层,我利用ftp协议,则在数据前加ftp身份信息。数据的解封过程就是不断给数据去掉协议身份信息的过程最终得到真实数据的过程。
注2:在数据封装的过程中,从应用层->传输层->网络层->网络接口和物理层一步一步封装,有一种黑客技术能够在网络层中将IP头改为包含其他IP地址的IP头,从而实现数据窃取。
3. TCP和UDP协议
1)TCP协议特点
TCP(传输控制协议)向应用层提供可靠的面向链接的数据流传输服务。它能提供可靠性通信(数据无误、数据无丢失、数据无失序、数据无重复到达)。
适用情况:
a)适合于对传输质量高,以及传输大量数据的通信
b)需要传输可靠数据
2) UDP协议特点
UDP(用户数据报协议)面向无连接,不保证可靠性传输,但是传输数据有一定的实时性,因为不保证数据的可靠性,所以传输数据的效率比TCP高。
适用情况:
a)发送小数据
b)在接收到数据,给出应答较困难的网络中。
c)适合于广播/组播
d)流媒体、VOD、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输