1、为什么需要三次握手
防止已过期的连接再次传到被连接的主机
2、为什么需要四次挥手 / 断开连接时为什么比建立连接多一次
服务端的 ACK 和 FIN 一般都会分开发送,ACK 表示自己收到了客户端的断开请求(但还有数据没传输完),FIN 表示自己传输完了数据。
3、TIME_WAIT 的作用
- 保证客户端发送的最后一个ACK报文能够到达服务器
- 防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失
4、HTTPS的优势
CA证书认证、加密传输
5、HTTPS建立连接流程
在使用HTTPS是需要保证服务端配置正确了对应的安全证书
- 客户端发送请求到服务端
- 服务端返回公钥和证书到客户端
- 客户端接收后会验证证书的安全性,如果通过则会随机生成一个随机数,用公钥对其加密,发送到服务端
- 服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数,随后用这个随机数当做私钥对需要发送的数据进行对称加密
- 客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密并且解析数据呈现结果给客户
- SSL加密建立,开始通信
如下图所示:
6、为什么传输过程中采用对称加密,协商时采用非对称加密
对称加密快
7、进程和线程的区别
- 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
- 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
- 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
- 调度和切换:线程上下文切换比进程上下文切换要快得多。
8、进程间通信方式
管道、消息队列、信号量、共享内存
9、线程间通信方式
消息队列、全局变量
10、linux部分命令
- 查找某个进程(ps aux |grep threadId)
- 杀掉某个进程(kill,参数添加-9表示强制执行)
- 查看某个端口是否被占用(netstat -anp |grep threadId)
- 实时查看进程状态(top)