[特殊字符] 《网络知识和Servlet重点知识整理》



一、网络作用(基础认知)

核心作用 :实现不同设备之间的数据传输与通信,支撑互联网应用(网页、APP、游戏、视频等)。

  • 信息传递:客户端 ↔ 服务器

  • 资源共享:文件、数据库、计算资源

  • 分布式协作:微服务、云计算、分布式系统


二、协议和标准(面试核心板块)

1. URL(统一资源定位符)

  • 格式:协议://域名:端口/路径?查询参数#锚点

  • 示例:https://www.example.com:8080/api/user?id=123#profile

  • 作用:标识网络中资源的唯一位置


2. HTTP协议(超文本传输协议)

✅ 请求/响应格式
  • 请求格式

    复制代码
    请求行(方法 URL 协议版本)
    请求头(Host, Cookie, User-Agent等)
    空行
    请求体(POST数据)
  • 响应格式

    复制代码
    状态行(协议版本 状态码 状态描述)
    响应头(Content-Type, Set-Cookie等)
    空行
    响应体(HTML/JSON等)
✅ 请求方法(GET / POST / PUT / DELETE / HEAD / OPTIONS)
  • GET:获取资源,幂等,参数在URL,长度受限,可被缓存

  • POST:提交数据,非幂等,参数在请求体,无长度限制,不可缓存

  • PUT:更新资源,幂等

  • DELETE:删除资源,幂等

  • HEAD:只获取响应头,用于检查资源是否存在或缓存有效性

  • OPTIONS:获取服务器支持的方法

✅ 响应状态码
  • 2xx 成功:200 OK, 201 Created, 204 No Content

  • 3xx 重定向:301 Moved Permanently, 302 Found, 304 Not Modified

  • 4xx 客户端错误:400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 405 Method Not Allowed

  • 5xx 服务端错误:500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout

✅ 请求/响应头(常见字段)
  • Content-Type:请求/响应体的媒体类型(如 application/json)

  • Set-Cookie:服务器设置客户端Cookie

  • Cookie:客户端发送给服务器的Cookie

  • User-Agent:浏览器/客户端标识

  • Accept:客户端可接受的响应类型

  • Cache-Control:缓存控制策略

  • Cookie:存储在客户端,随每次请求发送,有大小限制(4KB),可设置过期时间

  • Session:存储在服务端(内存/Redis),通过Cookie中的SessionID关联客户端

  • 区别

    • 存储位置:Cookie在客户端,Session在服务端

    • 安全性:Session更安全(数据不暴露)

    • 性能:Cookie轻量,Session消耗服务端资源

    • 分布式:Session需共享(Redis/JWT)


3. UDP协议(用户数据报协议)

  • 特点:无连接、不可靠、面向报文、速度快、开销小

  • 应用场景:视频直播、语音通话、DNS查询、游戏实时交互

  • 报头结构:源端口、目的端口、长度、校验和

  • 传输方式:直接发送,不保证到达或顺序


4. TCP协议(传输控制协议)→ 面试最高频

✅ 报头结构(重点)
  • 源端口、目的端口

  • 序列号、确认序列号

  • 标志位(URG/ACK/PSH/RST/SYN/FIN)

  • 窗口大小(流量控制)

  • 校验和、紧急指针等

✅ 可靠性机制
  • 确认应答(ACK):接收方收到数据后发送ACK确认

  • 超时重传:发送方未收到ACK则重发

  • 序列号+确认号:保证数据有序、无丢失、无重复

  • 面向连接:建立连接后才传输数据

  • 面向字节流:数据按字节流传输,不保留边界

✅ 连接管理(三次握手 + 四次挥手)
  • 三次握手(建立连接)

    1. 客户端 → 服务器:SYN=1, seq=x

    2. 服务器 → 客户端:SYN=1, ACK=1, seq=y, ack=x+1

    3. 客户端 → 服务器:ACK=1, seq=x+1, ack=y+1

      • 目的:同步初始序列号,确保双方都能收发数据

      • **为什么不能两次?**​ 防止历史连接占用资源(旧SYN包被新连接误认)

  • 四次挥手(断开连接)

    1. 客户端 → 服务器:FIN=1, seq=u

    2. 服务器 → 客户端:ACK=1, ack=u+1

    3. 服务器 → 客户端:FIN=1, ACK=1, seq=v, ack=u+1

    4. 客户端 → 服务器:ACK=1, ack=v+1

      • TIME_WAIT状态:客户端等待2MSL(最大段生命周期),确保最后一个ACK被服务器收到,同时避免旧数据包干扰新连接
  • 状态转移图(面试常考):

    CLOSED → SYN_SENT → ESTABLISHED → FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED

    (服务器端同理)

✅ 流量控制 & 拥塞控制
  • 流量控制:通过滑动窗口机制,接收方告诉发送方自己还能接收多少数据(窗口大小)

  • 拥塞控制

    • 慢启动:窗口指数增长

    • 拥塞避免:窗口线性增长

    • 快重传:收到3个重复ACK立即重传

    • 快恢复:窗口减半后线性增长

  • MSS(Maximum Segment Size):TCP报文段最大数据长度,避免IP分片


5. IP协议(网际协议)

  • 报头结构:版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间(TTL)、协议、首部校验和、源IP、目的IP

  • IP地址分类

    • A类:1.0.0.0 ~ 126.255.255.255(默认掩码255.0.0.0)

    • B类:128.0.0.0 ~ 191.255.255.255(默认掩码255.255.0.0)

    • C类:192.0.0.0 ~ 223.255.255.255(默认掩码255.255.255.0)

    • D类:组播地址(224.0.0.0 ~ 239.255.255.255)

    • E类:保留地址(240.0.0.0 ~ 255.255.255.255)

  • IP路由:根据目的IP地址选择下一跳路径

  • IP分片:当数据大于MTU(最大传输单元)时,分片传输,接收端重组


6. ARP协议(地址解析协议)

  • 作用:将IP地址解析为MAC地址

  • 过程

    1. 主机A广播ARP请求:"谁有192.168.1.1?请告诉我你的MAC"

    2. 主机B收到后单播ARP响应:"我是192.168.1.1,MAC是XX:XX:XX:XX:XX:XX"

    3. 主机A缓存ARP表,后续通信直接使用MAC地址


7. DNS协议(域名系统)

  • 作用 :将域名(如 www.example.com)解析为IP地址

  • 解析过程(递归+迭代):

    1. 本地DNS缓存 → 本地hosts文件

    2. 递归查询:本地DNS服务器 → 根DNS → 顶级域DNS(.com)→ 权威DNS服务器

    3. 返回IP地址给客户端

  • 常用记录类型:A(IPv4)、AAAA(IPv6)、CNAME(别名)、MX(邮件交换)、TXT(文本验证)


8. 浏览器从输入URL到看到最终效果,发生了什么?(综合大题)

完整流程

  1. DNS解析:将域名解析为IP地址

  2. TCP连接:建立TCP三次握手

  3. HTTP请求:发送HTTP请求报文

  4. 服务器处理:Web服务器接收请求,调用后端服务(如Servlet)

  5. 服务器响应:生成HTTP响应报文(状态码、响应头、响应体)

  6. 浏览器渲染:解析HTML/CSS/JS,构建DOM树、CSSOM树、渲染树,布局绘制

  7. TCP断开:四次挥手关闭连接

  8. 缓存机制:浏览器可能缓存资源(Cache-Control, ETag)


三、广域网 vs 局域网

维度 广域网(WAN) 局域网(LAN)
覆盖范围 城市、国家、全球 办公室、校园、家庭
传输速率 较低(早期56K,现在光纤可达Gbps) 较高(百兆/千兆/万兆以太网)
设备 路由器、调制解调器、广域网链路 交换机、集线器、无线AP
协议 PPP、HDLC、Frame Relay Ethernet、Wi-Fi(802.11)
成本
  • 设备

    • 交换机:工作在数据链路层,根据MAC地址转发帧

    • 路由器:工作在网络层,根据IP地址转发数据包


四、网络分层(OSI vs TCP/IP)

1. OSI七层模型(理论模型)

层级 功能 协议/设备示例
物理层 比特流传输 网线、光纤、集线器
数据链路层 帧传输、MAC地址、差错检测 交换机、PPP、HDLC
网络层 路由、IP地址 路由器、IP、ICMP
传输层 端到端通信、可靠性 TCP、UDP
会话层 建立、管理、终止会话 RPC、NetBIOS
表示层 数据格式转换、加密解密 JPEG、SSL/TLS、ASCII
应用层 用户接口 HTTP、FTP、SMTP、DNS

2. TCP/IP四层模型(实际应用)

层级 对应OSI层 协议/设备示例
应用层 7+6+5层 HTTP、FTP、DNS、SMTP
传输层 4层 TCP、UDP
网际层(网络层) 3层 IP、ICMP、ARP
网络接口层 1+2层 以太网、Wi-Fi、交换机

五、Servlet应用(Java Web核心)

1. 什么是Servlet?

  • Java编写的服务器端程序,用于处理HTTP请求,生成动态响应

  • 运行在Servlet容器(如Tomcat、Jetty)中

  • 实现了javax.servlet.Servlet接口


2. Servlet项目的创建

  • 使用IDEA/Eclipse创建Dynamic Web Project

  • 添加Servlet API依赖(如javax.servlet-api

  • 继承HttpServlet类,重写doGet()/doPost()方法


3. Servlet项目的部署

  • Windows部署

    • 配置Tomcat环境变量

    • 将项目打包为WAR,放入webapps目录

    • 启动Tomcat,访问http://localhost:8080/项目名

  • Linux部署

    • 安装JDK、Tomcat

    • 上传WAR包至/opt/tomcat/webapps

    • 启动Tomcat:bin/startup.sh

    • 访问:http://服务器IP:8080/项目名


4. Servlet的生命周期(面试必考)

  1. init():Servlet初始化时调用一次(构造器后)

  2. service() :每次请求时调用,根据请求方法分发到doGet()/doPost()

  3. destroy():Servlet销毁前调用(服务器关闭时)

  • 注意:Servlet是单例多线程的,不要在Servlet中使用实例变量(线程安全问题)

5. 常见API

  • HttpServletRequest (req)

    • getParameter():获取请求参数

    • getHeader():获取请求头

    • getSession():获取Session

    • getCookies():获取Cookie

    • getMethod():获取请求方法(GET/POST)

  • HttpServletResponse (resp)

    • setContentType():设置响应类型(如text/html)

    • setCharacterEncoding():设置字符编码

    • getWriter():获取输出流,写入响应体

    • sendRedirect():重定向到另一个URL

    • addCookie():添加Cookie到响应


🎯 面试/笔试高频总结(必背)

模块 高频考点
HTTP GET/POST区别、状态码、Cookie/Session、请求/响应头
TCP 三次握手/四次挥手、可靠性机制、滑动窗口、拥塞控制、MSS、TIME_WAIT
IP/ARP/DNS IP地址分类、ARP解析过程、DNS解析流程
网络分层 OSI vs TCP/IP、各层功能、对应设备
Servlet 生命周期(init/service/destroy)、req/resp常用方法、多线程安全、部署流程

📌 学习建议

  1. 先理解原理,再背面试题:比如TCP三次握手,先理解"为什么要同步序列号",再背步骤。

  2. 画图记忆:三次握手、四次挥手、网络分层、浏览器请求流程,建议手绘流程图。

  3. 动手实践:用Java写一个简单的Servlet,部署到Tomcat,观察日志和网络抓包。

  4. 刷真题:针对字节、阿里、腾讯等大厂的真题,反复练习"从输入URL到页面显示发生了什么"这类综合题。


最终结论 :这张思维导图覆盖了Java后端面试中网络+Servlet的90%核心考点。掌握这些内容,足以应对绝大多数互联网公司的笔试和一面。

相关推荐
952362 小时前
网络原理 - HTTP / HTTPS
网络·http·https
克莱因3582 小时前
思科 单区域OSPF(1
网络·路由·思科
Oll Correct2 小时前
实验十四:IPv4地址的无分类编址方法
网络·笔记
23zhgjx-ctl2 小时前
111111
网络·智能路由器
古译汉书10 小时前
【IoT死磕系列】Day 9:架构一台“自动驾驶物流车”,看8种协议如何协同作战
网络·arm开发·单片机·物联网·tcp/ip·架构·自动驾驶
哼?~12 小时前
Linux--网络基础
网络
苏渡苇13 小时前
Docker 网络完全指南
网络·docker·容器·docker容器·容器通信
风曦Kisaki15 小时前
# Linux 磁盘查看命令详解:df 与 du
linux·运维·网络
攻城狮在此15 小时前
华为交换机Console口密码如何清除
运维·网络·华为