速记Java八股文——网络编程篇

前言

分类汇总 30+ 常见的 网络编程篇 经典后端面试题,并对题目进行了精炼总结,旨在帮助大家高效记忆,在面试中游刃有余,不至于陷入词穷的窘境。

网络编程篇


TCP 和 UDP 的区别?

  • TCP:面向连接,可靠传输,保证顺序,速度较慢。

  • UDP:无连接,不可靠传输,不保证顺序,速度较快。


讲一下 TCP 3次握手,4次挥手的具体过程

三次握手

  1. 客户端发送SYN请求连接,进入SYN_SENT状态。

  2. 服务器回复SYN+ACK确认连接,服务器进入SYN_RCVD状态。

  3. 客户端发送ACK完成连接,客户端和服务器此时都进入ESTABLISHED状态,连接建立成功,可以开始数据传输。

四次挥手
4. 客户端发送FIN(结束)请求关闭。

  1. 服务器回复ACK确认收到。

  2. 服务器发送FIN确认关闭。

  3. 客户端回复ACK完成关闭。


零拷贝是什么?

零拷贝是一种技术,通过减少数据在内核空间和用户空间之间的拷贝次数,提高数据传输效率和减少CPU负载。


什么是流量染色体?

流量染色体是一种网络管理技术,通过对流量进行标记和分类,实现流量的精细化控制和优化。


什么是 TCP 粘包拆包?

TCP粘包拆包是指TCP协议在传输数据时,由于数据包大小和网络状况等原因,导致接收端收到的数据包不完整或多个数据包粘连在一起的现象。


为什么会出现粘包拆包?

  1. 发送端发送数据包过快,接收端处理不及时。

  2. 数据包大小不一致,网络传输时合并或拆分。

  3. TCP协议的流式传输特性,无明确数据包边界。


如何在应用层面解决粘包拆包问题?

  1. 使用固定长度的消息头,包含消息长度。

  2. 使用特殊字符作为消息边界。

  3. 应用层协议设计,如HTTP、MQTT等。


网络传输协议本质和作用是什么?

网络传输协议本质是定义数据在网络中传输的规则和格式,作用是确保数据可靠、有序地传输,支持不同设备和系统间的通信。


HTTP 与 HTTPS 有什么区别?

  • Http传输速度比Https快。

  • Http明文传输,不安全;Https加密传输,安全。

  • HTTP端口80,HTTPS端口443。

  • HTTPS需要SSL/TLS证书。


为什么 HTTPS 安全?

  • 数据加密传输,防止窃听。

  • 身份验证,确保通信双方身份真实。

  • 数据完整性校验,防止篡改。


签名认证算法是怎么实现的?

  1. 发送方使用私钥对数据摘要进行加密生成签名。

  2. 接收方使用公钥解密签名得到数据摘要。

  3. 接收方对收到的数据进行相同算法摘要,对比两个摘要,一致则认证通过。


HTTP 响应头有哪些?

  1. Content-Type: 指定响应体的MIME类型,如text/html、application/json。

  2. Content-Length:响应体的字节长度。

  3. Cache-Control:控制缓存行为,如no-cache、max-age=3600。

  4. Set-Cookie:设置客户端的Cookie。

  5. Location:用于重定向,指定新的URL。

  6. Server:服务器软件信息,如Apache、Nginx。

  7. Date:响应生成的日期和时间。


HTTP 请求头的信息有哪些?

  1. Host:请求的主机名和端口号。

  2. User-Agent:客户端软件信息,如浏览器类型。

  3. Accept:客户端可接受的MIME类型。

  4. Accept-Language:客户端可接受的自然语言。

  5. Accept-Encoding:客户端可接受的编码方式,如gzip。

  6. Connection:控制连接行为,如keep-alive、close。

  7. Cookie:客户端发送的Cookie信息。

  8. Referer:请求的来源URL,用于追踪用户行为。

  9. Authorization:用于HTTP认证,包含用户名和密码。

  10. Content-Type:请求体的MIME类型,如application/json。


说明 Socket 是什么?

Socket 是计算机网络通信的编程接口,用于不同进程间的通信。支持跨平台、双向通信,常用协议有 TCP 和 UDP。


网络模型有哪几层?它们各自的特点是什么?

网络模型主要分为七层 OSI 模型和四层 TCP/IP 模型:

  • OSI 模型:

    • 物理层:传输比特流。
    • 数据链路层:传输帧,提供节点到节点的传输。
    • 网络层:传输数据包,进行路由选择。
    • 传输层:提供端到端的传输,如 TCP 和 UDP。
    • 会话层:管理会话和连接。
    • 表示层:数据格式转换和加密。
    • 应用层:提供应用服务,如 HTTP、FTP。
  • TCP/IP 模型:

    • 网络接口层:对应 OSI 的物理层和数据链路层。
    • 网络层:对应 OSI 的网络层,如 IP。
    • 传输层:对应 OSI 的传输层,如 TCP 和 UDP。
    • 应用层:对应 OSI 的应用层、表示层和会话层,如 HTTP、FTP。

什么是同步?什么是异步?

  • 同步:发送方发送请求后,等待接收方响应,期间发送方阻塞,直到收到响应。

  • 异步:发送方发送请求后,不等待接收方响应,可以继续执行其他操作,接收方响应时通过回调等方式通知发送方。


什么是阻塞?什么是非阻塞?

  • 阻塞:操作未完成时,调用线程被挂起,直到操作完成。

  • 非阻塞:操作未完成时,调用线程不会被挂起,可以继续执行其他操作。


IO模型有几种?分别是什么?

  1. 阻塞 IO:调用者调用后等待数据,数据准备好后复制到用户空间,期间调用者阻塞。

  2. 非阻塞 IO:调用者调用后立即返回,数据准备好后通知调用者,调用者再进行数据复制。

  3. 多路复用 IO:使用 select、poll、epoll 等机制,监控多个文件描述符,一旦某个描述符就绪,通知调用者进行处理。

  4. 信号驱动 IO:调用者注册信号处理函数,数据准备好后发送信号通知调用者。

  5. 异步 IO:调用者发起 IO 操作后立即返回,数据准备好后系统自动完成数据复制并通知调用者。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值