惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
I
InfoQ
B
Blog RSS Feed
D
DataBreaches.Net
S
SegmentFault 最新的问题
P
Proofpoint News Feed
A
About on SuperTechFans
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
小众软件
小众软件
博客园 - Franky
有赞技术团队
有赞技术团队
D
Docker
T
Tailwind CSS Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
爱范儿
爱范儿

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 仿真钓鱼页面窃取用户凭证 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 学习Docker-Compose命令及镜像构建与推送 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 IDA Free调试Hello World笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation Windows核心系统进程链与svchost深度解析
学习URL请求后的通信过程
卷卷 · 2023-01-25 · via 卷卷

HTTP请求体详解

组成部分

- 报文首部
  - 请求行
     - 请求方法
     - URL
     - HTTP版本
  - HTTP字段
     - 【请求】首部字段
     - 【通用】首部字段
     - 【实体】首部字段
- 空行
- 报文空主体

image-20240830214813-q2kvklh

GET、POST、PUT、OPYION的区别?

GET方法是在URL里传参有缓存、不安全,且有长度4096限制。

POST方法是在请求体里传参,无缓存、无长度限制、相对安全。

请求首部字段

首部字段名 说明
Accept 用户代理可处理的媒体类型

Accept-Encoding 优先的内容编码

Host 请求资源所在服务器

User-Agent HTTP 客户端程序的信息

content-type 内容类型 具体见常见 MIME 类型列表

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

x-forwarded-for 用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。 ★可伪造

X-Forwarded-For: <client>, <proxy1>, <proxy2>
X-Forwarded-For: 203.0.113.195
X-Forwarded-For: 203.0.113.195,2001:db8:85a3:8d3:1319:8a2e:370:7348,150.172.238.178

HTTP_CLIENT_IP 是代理服务器发送的HTTP头。 ★可伪造

数据传输流程

  1. 解析URL

    协议​://域名​:端口​/目录名​/文件名​?参数​#

    确定请求的主机名​和文件名

  2. 封装报文

    请求行请求头请求体

    发送端的应用层的浏览器将HTTP数据发送给传输层,传输层加上TCP首部并将数据传给网络层,网络层将数据加上IP首部后将数据发送给数据链路层,数据链路层将数据加上以太网首部。

  3. DNS解析

    域名为方便人的记忆而产生,如要传输数据,计算机需要知道对方的ip地址。

    image

    1. 搜索浏览器的DNS缓存映射表;
    2. 搜索操作系统的DNS缓存表;
    3. 操作系统递归查询本地域名服务器
    4. 本地域名服务器迭代查询根域名服务器防止根压力大;
    5. 本地域名服务器访问根域名服务器返回顶级域名服务器地址;
    6. 本地域名服务器请求顶级域名服务器并返回权限域名服务器地址;
    7. 本地域名服务器访问权限域名服务器得到IP地址返回给操作系统;
    8. 操作系统返回给浏览器,两者都将映射存入缓存;
  4. 建立连接

    TCP通过三次握手和浏览器建立可靠的连接。

    image

  5. 发送请求

    TCP 三次握手完成后,浏览器与目标服务器之间就建立了一个可靠的虚拟通道,于是浏览器就可以发送自己的 HTTP 请求了。

  6. 传输数据

  7. 断开连接

    image

  8. 浏览器渲染数据

数据传输原理

image

  1. 应用层

    在该传输过程中,应用层的HTTP协议主要职责是生成针对WEB服务器的请求报文。

  2. 传输层

    建立连接,通过TCP协议,将数据报分片,通过拥塞控制、流量控制、滑动窗口等确保数据可靠的到达目的地,目的地对数据排序重组,确保数据准确。

  3. 网络层

    网络层指定了从哪个IP 发送到哪个IP 。网络层做出指引的过程,其称为路由控制​。MAC地址成为物理地址是固化在网卡的ROM中的,而IP地址是网络层以上使用的,是一种逻辑地址。ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的。

    1. 主机 A 为了获得主机 B 的 MAC 地址,它会先去查询自己的 ARP 高速缓存中有没有主机 B 的相关记录;
    2. 如果没有,主机 A 就会携带自己的 IP 地址 和 MAC 地址 以及 目标主机的 IP 地址通过广播的方式发送 ARP 请求包,表明自己想要获得主机 B 的 MAC 地址。
    3. 由于广播被同链路上的所有主机发现,如果有主机查找自己的ARP缓存表有和B主机IP匹配的MAC地址,就单播该MAC地址放入请求包返回给A主机。
    4. 主机 A 在收到发过来的 ARP 响应包后,向其 ARP 高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射,缓存超过TTL将被清空。

    image

  4. 数据链路层

    网络层的数据到达数据链路层就在首部添加MAC地址封装成MAC帧,所以数据链路层则是根据 MAC 地址进行传输的,随着数据的传输,源 MAC 地址和目的 MAC 地址会不断的发生变化。

    image