引述
- 同一台设备上的进程间通信:管道、消息队列、共享内存、信号。
- 不同设备上的进程间通信:网络通信
应用层
- 应用层只专注与为用户提供应用功能,不用去关心数据是如何传输的。
- 应用层是工作在操作系统中的用户态,传输层及其以下工作在内核态。
传输层
协议:
Tcp协议:可靠的传输协议,通过流量控制、超时重传、拥塞控制等保证了数据包能够可靠地传输给对方。
Udp协议:实时性相对更好、传输效率更高。可以通过QUIC协议实现可靠性,在http3.0应用。
TCP与UDP的区别:
- TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达;UDP尽最大努力交付,即不保证可靠交付
- TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的、没有拥塞控制、即使网络出现拥塞也不会使源主机的发送速率降低
- 每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信
- TCP首部开销20字节;UDP的首部开销小,只有8字节
数据包大小超过MSS(Tcp的最大报文段长度)需要进行分段。
端口:为了将一台设备上的不同应用所接收或者传输的数据区分开,区分的是应用。
网络层
实际的数据传输功能的实现。
IP协议:将传输层的报文作为数据部分,再加上ip包头组装成ip报文,如果ip报文大小超过MTU(以太网中一般为1500字节)就会再次分片。
IP地址:
- 给设备进行编号,保证在大量的设备中,能从一个设备传输到另一个设备,区分的是设备。
- 分为两部分:网络号(负责标识IP地址属于哪个子网)、主机号(负责标识同一子网下的不同主机),通过子网掩码才能算出IP地址的网络号和主机号。
IP地址寻址:先匹配到相同的网络号,才会找对应的主机。告诉我们去往下一个目的地应该朝哪个方向走。更像是导航。
路由:通过算法(最短路劲算法、距离矢量路由算法、链路状态路由算法)实现根据下一个目的地选择路径。更像是方向盘,是中间的过程。
数据链路层
主要包括:封装成帧、透明传输、差错检验 CRC
MAC协议
- 设备跟MAC地址一一对应,每一台设备的网卡都会有一个MAC地址,用来唯一标识设备。
ARP协议
- 通过ARP协议实现对IP地址转化为MAC地址,进而找到设备。
物理层
- 主要是为数据链路层提供二进制的传输服务,(这里http2.0的改进也有将头部和body采用二进制进行传输)