面试题收集-网络协议相关

语言: CN / TW / HK

TCP是请求和响应建立长链接进行传输, UDP是数据包进行传输,两者的区别也是基于此。

TCP:有连接的、稳定的、有序的、占用资源大的

UDP:无连接的、可能丢包的、乱序的、占用资源小的

注:Socket是TCP协议,Http也是TCP协议

2 三次握手是什么? 四次挥手是什么?

三次握手是服务器建立连接的方式,四次挥手是服务器关闭连接的方式。

三次握手

第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。(A通知B,A准备好了)

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;(B告诉A,他知道A准备好了,B自己也准备好了)

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。(A告诉B,A知道了B也准备好了)

四次挥手

第一次挥手:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。(A通知B,我要断开连接了)

第二次挥手:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,在这之前还需要接受服务器发送的最后的数据)。(B通知A我知道你要断开连接了)

第三次挥手:服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。(B通知A,所有的收尾工作都做完了,可以断开连接了)

第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。(A通知B,没有意外发生的话,我要2MSL之后要开始断开连接了)

关于三次握手四次挥手的其他面试题,见下面的参考连接

参考连接: TCP的三次握手与四次挥手理解及面试题

3 socket 和 websocket 的区别

WebSocket是Http协议的升级版,Http只能支持客户端主动发起请求,是单向通信协议

WebSocket是双向通信协议,可以双向发起请求,替代轮询,但是WebSocket本质上还是也给类Http协议,是短连接。

而Socket本质上是长链接,他们的区别也就是短连接和长连接的区别了

4 HTTP 与 HTTPS 的区别

HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

HTTP 与 HTTPS 的区别

1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

参考资料: HTTP和HTTPS的区别

5 HTTPS的通讯原理

HTTPS是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。通过SSL 握手协议通讯双方进行身份认证、协商加密算法、交换加密密钥,通过SSL 记录协议为高层协议提供数据封装、压缩、加密等基本功能的支持。通过这样的方式,来实现身份校验的安全性、数据保密性、数据完整性。

6 加密算法简单介绍

对称式加密技术

对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。

非对称式加密技术

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别人窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。

7常见的加密算法

1 DES算法对称算法

数据加密标准,速度较快,适用于加密大量数据的场合;

2 RSA算法非对称加密算法

首先, 找出三个数, p, q, r,

其中 p, q 是两个不相同的质数, r 是与 (p-1)(q-1) 互为质数的数。

p, q, r 这三个数便是 private key。

接着, 找出 m, 使得 rm == 1 mod (p-1)(q-1)…..

这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了。

再来, 计算 n = pq…….

m, n 这两个数便是 public key

3 AES算法对称算法

是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法。依靠大算力超长时间才能破解