Java计算机网络面试题
HTTP方法
请求类型 | 描述 |
---|---|
GET | 获取资源 |
POST | 创建新资源 |
PUT | 更新现有资源 |
DELETE | 删除资源 |
PATCH | 部分更新现有资源 |
cookie和session的区别
-
存储位置:
Cookie
在客户端(浏览器),Session
在服务器端。 -
Cookie
占用内存更小,容易暴露,Session
存储容量更大,更安全。
get和post请求的区别
-
get
请求参数写在url
后面,暴露在地址栏,而且url
有长度限制 -
post
请求的参数写在请求体中,没有长度限制 -
传输敏感数据时推荐使用
post
HTTP请求状态码
-
200 OK
:请求成功。 -
301 Moved Permanently
:资源被永久移动到新URI
,应使用新的URI
。 -
302 Found
:资源临时位于不同URI
,应继续使用原URI
发起请求。 -
400 Bad Request
:请求格式错误。 -
401 Unauthorized
:请求需要身份验证。 -
403 Forbidden
:认证成功但权限不足。 -
404 Not Found
:请求的资源不存在。 -
405 Method Not Allowed
:请求方法不允许。 -
500 Internal Server Error
:服务器内部错误 -
502 Bad Gateway
:网关/代理错误,上游服务器无响应
websocket和http的区别
http : 短链接 延迟高,基于请求响应模型,是单向的
websocket : 长连接,延迟低, 基于全双工通信,双向通信
这两个底层都是 tcp 连接
TCP和UDP的区别?
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接(三次握手) | 无连接 |
可靠性 | 可靠传输(确认、重传) | 不可靠传输,可能丢包 |
数据顺序 | 按顺序到达 | 不保证顺序 |
流量控制 | 有(滑动窗口) | 无 |
数据传输方式 | 面向字节流 | 面向报文 |
首部开销 | 大(20~60字节) | 小(8字节) |
传输效率 | 较低 | 较高 |
适用场景 | 要求高,可靠性的场景 | 对实时性要求高、可容忍少量丢包的场景 |
IP网络模型的各层及作用?
TCP/IP
四层模型:
- 应用层:提供应用服务(HTTP/FTP/DNS)。
- 传输层:端到端通信(TCP/UDP)。
- 网络层:IP寻址和路由(IP/ICMP)。
- 链路层:物理传输(以太网/Wi-Fi)。
OSI
七层模型:
- 物理层(比特流传输)
- 数据链路层(MAC寻址)
- 网络层(IP寻址)
- 传输层(端到端连接)
- 会话层(建立/管理会话)
- 表示层(数据格式转换/加密)
- 应用层(用户接口)
输入网址到网页显示,期间发生了什么?
-
DNS 解析:将网址解析为
IP
地址。 -
建立
TCP
连接(三次握手) -
发送
HTTP/HTTPS
请求 -
服务器处理并响应
-
浏览器解析 HTML、CSS、JS 渲染页面
-
建立其他资源连接(图片、JS 等)
CDN 是什么
即内容分发网络,通过将资源缓存到靠近用户的节点上来减少延迟、提高访问速度,降低原服务器压力
HTTPS 加密过程
-
TCP 三次握手建立连接
-
客户端发起 TLS 握手
-
服务端返回 ServerHello、证书、密钥交换内容
-
验证证书 -> 客户端生成 pre‑master secret,用服务器公钥加密并发回
-
双方生成对称密钥,完成 ChangeCipherSpec、Finished 并确认加密开启
-
后续通信用对称密钥进行加密
为什么同时用两种加密算法?
-
非对称加密用于交换对称密钥,确保密钥安全分发
-
对称加密用于后续数据传输,性能高效
TCP 三次握手过程
-
SYN:客户端发起同步请求,发送初始序号
-
SYN+ACK:服务端确认客户端 SYN 并返回自己的 SYN
-
ACK:客户端确认服务器 SYN,连接建立
TCP 四次挥手过程
-
客户端发送 FIN
-
服务端 ACK
-
服务端发送 FIN
-
客户端 ACK,进入 TIME_WAIT 状态,等待对方 ACK 丢失重发
-
为什么要三次握手
-
二次握手有什么问题
-
三次握手有哪些缺陷
-
TCP 是如何控制流量的
-
发送方发送频率过高造成丢包,TCP 是如何解决的
-
HTTPs 为什么要用对称加密+非对称加密,相对于只使用非对称加密有什么好处
-
讲一下 OSI 网络架构
-
HTTP 在哪一层
-
HTTP 报文结构
-
HTTP 首部字段
-
HTTPs 加密在哪一层实现
-
http 是无状态通信,http 的请求方式有哪些,可以自己定义新的请求方式么。
-
socket 通信,以及长连接,分包,连接异常断开的处理。
-
socket 通信模型的使用,AIO 和 NIO。
-
socket 框架 netty 的使用,以及 NIO 的实现原理,为什么是异步非阻塞