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、分布式系统打下基础。
相关推荐
W说编程2 小时前
《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析
网络·网络协议·tcp/ip·udp·unix·极限编程
脑洞代码2 小时前
协议头部格式详解:IP、TCP、UDP与MAC帧结构
网络·笔记·学习
网络修理工2 小时前
如何高效采集Google地图数据的动态IP策略(2026数据爬虫实战)
网络·人工智能
weixin_443290692 小时前
【华为HCIA路由交换认证指南】第五章 静态路由
网络·华为·智能路由器
ZeroNews内网穿透2 小时前
本地搭建 Clawdbot + ZeroNews 访问
网络·安全·web安全·clawdbot
serve the people2 小时前
python环境搭建 (五) Dockerfile 和 docker-compose.yml 核心作用
java·python·docker
石去皿2 小时前
一款轻量级桌面级图片批量压缩工具,专为高效减小图片文件体积而设计,面向latex编译速度优化
网络·人工智能·工具·压缩图片
weixin_443290692 小时前
【华为HCIA路由交换认证指南】第六章 动态路由
网络·华为·智能路由器
独断万古他化2 小时前
【Spring 事务】核心概念与实战:从手动控制到注解自动事务
java·spring·事务