计算机网络常见面试题


(根据自己的面试经验总结的知识点,内容比较浅显,有问题的地方欢迎指正呀)

1、Http和Https的区别

Http协议运行在TCP上,明文传输,客户端与服务端都无法验证对方的身份;Https是被SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,就是添加了加密和认证机制的HTTP。二者之间存在如下不同:

  1. 端口不同:HTTP是80,Https是443
  2. 资源消耗:Https显然多一些
  3. 开销:Https通信需要证书,而证书一般需要向认证机构购买;
  4. Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制

2、对称加密和非对称加密

  1. 对称加密是指加密和解密使用同一种密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发送给对方;
  2. 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以对外发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接受到加密信息后,使用自己的私钥进行解密。
    由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
    Linux免密授权就是采用非对称加密的方式:

在这里插入图片描述

3、三次握手与四次握手

3.1、三次握手过程

(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发送方发送数据时对此进行标记(这个是标记发送的数据的一个代号)
(2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1
(3)标志位:
A)URG:紧急指针(urgent pointer)有效。
B)ACK:确认序号有效。--------------->它为1,ack才有效
C)PSH:接收方应该尽快将这个报文交给应用层。
D)RST:重置连接。
E)SYN:发起一个新连接。
F)FIN:释放一个连接。
在这里插入图片描述
步骤:(这里的x和y代表了随机)
第一次握手: A向B发送了一个序号为x的数据包
SYN=1就是先建立一个新连接,要发送数据的代号(标记)是seq=x(就是序号为x的包),还没有确认信号,所以ACK=0
第二次握手:B接收到A发来的序号为x的数据包,然后向A发送确认消息
SYN=1建立了一个新连接,ack=x+1告诉A,B已经接收到了x的数据包,ACK=1保证ack是有效的,然后B还像A发送了序号为y的数据包
第三次握手:A接收到B发来的消息及数据,知道B已经接收到了x的包,然后根据消息,向B发送x+1的数据包(seq=x+1),
这个时候两个主机已经建立连接,所以不需要再建立新连接,所以不需要SYN,然后发送x+1的数据包即seq=x+1,然后向B发送确认信号,ack=y+1说明已经接收到B的数据,ACK=1说明ack有效

3.2、四次握手过程

TCP连接时是全双工的,因此,每个方向都必须单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接
收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。
在这里插入图片描述
在这里插入图片描述
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

3.3、为什么TCP链接需要三次握手,两次不可以吗,为什么?

为了防止已失效的链接请求报文突然又传到了服务端,因而产生错误。
客户端发送的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。服务端以为是Client发出的新的链接请求,于是就向客户端发送确认数据包,同意建立链接。如果采用两次握手的话,Server不需要收到客户端的确认,只需要发送确认包就可以建立连接了。由于client并未建立连接,所以不会理睬Server发送的确认,也不会与Server通信;而Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用三次握手,由于Server没有收到客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。

1)客户端进程发出连接释放报文,并且停止发送数据

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值