[Linux复习]:网络

网络

网络基础1


网络套接字

本质可以看成是进程间通信

网络基础2

应用层

HTTP协议

概念

超文本传输协议

就是超过了普通的文本,也可以传输图片文字音频视频...这些都叫做超文本
常见状态码

1xx

表示中间状态

2xx

成功

3xx

资源重定向

4xx

客户端错误

5xx

服务端错误
常见字段

HOST

服务器域名

Content-Length

数据长度

Connection

决定长短链接:keep-alive(长连接) / close(短连接)

Content-Type

数据格式(如 text/html、application/json、image/jpeg)

Content-Encoding

数据压缩方法(如 gzip、deflate)
GET/POST

区别

GET从服务器获取资源(查)

POST向服务器提交数据(改 / 增)

安全

GET低(参数暴露在地址栏)POST相对高(参数不直接暴露)

幂等

GET是(多次请求结果一致),POST不是(多次请求可能产生不同结果)
特性
HTTP/1.0

短连接,性能不好,一般不考虑
HTTP/1.1
核心改进:长连接(Keep-Alive)。

一次 TCP 连接可以处理多次 HTTP 请求和响应。
性能优化:管道(Pipelining) ,客户端可以一次性发多个请求,不用等上一个返回。

优点:简单、灵活、跨平台、应用最广。

缺点:

  1. 明文传输,不安全。
  2. 无状态(需要 Cookie/Session 维持状态)。
  3. 队头阻塞:响应必须按顺序返回,前面一个响应卡住,后面所有都得等。
  4. 头部冗余:每次请求都带重复的 Header。
    HTTP/2.0
    优点
    1. 头部压缩
    2. 并发传输
      注意一下并发传输,说的是在一条TCP连接中可以有多个Stream(流),
      每一个流里面有Message(消息),
      Message里面放的Frame(帧),
      真正实现了并发,不同流的数据可以乱序发送,解决队头阻塞
    3. 服务器推送(Server Push):
      客户端请求 index.html,服务端可以主动把 CSS、JS 推送给客户端 ,不用客户端再请求。
      缺点
      TCP层的队头阻塞问题没有解决
      HTTP/3.0
      直接把底层协议换成UDP,但是普及很慢
缓存

减少请求,提升性能,避免重复从服务器拿数据。
实现方式

把请求和响应的数据缓存在本地,如果请求的方式是一样的,那么直接从本地拿响应的数据
强制缓存

原理:服务端返回响应时,带上一个过期时间(如 Cache-Control: max-age=300)。

流程:

客户端请求 → 检查本地缓存是否过期。

没过期 → 直接用本地缓存,不发请求。

过期了 → 发请求去服务器。
协商缓存

原理:缓存过期了,客户端发请求问服务器:"资源变了吗?"

流程:

客户端带缓存标识(If-Modified-Since / If-None-Match)请求服务器。

服务器对比:

没变 → 返回 304,客户端用本地缓存。

变了 → 返回 200 和新资源。
对比:强制缓存不用发请求

HTTPS协议

解决问题

窃听,篡改,冒充
途径

信息加密,校验机制,身份证书

传输层

UDP

特性

  1. 无连接
    只要知道对端地址就可以发数据
    2. 不可靠
    不关心是否安全送达
  2. 面向数据包
    只能整个整个发,但是不会粘包问题
    协议字段
    源端口、目的端口、数据报长度、校验和
    如果校验和出错就会丢弃
    数据包长度的特性
    数据类型:uint16_t
    数据报长度:≤64k
    面向数据报
TCP
字段
  1. 源端口/目的端口
    2. 序号/确认序号
  2. 首部长度
    4. 标志位
    URG 紧急指针是否有效
    ACK 确认号是否有效
    PSH 让接收端赶快读取数据
    RST 重新建立连接 复位报文段
    SYN 请求建立连接 同步报文段
    FIN 提示本端要关闭了 结束报文段
    5. 窗口大小
    6. 校验和
    7. 紧急指针
    特性
    1. 面向连接
      三次握手和四次挥手
      第三次握手是可以携带数据的
    2. 可靠传输
      确认应答、超时重传、序号排序、丢包重传
    3. 面向字节流
      会产生粘包问题
相关推荐
Ether IC Verifier22 分钟前
TCP三次握手与四次挥手详解
网络·网络协议·tcp/ip·计算机网络
wj3055853787 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
星寂樱易李7 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
abigriver7 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq8 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU8 小时前
Petalinux新建自动脚本启动
linux
charlie1145141918 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记9 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup9 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y9 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git