问:TCP和UDP的区别
答:TCP是基于连接的UDP无连接;TCP基于数据流UDP基于报文;TCP具备可靠性、确认应答、重传等UDP不可靠不具备;TCP具备流量控制、拥塞控制等机制UDP不具备;TCP传输效率不如UDP且占用资源相对多一些
问:TCP的三次握手和四次挥手
答:
- 三次握手:客户端发起连接,服务端响应确认,客户端再确认后建立连接
- 三次握手的原因:如果只有两次的话, 那么如果客户端发起连接请求网络延迟,服务端很久之后收到并响应,那么这就直接建立连接了,但实际上这个连接是不需要的。
- 四次挥手:客户端服务端都可以主动发起断开连接A,被动B。A发起断开连接的请求FIN,B响应确认;B停止数据传输后,发送FIN,;A接收到FIN后进入FIN_WAIT状态,并响应确认后连接断开。
- 四次挥手的原因:TCP全双工,被动方也需要停止数据传输后再同时断开连接。
问:请简述TCP窗口机制
答:窗口是一种控制传输流量的方式。有一个WIN字段,代表窗口大小,客户端初始会有一个窗口大小,然后这个窗口大小的就根据服务端实际缓冲区剩余空闲容量来决定。在窗口外的数据是不允许发送或者确认发送成功的,窗口内的数据有待发送数据和发送后未确认数据,当客户端收到服务端的ACK响应后,窗口向右滑动,并调整窗口大小,窗口内的数据可以批量确认不需要每条都确认。当服务端返回窗口大小为0,说明它无法再接收数据了,客户端也停止发送数据,然后客户端会定期发送探测报文获取最新的窗口大小,当服务端响应窗口大小大于0则数据继续发送。
问:什么是快速重传机制
答:当客户端连续收到服务端相同的ACK3次时,就触发重传
问:请简述TCP的拥塞控制
答:首先拥塞主要是指网络中残留数据太多,造成堵塞。所以拥塞控制做的就是防止过多的数据进入到网络之中。拥塞控制的方式有慢启动、拥塞避免。
- 慢启动:客户端启动时,拥塞窗口,初始为1个段大小。随着服务端响应的ACK增多,拥塞窗口也会增大,客户端每次发送的数据也会越来越多。
- 拥塞避免:当客户端发送数据变多后,就需要有拥塞阈值去限制。在拥塞阈值之前,拥塞窗口大小成指数增长,达到拥塞阈值后成线性增长,降低了增长幅度;当网络出现拥塞、超时等,则拥塞窗口从头开始;
问:请说一下WebSocket协议是做什么的?
答:全双工的双向通信,先建立连接建立后开始双向数据传输,类似于TCP。适合浏览器跟后端实时通信的场景,比如界面上实时播报、界面聊天等。
问:HTTP中GET和POST的区别?
答:(1)语义不同,GET是获取POST是新增;(2) GET参数在URL中,POST的参数在请求体中;
问:Session和Cookie的区别?
答:Session是服务端的,Coookie是浏览器的。
问:HTTP 2.0了解吗? 有什么区别?
答:(1)头部压缩,减少了之前HTTP头部大小,减小了整体报文大小;(2) 二进制分帧:HTTP2基于二进制数据传输不再是文本了,单位是帧,传输通道是流,多个流传输效率高,且帧的解析速度快;(3)多路复用:一个连接中可以有多个流同时传输,实现一个连接处理多个请求,并发能力强。
问:HTTPS的原理、工作流程?
答:首先HTTPS是基于HTTP的,多了一层SSL安全套接字层。解决HTTP明文传输的安全隐患。主要用到了公钥和私钥、CA证书,公钥需要CA证书认证,客户端通过公钥加密私钥给服务端,客户端服务端保存私钥,之后基于私钥加密的密文传输。公钥用RSA非对称加密,私钥用AES对称加密算法