[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. 面向字节流
      会产生粘包问题
相关推荐
一个天蝎座 白勺 程序猿2 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
2035去旅行6 小时前
bootcmd 详细讲解
linux·嵌入式·arm·soc
分布式存储与RustFS6 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希1237 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡7 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾8 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
且从容.11 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道11 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达13 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.14 小时前
ubuntu安装flink
linux·ubuntu·flink