网络知识和Servlet重点

目录

一、网络作用

网络的核心作用是实现数据的传输与共享,为分布式系统、互联网应用提供基础通信能力,让不同设备、地理位置的计算机能够互联互通,支撑起网页浏览、即时通讯、数据交互等各类网络场景。

二、网络分层

(一)TCP/IP 五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

1、每个层的作用是什么?

1.应用层:和用户打交道,接收与展示用户的数据,比如收发快递的过程中,只关注物品本身

2.传输层:完成端到端的传输的准备,也就是说确定收送主机的地址和端口号,对比快递来说确定收件人和发件人的地址和电话

3.网络层:规划出端到端之间的网络路径,路径中可能会包含中间经过的其他网络设备,比如快递运输过程中可以经过的加油站

4.数据链路层:完成点到点之间的传输,每个网络设备之间的传输

5.物理层:把真实的BIT数据流,通过转换成光电信号在传输介质中传输

2、每层用到的协议

应用层:用户自定义的协议

传输层:典型TCP、UDP协议

网络层:IP协议

数据链路层和网络层:以太网协议、

(二)具体流程

封装和分用

封装是在发送方进行的对数据的处理。

分用是在接收方进行的对数据的处理

场景:模拟QQ发送与接收数据的过程
发送方:

1、应用层

由应用程序来实现,对应的就是QQ这个程序

按照协议规定组织好数据(协议内容只有程序员知道)

应用层主要是确定消息体的内容

然后就可以调用系统的API进行发送操作,从而消息的处理方移交给下一层

2、传输层

传输层众多协议中最典型两种,TCP、UDP协议

传输层主要就是用来确定源端口号和目标端口号,之后打包数据发送给下一层,网络层

3、网络层

规划出端到端之间的网络路径

IP协议

后面两部分是载荷

网络层主要用来确定源IP地址和目标IP地址

4、数据链路层

以太协议

加入帧头和帧尾之后,把数据以二进制的形式发送给物理层

5、物理层

把具体的数据(报文)转换成光电信号,通过传输介质进行传输

接收方:

(三)OSI 七层模型(理论参考)

三、Socket套接字

流套接字:使用传输层TCP协议 一点一点的发送,和之前的文件流一样

数据报套接字:使用传输层UDP协议 把一个报文当作一个整体一次性发送

TCP和UDP协议的区别

四、协议和标准

(一)URL

协议://主机名:端口号/路径?查询参数#片段

协议:如http/https,规定数据传输规则

主机名:服务器域名或 IP 地址

端口号:标识服务器上的具体服务(默认 80 为 HTTP,443 为 HTTPS)

路径:资源在服务器的位置

查询参数:传递给服务器的额外数据

片段:页面内的锚点位置

(二)HTTP协议

超文本传输协议(HyperText Transfer Protocol),是应用层的无状态、无连接协议,用于客户端和服务器之间的超文本数据交互。

1、请求 / 响应格式

请求格式:请求行 + 请求头 + 空行 + 请求体

请求行:请求方法 URL 协议版本(如GET /index.html HTTP/1.1)

请求头:键值对形式,描述客户端、请求的元信息(如Host、User-Agent、Content-Type)

请求体:仅在 POST/PUT 等方法中存在,用于传递表单、JSON 等数据

响应格式:响应行 + 响应头 + 空行 + 响应体

响应行:协议版本 状态码 状态描述(如HTTP/1.1 200 OK)

响应头:描述服务器、响应数据的元信息(如Content-Type、Set-Cookie)

响应体:服务器返回的实际数据(如 HTML、JSON、图片)

2、请求方法

GET、POST、PUT、DELETE

谈谈GET和POST区别

语义不同:GET一般用于获取数据,POST一般用于提交数据

GET 的body一般为空,需要传递的数据通过query string传递,POST的query string一般为空,需要传递的数据通过body 传递

GET请求一般是幂等的,POST请求一般是不幂等的(幂等:每次访问同一个URL,得到的结果都相同)

GET 可以被缓存,POST 不能被缓存.(这一点也是承接幂等性)

3、响应状态

1xx(信息类)、2xx(成功类)、3xx(重定向类)、4xx(客户端错误类)、5xx(服务器错误类)

4、Cookie + Session

Cookie:存储在客户端的小型文本数据,由服务器通过Set-Cookie响应头设置,每次请求自动携带,用于识别用户状态(如登录态),有过期时间、域名、路径等限制。

Session:存储在服务器的用户会话数据,通过Session ID关联客户端 Cookie,解决 HTTP 无状态问题,常用于登录状态保持、购物车等场景,依赖 Cookie 传递Session ID。

(三)UDP协议

用户数据报协议(User Datagram Protocol),传输层无连接、不可靠协议,特点是开销小、速度快,不保证数据有序、不丢失、不重复。

报头:包含源端口、目的端口、长度、校验和(固定 8 字节)

传输:面向报文传输,不拆分合并数据,适合实时场景(如直播、语音通话、DNS 查询)

(四)TCP协议

传输控制协议(Transmission Control Protocol),传输层面向连接、可靠、面向字节流协议,保证数据可靠传输。

1、报头

序列号:用于标识数据字节顺序,解决乱序问题

确认序号:告知对方已成功接收的数据,用于确认应答

标志位:SYN(建立连接)、ACK(确认)、FIN(关闭连接)、RST(重置连接)、PSH(推送数据)、URG(紧急指针)

窗口:流量控制字段,告知对方当前可接收的数据量

2、可靠性

确认应答:接收方收到数据后返回 ACK,发送方等待 ACK 确认

超时重传:发送方未收到 ACK,超时后重新发送数据

序列号:保证数据按序到达,重复数据自动丢弃

校验和:检测数据传输是否损坏

3、连接管理(可靠性机制)(三次握手、四次挥手)(重点)

作用:在发送方和接收方初次建立连接的时候,确认双方的收发能力
三次握手(建立连接):

作用:验证网络状态,保证连接没有问题

1、主机A发送SYN请求,生成一个随机数据填充在序号区域

2、主机B接收到主机A发来的SYN请求后,在序号的基本上+1,把结果填充到确认序号中,并把ACK标志位置为1,表示要进行应答

同时也随机生成一个随机数据填充在序号区域,并把SYN标志位置为1,表示自己发送一个SYN同步请求

3、主机接收到主机B发来的ACK+SYN请求时,首先判断ACK,表示主机B有应答能力,再去判断SYN,在序号的基础上+1,把结果填充在确认序号中,把ACK标志位置为1

4、主机B接收到主机A发来的ACK,表示主机A有应答能力,网络验证完成,建立连接成功

四次挥手(关闭连接):

作用:保证发送与接收方有效(安全)的断开连接

四次挥手能不能变成三次挥手/第二步的ACK能不能与第三步的FIN合并在一起

大概率不能,因为:

1、发起的角色不同,一个是操作系统,一个是应用程序

2、发起的进击不同,ACK是应答比较及时,FIN要回收一些资源之后才触发

4、端口状态转换

5、流量控制

滑动窗口:通过接收方告知的窗口大小,控制发送方发送数据量,避免接收方缓冲区溢出

滑动窗口机制:发送窗口内的数据可连续发送,接收窗口确认后滑动窗口,实现高效可靠传输

1、发送方批量发送,把正在发送的数据加入到缓冲区,同时记录最大字节数

2、根据当前窗口的大小发送报文

3、接收方收到报文之后,返回一个ACK(确认序号)

4、发送方接收到一个ACK之后,把缓冲区的数据删除一组,然后再加入一组新的数据到缓冲区,继续发送

滑动窗口与效率:

1、窗口越大网络吞吐量越高

2、窗口越大效率越高

3、窗口越小效率越低

4、如果窗口无限大,和UDP就一样了

6、拥塞控制

1.程序启动的时候把拥塞窗口的值调到很少,比如1

2.如果接收到ACK表示当前窗口大小没有问题,然后就调大窗口大小

3.到达阈值之前以指数形式增大,到达阈值之后,以1为步长进行增大

4.当增大到一定程序发生丢包的情况,就证明网络阻塞了,这时就把窗口大小重新调用1,同时重置新的阈值=当前窗口大小的二分之一

5.重复1~4步

慢启动:初始拥塞窗口小,指数级增长,避免网络突然拥塞

拥塞避免:拥塞窗口超过阈值后,线性增长,防止网络过载

快速重传:收到 3 个重复 ACK 时,立即重传丢失数据,无需等待超时

快速恢复:重传后将拥塞窗口设为阈值,直接进入拥塞避免阶段,而非慢启动

7、MSS

最大分段大小(Maximum Segment Size),指 TCP 报文段中数据部分的最大长度,由 MTU(最大传输单元)决定,避免 IP 分片,提升传输效率。

(五)IP 协议

网际协议(Internet Protocol),网络层核心协议,负责跨网络的数据路由和交付。

1、IP 地址分类

IPv4:32 位,点分十进制表示(如192.168.1.1),分为 A、B、C、D、E 类

A 类:1-126,适用于大型网络

B 类:128-191,适用于中型网络

C 类:192-223,适用于小型网络

D 类:224-239,组播地址

E 类:240-255,保留地址

IPv6:128 位,冒号分十六进制表示(如2001:0db8::1),解决 IPv4 地址耗尽问题,支持自动配置、更强安全特性

2、IP 路由

数据从源主机到目标主机的路径选择过程,路由器根据路由表(包含目标网络、下一跳、接口等信息)转发 IP 数据包,分为静态路由和动态路由(如 RIP、OSPF、BGP)。

3、IP 分片

当 IP 数据包大小超过链路 MTU 时,会被拆分为多个分片,每个分片携带偏移量和标识位,目标主机收到后重新组装成完整数据包,避免链路层无法传输大数据包。

(六)ARP 协议

地址解析协议(Address Resolution Protocol),实现IP 地址到 MAC 地址的映射,用于局域网内设备通信:

1、主机发送 ARP 广播:询问 "某个 IP 对应的 MAC 地址是什么"

2、目标主机收到后,单播回复自身 MAC 地址

3、发送方缓存 ARP 映射,后续直接使用,避免重复广播

(七)DNS 协议

域名系统(Domain Name System),将域名解析为 IP 地址,实现人类易读的域名到机器可识别的 IP 地址转换:

1、递归查询:客户端向本地 DNS 服务器请求,由服务器逐级查询根服务器、顶级域服务器、权威服务器

2、迭代查询:DNS 服务器之间相互查询,最终返回结果给客户端

3、记录类型:A 记录(域名→IPv4)、AAAA 记录(域名→IPv6)、CNAME(别名)、MX(邮件服务器)等

(八)浏览器从输入 URL 到看到最终效果,发生了什么?(面试)

1、DNS 解析:将域名解析为服务器 IP 地址

2、TCP 连接:客户端与服务器通过三次握手建立 TCP 连接

3、HTTPS 握手(若为 HTTPS):协商加密算法、交换密钥,建立安全连接

4、发送 HTTP 请求:客户端构造 HTTP 请求(方法、URL、头、体)发送给服务器

5、服务器处理请求:服务器接收请求,处理业务逻辑(查询数据库、渲染页面等)

6、返回 HTTP 响应:服务器返回响应状态码、头、体(如 HTML、CSS、JS)

7、浏览器渲染页面:解析 HTML 构建 DOM 树,解析 CSS 构建 CSSOM 树,合并为渲染树,布局绘制页面

8、TCP 连接关闭:通过四次挥手释放连接(或保持长连接)

五、广域网 vs 局域网

广域网WAN:

广域网,即Wide Area Network,简称WAN。

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

局域网:

局域网与广域网之间并没有明确的限制

指的是网络组成的范围比较小

学校的内网,公司的内网,组织内部的网络

局域网与广域网之间并没有明确的限制

六、Servlet 应用

(一)什么是 Servlet

Servlet 是运行在服务器端的 Java 程序,是 Java EE 规范的一部分,用于处理客户端请求并生成动态 Web 内容(如 HTML、JSON),是早期 Java Web 开发的核心组件,也是 Spring MVC 等框架的底层基础。

(二)Servlet 项目的创建

搭建 Java Web 工程(如基于 Tomcat 的 Web 项目)

引入 Servlet API 依赖(javax.servlet/jakarta.servlet包)

自定义类继承HttpServlet,重写doGet()/doPost()等方法

配置 Servlet 映射:

传统方式:在web.xml中配置和

注解方式:使用@WebServlet("/urlPattern")直接标注在类上

(三)Servlet 项目的部署

  1. Windows 上的部署
    下载并安装 Tomcat 服务器
    将项目打包为WAR文件
    将 WAR 文件放入 Tomcat 的webapps目录
    启动 Tomcat(执行bin/startup.bat)
    访问http://localhost:8080/项目名即可
  2. Linux 上的部署
    上传 Tomcat 安装包到 Linux 服务器,解压配置环境变量
    将 WAR 文件放入tomcat/webapps目录
    执行sh tomcat/bin/startup.sh启动服务
    配置防火墙开放 8080 端口,通过服务器 IP 访问项目
    (四)Servlet 的生命周期
    由 Servlet 容器(如 Tomcat)管理,核心阶段:
    实例化(init):容器首次请求 Servlet 或服务器启动时,创建 Servlet 实例,调用init(ServletConfig config)方法,仅执行一次,用于初始化资源(如数据库连接)
    服务(service):每次请求到达时,容器调用service(ServletRequest req, ServletResponse res)方法,根据请求方法(GET/POST 等)分发到doGet()/doPost()等具体方法,处理业务逻辑并生成响应
    销毁(destroy):服务器关闭或卸载 Servlet 时,调用destroy()方法,仅执行一次,用于释放资源(如关闭连接)
    (五)常见 API
  3. HttpServletRequest(req)
    获取请求信息:getMethod()、getRequestURL()、getParameter(String name)、getHeader(String name)
    会话管理:getSession()获取 HttpSession 对象
    请求转发:getRequestDispatcher(String path).forward(req, resp)
  4. HttpServletResponse(resp)
    设置响应信息:setContentType(String type)(如text/html;charset=UTF-8)、setStatus(int sc)
    输出响应数据:getWriter()获取 PrintWriter,输出 HTML / 文本;getOutputStream()输出二进制数据(如图片)
    重定向:sendRedirect(String location)
相关推荐
野犬寒鸦3 小时前
面试常问:HTTP 1.0 VS HTTP 2.0 VS HTTP 3.0 的核心区别及底层实现逻辑
服务器·开发语言·网络·后端·面试
HalvmånEver4 小时前
Linux:初始网络(上)
linux·网络·学习·通信
Hello World . .4 小时前
Linux:网络编程-基于HTTP协议的天气预报查询系统开发详解
linux·网络·http
良许Linux4 小时前
汽车电子技术和汽车网络
网络·单片机·嵌入式硬件·汽车·嵌入式·制造
凉拌菜5 小时前
手术摄像系统的视频延迟是如何产生的?从采集到网络传输的技术解析
网络·音视频·医疗视频·4k视频·术野摄像机
Survivor0015 小时前
VMware虚拟机网络技术
linux·服务器·网络
Filotimo_6 小时前
5.1 计算机网络概述与网络硬件基础
网络
素心如月桠6 小时前
IT-如何连接共享打印机
linux·服务器·网络
张毫洁6 小时前
解决虚拟机ip不见的问题
linux·服务器·网络