网络通信协议全解析:HTTP/UDP/TCP核心要点

网络通信协议知识笔记

一、HTTP协议基础

  1. HTTP(超文本传输协议):属于应用层协议,用于客户端与服务器之间传递文件和数据。
  2. 超链接与URL:URL(统一资源定位符)本质上通过 socket 通信实现资源访问。
  3. IP与域名:域名映射到唯一的 IP 地址,用于资源定位。
  4. 端口号:HTTP 默认端口为 80,HTTPS 为 443,端口固定且协议成熟。
  5. 资源路径:在 Linux 系统中,资源即文件,路径指向服务器上的具体文件。
  6. URL 编码与解码:浏览器端采用 urlencode,服务器端使用 urldecode 进行处理。

二、HTTP请求与响应流程

  1. B/S模式:浏览器(客户端)与服务器进行通信。
  2. 请求结构
    1. 第一行:请求行
    2. 后续:请求报头(属性字段)
    3. 空行分隔报头与有效载荷
    4. 数据部分:请求正文
  3. 响应结构
    1. 状态行
    2. 响应报头
    3. 响应正文
    4. content-Length:响应正文长度
  4. HTTP短链接与服务:HTTP 为客户端提供短服务,/ 表示 web 根目录(非 Linux 根目录),服务器自动拼接首页。

三、HTTP请求方式

  1. GET:参数通过 URI 提交,长度有限,参数会回显,不适合传递大量或敏感数据。
  2. POST:参数通过请求正文提交,适合长数据,更加私密,但同样不绝对安全。
  3. 安全性:HTTP 本身不安全,需结合其他安全机制使用。

四、会话与安全机制

  1. Cookie:实现免密登录、免密跳转。
  2. Session:提升安全性,主流方案为 Cookie + Session。
  3. HTTP微服务接口:采用 RESTful 风格设计。
  4. HTTP协议特性:无状态、无连接。

五、UDP协议要点

  1. UDP端口号:采用五元组标识,报头定长,端口号为 16 位。
  2. 数据报边界:报文间有明确边界,长度确定,面向用户数据报。

六、TCP协议详解

1. 报文结构与序号

  1. 报文大小:20~60 字节(5~15 个 4 字节块)
  2. 序号与确认序号:用于乱序处理和去重

2. 标志位功能

  1. SYN:建立连接
  2. ACK:确认应答
  3. FIN:断开连接
  4. PSH:提示应用程序读取数据
  5. RST:复位连接
  6. URG:紧急指针有效

3. 连接建立与断开

  1. 三次握手:SYN → SYN+ACK → ACK,确保全双工通信及双方意愿
  2. 四次挥手:双方均发送断开请求和应答,关闭两条信道,实现全双工断开

4. 连接管理与异常处理

  1. 主动断开方进入 TIME_WAIT,等待残留报文消散
  2. setsockopt() 可设置 SO_REUSEADDR,允许端口复用
  3. 半连接:关闭读/写实现单双工通信

七、TCP数据传输与控制

1. 丢包与重传

  1. 丢包类型:数据包丢失、应答丢失
  2. 超时重传与快重传机制,序号去重
  3. 滑动窗口:流量控制,窗口大小决定一次可发送数据量

2. 滑动窗口机制

  1. start=确认序号,end=start+win
  2. 窗口调整灵活,可为0但不能向左移动
  3. 自动重传与快重传配合提升效率

3. 流量与拥塞控制

  1. 16位窗口大小,窗口扩大因子
  2. 拥塞窗口算法:慢启动(指数增长)、线性增长(加法增大),临界值 ssthresh 初始值为16
  3. 滑动窗口=min(对方win, 拥塞窗口),动态调整发送速率

4. 延迟应答与粘包问题

  1. 延迟应答提升效率
  2. TCP面向字节流,需协议+序列化/反序列化解决粘包

八、总结与补充

  1. HTTP、UDP、TCP三大协议各有特点
  2. TCP通过三次握手和四次挥手保障连接可靠性
  3. 滑动窗口与拥塞控制提升数据传输效率与安全
  4. 会话机制(Cookie + Session)用于管理身份和安全

如需进一步学习或有疑问,欢迎留言交流!

九、HTTPS加密与安全机制

  1. HTTPS(TLS/SSL):是经过加密和解密的 HTTP。
  2. 对称加密:加密与解密密钥相同,加密速度快。
  3. 非对称加密:有两个密钥(公钥和私钥),算法复杂,加密速度慢。使用公钥加密,只能用私钥解密。
  4. 数据摘要与指纹:形成的数据具有唯一性。

常见加密方案:

  1. 只使用对称加密:双方无法同步密钥。
  2. 一方使用非对称加密:只能解决单向通信安全,运算速度慢。
  3. 双方都使用非对称加密:先交换公钥,用对方公钥加密,用自己私钥解密,速度慢。
  4. 非对称加密 + 对称加密:先用非对称加密协商密钥,再用对称加密通信,存在公钥合法性验证问题。
  5. 非对称加密 + 对称加密 + CA认证:三组密钥,双非一对,提升安全性。

签名与验证机制:

  1. 签名:数据散列摘要加密后形成签名,与数据一起附加。
  2. 验证:拆开数据,再散列成摘要,与解密后的摘要对比,判断数据完整性。
  3. 只有签名者(如 CA 机构)才拥有签名权力。
  4. 证书:一份明文数据,携带签名信息。
相关推荐
Joren的学习记录4 分钟前
【Linux运维大神系列】Docker详解(二)
linux·运维·docker
我想我不够好。5 分钟前
实操练习 12.20
学习
Crkylin12 分钟前
尚硅谷Linux应用层学习笔记(一)GCC编译
linux·笔记·学习
车载测试工程师15 分钟前
CAPL学习-AVB交互层-功能函数-监听器函数函数
网络·学习·tcp/ip·capl·canoe
爬山算法32 分钟前
Netty(21)Netty的SSL/TLS支持是如何实现的?
网络·网络协议·ssl
Lueeee.37 分钟前
具体掌握字符设备驱动
linux
andwhataboutit?43 分钟前
pytorch-CycleGAN-and-pix2pix学习
人工智能·pytorch·学习
vv_5011 小时前
大模型 langchain-组件学习(中)
人工智能·学习·langchain·大模型
颹蕭蕭1 小时前
CRC的数学原理
网络
HIT_Weston1 小时前
68、【Ubuntu】【Hugo】搭建私人博客:方案分析(二)
linux·运维·ubuntu