网络
1:三次握手和四次挥手
- 客户端发送带有SYN标志的数据包,一次握手——服务器
- 服务端发送带有 SYN/ACK标志的数据包,二次握手——客户端
- 客户端发送带有ACK标志的数据包,三次握手——服务端
- 为什么要三次
- 第一次,client什么都不能确定,server确定了对方发送正常,自己接受正常
- 第二次,client确定了:自己发送,接受正常,对方两项也正常,server确认了对方发送正常,自己接受正常
- 第三次:client确定了自己和他都正常,server也确定了
- 为什么传回了ACK,还要SYN
- 告诉客户端,我收到的消息确实是你发送过来的
- 四次挥手
- 客户端发送一个FIN,用来关闭客户端到服务器的数据传送
- 服务区收到了这个FIN,发回一个ACK,确定序号为收到的序号+1,和SYN一样,FIN将占用一个序号
- 服务器关闭与客户端的连接,发送一个FIN给客户端
- 客户端发送ACK报文确定,并将确认序号设置为收到的序号+1
- 客户端告诉服务器,我要关闭了
- 服务器收到了这个消息,说我收到了
- 服务器说,我关闭了
- 客户端说,我也关闭了
- A:我没啥说的了
- B:我知道了
- B:我说完了
- A:我也知道了
2:可靠传输的保证
- 校验和
- 流量控制
- 拥塞控制
- ARQ协议
- 超时重传
3:进程之间的通信方式
- 管道/匿名管道,具有血缘关系的父子进程后者兄弟之间的通信
- 有名管道:先进先出,以磁盘文件的形式存在
- 信号:singal,通知某个进程某个事情已经发生
- 消息队列:先进先出的原则,消息队列实现消息的随机查询,
- 信号量:是一个计数器,多进程对共享数据的访问
- 共享内存:多个进程可以访问同一块的内存空间,互斥锁和信号量
- 套接字:客户端和服务器之间通过网络进行通信。
3:线程之间的同步方式
- 互斥量:mutex
- 信号量:semaphore
- 时间:wait/ notify