在 Java 面试里,计算机网络知识是高频考点,今天就来盘点那些最容易被问到的计算机网络面试题,帮你轻松应对面试,也方便和朋友们一起探讨学习。
一、HTTP 和 HTTPS 的区别
1. 面试题呈现
HTTP 和 HTTPS 有什么区别?在实际应用中该如何选择?
2. 答案解析
- 传输协议:HTTP 是超文本传输协议,以明文形式传输数据;HTTPS 是 HTTP 加上 SSL/TLS 协议进行加密传输,数据在传输过程中被加密,保证了数据的安全性,防止被窃取或篡改。
- 端口号:HTTP 默认使用 80 端口 ,HTTPS 默认使用 443 端口。
- 证书:HTTPS 需要 CA 证书来验证服务器的身份,确保通信的服务器是真实可靠的,而 HTTP 不需要。
- 应用场景选择:对于一般的信息展示类网站,HTTP 基本能满足需求;但对于涉及用户敏感信息,如登录、支付等场景,必须使用 HTTPS 来保障数据安全。
二、TCP 和 UDP 的区别
1. 面试题呈现
请说一下 TCP 和 UDP 的区别,在哪些场景下分别使用它们?
2. 答案解析
- 连接方式:TCP 是面向连接的协议,在传输数据前需要先建立连接,数据传输完成后释放连接,就像打电话,先拨号建立连接,通话结束后挂断;UDP 是无连接的协议,直接发送数据,无需建立连接,类似发短信,直接发送内容。
- 可靠性:TCP 提供可靠的传输,通过序列号、确认号、重传机制等保证数据按序到达且不丢失;UDP 不保证数据的可靠传输,可能会出现丢包、乱序等情况。
- 传输效率:TCP 因为要保证可靠性,有额外的开销,传输效率相对较低;UDP 没有这些复杂的机制,传输效率高,速度快。
- 应用场景:TCP 适用于对数据准确性要求高的场景,如文件传输、HTTP/HTTPS 协议等;UDP 适用于对实时性要求高、能容忍少量丢包的场景,像视频直播、音频通话、DNS 解析等。
三、三次握手和四次挥手
1. 面试题呈现
详细说一下 TCP 三次握手和四次挥手的过程。
2. 答案解析
- 三次握手:
-
- 第一次握手:客户端向服务器发送一个 SYN(同步序列编号)包,请求建立连接,此时客户端进入 SYN_SENT 状态。
-
- 第二次握手:服务器收到客户端的 SYN 包后,向客户端发送一个 SYN + ACK 包,其中 SYN 是对客户端 SYN 的响应,ACK 是确认收到客户端的 SYN,此时服务器进入 SYN_RCVD 状态。
-
- 第三次握手:客户端收到服务器的 SYN + ACK 包后,向服务器发送一个 ACK 包,确认收到服务器的 SYN + ACK,此时客户端和服务器都进入 ESTABLISHED 状态,连接建立成功。
- 四次挥手:
-
- 第一次挥手:客户端向服务器发送一个 FIN(结束标志)包,请求关闭连接,此时客户端进入 FIN_WAIT_1 状态。
-
- 第二次挥手:服务器收到客户端的 FIN 包后,向客户端发送一个 ACK 包,确认收到客户端的 FIN,此时服务器进入 CLOSE_WAIT 状态,客户端收到 ACK 后进入 FIN_WAIT_2 状态。
-
- 第三次挥手:服务器处理完数据后,向客户端发送一个 FIN 包,请求关闭连接,此时服务器进入 LAST_ACK 状态。
-
- 第四次挥手:客户端收到服务器的 FIN 包后,向服务器发送一个 ACK 包,确认收到服务器的 FIN,此时服务器进入 CLOSED 状态,客户端等待一段时间后也进入 CLOSED 状态,连接关闭。
3. 大白话版:
三次握手
假如 A 和 B 打电话:
- 第一次握手:A 拨 B 的号码,说 “能听到我说话不” ,等着 B 回应。
- 第二次握手:B 接电话,说 “能听到,你能听到我不” ,B 也等着 A 回应。
- 第三次握手:A 说 “能听到,开始聊” ,双方确认可以正常交流,开始通话。
四次挥手
两人通话结束:
- 第一次挥手:A 说 “说完啦,准备挂电话” ,等 B 回应。
- 第二次挥手:B 说 “知道了,我还没说完,先别挂” ,A 等 B 说能挂电话。
- 第三次挥手:B 说 “我说完了,准备挂” ,等 A 确认。
- 第四次挥手:A 说 “行,挂吧” ,A 先挂,B 收到后也挂,结束通话 。
四、cookie和session
1. 面试题呈现
请简述cookie和session,并说明它们之间的区别。
2. 答案解析
五、http状态码
1. 面试题呈现
你知道http有哪些状态码吗?
2. 答案解析
- 1xx:信息性状态码,如 100 Continue,表示服务器已收到请求的第一部分,正在等待其余部分。
- 2xx:成功状态码,如 200 OK,表示请求成功。
- 3xx:重定向状态码,如 301 Moved Permanently,表示资源已永久移动到新的 URL。
- 4xx:客户端错误状态码,如 404 Not Found,表示请求的资源不存在。
- 5xx:服务器错误状态码,如 500 Internal Server Error,表示服务器内部发生错误。
五、总结
以上都是我亲身被问到的一些真题,肯定还远远不够,后续会继续补充。希望博客能助力大家在面试过程中过关斩将,成功上岸!有任何疑问,欢迎随时交流。