[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. 面向字节流
      会产生粘包问题
相关推荐
wangyadong31719 小时前
重新安装k3s,因为我安装jenkins 的时候报错了。不知道为啥rancher 访问不了了。
linux·服务器·rancher
施努卡机器视觉19 小时前
SNK施努卡 | 电子油泵自动化生产线:精密制造的技术跃迁与产业价值
运维·自动化·制造
♛识尔如昼♛19 小时前
Linux 设备驱动程序(3)- 字符驱动(2)
linux·驱动开发·字符设备驱动
ShyanZh19 小时前
【skill】Agent-Browser:AI代理的浏览器自动化实战指南
运维·人工智能·自动化·skill·agent-browser
KKKlucifer19 小时前
智能研判、本地运算、一键运维:新一代安全管控产品的三大核心能力
运维·安全
MXsoft61819 小时前
##务健康度评分:将运维指标转化为业务价值的实践指南
运维
浊酒南街19 小时前
列表和元组知识总结
linux·python
難釋懷19 小时前
Nginx使用sticky模块完成对Nginx的负载均衡
运维·nginx·负载均衡
薛定猫AI19 小时前
【深度解析】ChatGPT vs Claude vs Gemini:2026年AI大模型选型全景对比
大数据·网络·人工智能
砍材农夫19 小时前
物联网实战:Spring Boot + Netty 搭建 MQTT 统一接入层
java·网络·spring boot·后端·物联网·spring