16、Java 基础硬核复习:网络编程的核心逻辑与面试考点

16、Java 基础硬核复习:网络编程的核心逻辑与面试考点

一、核心知识体系

1. 网络通信三要素:IP、端口号、协议

网络通信需要三个核心要素,缺一不可:

  • IP地址 :设备的唯一标识(如192.168.1.1),Java中通过InetAddress类操作(getByName()通过域名获取IP,getHostAddress()获取IP地址)。
  • 端口号:应用程序的逻辑标识(0-65535),其中0-1023为系统保留端口(如HTTP的80端口),1024以上为用户端口。
  • 网络协议:数据传输的规则(如TCP、UDP),规定数据格式、传输顺序等。

2. TCP/IP四层模型:分层设计的关键

TCP/IP四层模型是网络通信的基础架构,各层独立,便于维护:

  • 应用层:HTTP、FTP等协议,处理用户请求;
  • 传输层:TCP(可靠传输)、UDP(不可靠传输),负责端到端通信;
  • 网络层:IP协议,负责路由选择;
  • 物理+数据链路层 :物理传输(如以太网、Wi-Fi)。
    我们编程主要关注传输层 (TCP/UDP)和应用层(HTTP等)。

3. 两大传输协议:TCP vs UDP

(1)TCP(传输控制协议)
  • 特点:面向连接(需三次握手)、可靠传输(确认应答、重传机制)、基于字节流;
  • 应用场景:文件传输、邮件发送、浏览网页(对可靠性要求高)。
(2)UDP(用户数据报协议)
  • 特点:无连接(无需握手)、不可靠(丢包不负责)、速度快、基于数据报;
  • 应用场景:视频会议、在线直播、网络游戏(对实时性要求高,允许少量丢包)。

4. Socket编程实战:TCP与UDP

(1)TCP编程
  • 客户端 :Socket(ip, port)连接服务端,通过OutputStream发送数据,InputStream接收数据;
  • 服务端 :ServerSocket(port)监听端口,accept()阻塞等待客户端连接,通过InputStream/OutputStream读写数据;
  • 案例:文件传输(客户端上传文件到服务端)、聊天室(需多线程处理多个客户端)。
(2)UDP编程
  • 核心类 :DatagramSocket(发送/接收端)、DatagramPacket(数据报包);
  • 特点:无需连接,直接发送数据报,适合实时通信(如QQ)。

二、高频面试考点(必须掌握)

1. TCP与UDP的区别(🌟必考Top 1)

特性 TCP(传输控制协议) UDP(用户数据报协议)
连接性 面向连接(三次握手) 无连接(无需握手)
可靠性 可靠(确认应答、重传) 不可靠(丢包不负责)
速度 慢(需建立连接) 快(直接发送)
传输模式 字节流 数据报
应用场景 文件传输、HTTP 视频会议、在线直播

2. TCP三次握手与四次挥手(🌟死记硬背)

(1)三次握手(建立连接)
  • 目的:防止"已失效的连接请求"导致服务端资源浪费(如客户端发送SYN后崩溃,服务端误以为新连接);
  • 过程 :
    1. 客户端:发送SYN(同步序列编号)请求;
    2. 服务端:回复SYN+ACK(同步确认);
    3. 客户端:发送ACK(确认),连接建立。
(2)四次挥手(断开连接)
  • 目的:确保双方数据传输完毕,正常关闭连接;
  • 过程 :
    1. 客户端:发送FIN(结束)请求;
    2. 服务端:回复ACK(确认,此时服务端可能还有数据未发送完);
    3. 服务端:发送FIN请求;
    4. 客户端:回复ACK,连接断开。

3. Socket的accept()方法

  • 作用:服务端监听端口,等待客户端连接;
  • 特点 :阻塞方法(无客户端连接时,程序会停在这行代码,直到有客户端连接)。

4. URL与URI的区别

  • URL(统一资源定位符) :是URI的子集,不仅标识资源,还指明如何找到它(如http://www.baidu.com);
  • URI(统一资源标识符) :仅标识资源(如/index.html),不包含访问方式。

三、学习建议

  1. 抓包工具:用Wireshark抓包分析三次握手,理论瞬间变生动;
  2. 写聊天室:实现多线程服务端,处理多个客户端聊天,深入理解Socket和多线程;
  3. 对比TCP/UDP :通过文件传输(TCP)和视频传输(UDP)案例,体会两者的差异。
    掌握本章核心知识,不仅能应对面试,更能理解网络通信的本质,为后续学习Netty、分布式系统打下基础。
相关推荐
国科安芯15 分钟前
算力上天之后的电与静:星上边缘计算载荷带外管理网络的低功耗调度与辐射容错
网络·人工智能·嵌入式硬件·安全·边缘计算·低轨卫星·商业航天
Flynn Liang34 分钟前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
wdeok39 分钟前
Socket编程UDP-简单的聊天室
网络·网络协议·udp
Flynn Liang1 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪1 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI2 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang3 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff4 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba