Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • shell

  • tool

  • 网络

    • network category
    • 网络入门指南
      • 挑战性问题
      • 网络概念
        • /etc/hosts
        • wlan0
        • SESSION/COOKIE
        • IPv4 地址
        • TCP
        • https vs http
        • socks5 与 socket
        • 反向/正向代理
        • 抓包与代理协议
      • WebSocket
        • websocket 的实现方式
      • CDN, P2P 和 PCDN
      • link
    • network concept
    • https
    • 网络高频问题
    • 网络安全
    • java http sign snip
    • 软路由
    • DHCP
    • ACME
    • 闲置android手机充当软路由
    • 代理检测方式及绕过方式
  • compute_base

  • blog

  • growth

  • java

  • C&C++

  • ai

  • secure

  • cms

  • english

  • 生活

  • 金融学

  • more

  • other
  • 网络
Jacky
2023-05-24
目录

网络入门指南

# 挑战性问题

  • 弱网优化

# 网络概念

# /etc/hosts

/etc/hosts 是一个在类 Unix 系统(如 Linux、macOS)中用于手动映射主机名到 IP 地址的配置文件。它是一个纯文本文件,允许用户为特定的域名或主机名指定 IP 地址,从而覆盖 DNS 查询的结果。

# wlan0

"wlan0"是指在 Android 设备上表示无线局域网(Wi-Fi)接口的网络接口名称。在大多数 Android 设备中, 无线网络接口通常被标识为"wlan0", 但也有一些设备可能使用其他名称, 如"wlan1"、"wlan2"等, 这取决于设备的硬件和配置

通过"wlan0"网络接口, Android 设备可以连接到 Wi-Fi 网络并进行无线通信。它负责处理与 Wi-Fi 相关的功能, 包括扫描可用网络、建立连接、传输数据等

使用命令adb shell ip address show wlan"可以查看设备上"wlan0"接口的 IP 地址信息。这样可以获取设备当前连接的 Wi-Fi 网络的 IP 地址, 以及其他相关的网络配置信息

# SESSION/COOKIE

由于 HTTP 协议是无状态的协议, 所以服务端需要记录用户的状态时, 就需要用某种机制来识具体的用户, 这个机制就是 Session.

  • Session 是在服务端保存的一个数据结构, 用来跟踪用户的状态, 这个数据可以保存在集群、数据库、文件中
  • Cookie 是客户端保存用户信息的一种机制, 也是实现 Session 的一种方式。可以理解为一个文件, 不会因为浏览器的关闭而消失

思考一下服务端如何识别特定的客户?

每次 HTTP 请求的时候, 客户端都会发送相应的 Cookie 信息到服务端。实际上大多数的应用都是用 Cookie 来实现 Session 跟踪的, 第一次创建 Session 的时候, 服务端会在 HTTP 协议中告诉客户端, 需要在 Cookie 里面记录一个 Session ID, 以后每次请求把这个会话 ID 发送到服务器, 服务器就知道你是谁了

Cookie 常见的应用场景

Cookie 是浏览器保存信息的一种方式, 可以理解为一个文件, 保存到客户端了啊, 服务器可以通过响应浏览器的 set-cookie 的标头, 得到 Cookie 的信息。你可以给这个文件设置一个期限, 这个期限呢, 不会因为浏览器的关闭而消失啊。其实大家应该对这个效果不陌生, 很多购物网站都是这个做的, 即使你没有买东西, 他也记住了你的喜好, 现在回来, 会优先给你提交你喜欢的东西啊, 他们也真是煞费苦心了啊

# IPv4 地址

一个 IPv4 地址,可以使用 16 进制的输出代表. 这里分析下 16 进制各子节代表的意义, 以: 00 02 13 88 7f 00 00 01 00 00 00 00 00 00 00 00 为例

这个 16 进制的输出代表一个 IPv4 地址。让我们一起分析它:

  • 00 02: 这是表示地址族(Address Family)的字段, 其中 00 02 对应 AF_INET, 表示 IPv4 地址族
  • 13 88: 这是表示端口号的字段, 其中 13 88 对应 5000, 表示目标主机的端口号为 5000
  • 7f 00 00 01: 这是表示 IP 地址的字段, 其中 7f 00 00 01 对应 127.0.0.1, 表示目标主机的 IP 地址为 127.0.0.1, 即本地回环地址

所以, 这个 16 进制输出表示将连接目标主机的 IP 地址和端口号设置为 127.0.0.1:5000

在代码中, 这个地址被用作 inet_pton 函数的参数, 将字符串形式的 IP 地址转换为二进制表示。这样就将目标主机的地址设置为 127.0.0.1, 以便与其建立连接

# TCP (opens new window)

什么是TCP

TCP 是 面向连接的、可靠的、基于字节流 的传输层通信协议 用于保证可靠性和流量控制维护的某些状态信息, 这些信息的组合, 包括 Socket、序列号和窗口大小称为连接

# https vs http (opens new window)

# socks5 与 socket

SOCKS5 和 Socket 是两个相关但不同的概念,它们分别属于不同的网络协议层和通信技术,彼此存在一定联系,但不应混淆

SOCKS5 概述
  • SOCKS5 是一种代理协议,用于在客户端和目标服务器之间建立中介服务。它位于传输层和会话层之间,帮助客户端通过代理服务器发送网络请求,而不直接与目标服务器通信。它可以支持 TCP 和 UDP 协议,因此可以处理各种类型的流量,包括 HTTP、FTP、SMTP、POP3、游戏、流媒体等

  • 工作方式: 当客户端连接到 SOCKS5 代理时,代理服务器将转发客户端的请求到目标服务器,再将响应返回给客户端。这样,客户端的真实 IP 地址不会暴露给目标服务器

Socket 概述
  • Socket 是网络编程中的一种通信机制,用于建立两个网络节点之间的连接。Socket 是在传输层(TCP/IP 协议栈)上操作的抽象接口,允许程序读写网络数据

  • 工作方式: Socket 是网络通信的基本工具。客户端和服务器通过创建和使用 Socket 进行连接,数据通过 TCP 或 UDP 协议在 Socket 之间传输。例如,在 TCP 连接中,客户端的 Socket 会向服务器的 Socket 发起请求,建立连接后进行数据传输

SOCKS5 与 Socket 的关系
  • SOCKS5 依赖于 Socket: SOCKS5 代理协议本质上依赖于 Socket 进行通信。在客户端与 SOCKS5 代理服务器之间的连接,或者代理服务器与目标服务器之间的连接,都是通过底层的 TCP 或 UDP Socket 建立的。SOCKS5 代理处理的是请求的转发,Socket 则是承载这些请求和响应的传输通道

  • 作用层次不同: Socket 是一种低级的网络编程接口,负责实际的数据传输,而 SOCKS5 是一种高级代理协议,负责在客户端和服务器之间中介、路由网络请求

简单对比
特性 SOCKS5 Socket
功能 代理协议,转发客户端请求到目标服务器 网络编程接口,建立两个节点间的连接
工作层次 会话层、传输层(代理服务器与应用层之间) 传输层(处理 TCP/UDP 连接和通信)
支持协议 支持 TCP 和 UDP 等多种协议 支持 TCP、UDP,依赖具体的实现(如 IP 协议)
使用场景 用于网络代理、隐私保护、绕过地理封锁等 用于建立、维护、关闭网络连接,传输数据
依赖关系 依赖 Socket 进行底层数据传输 是底层数据传输的工具

# 反向/正向代理

在 IT 行业中, 反向代理(Reverse Proxy)是一种网络代理服务器的配置方式, 它充当了服务器和客户端之间的中间人。与传统的正向代理(Forward Proxy)不同, 正向代理是为客户端提供代理服务, 而反向代理是为服务器提供代理服务。 可以参考nginx (opens new window)以查看更多

反向代理的工作原理是将客户端的请求转发到后端服务器, 并将服务器的响应返回给客户端。客户端发送请求时, 先与反向代理建立连接, 然后反向代理根据配置的规则将请求转发到后端的真实服务器上。后端服务器处理请求并返回响应, 然后反向代理将响应返回给客户端, 客户端则认为响应是直接来自于反向代理


反向代理的主要作用有以下几个方面:

  1. 负载均衡: 反向代理可以根据预设的负载均衡算法将客户端请求分发到多个后端服务器, 从而平衡服务器的负载, 提高系统的性能和可靠性
  2. 缓存静态内容: 反向代理可以缓存静态资源, 如图片、CSS 文件等, 以减轻后端服务器的负担, 提高响应速度
  3. SSL/TLS 加密: 反向代理可以作为 SSL/TLS 终端, 将客户端的 HTTPS 请求转发给后端服务器, 并将响应返回给客户端, 实现对传输内容的加密和安全性保护
  4. 安全过滤: 反向代理可以对传入的请求进行安全过滤和防御, 例如阻止恶意请求、DDoS 攻击和 Web 应用程序漏洞等

通过使用反向代理, 可以提高网络应用的可扩展性、安全性和性能, 同时为系统管理员提供了更好的控制和管理手段

# 抓包与代理协议

  1. 7层代理与抓包的区别
  • 7层代理(反向代理):

    • 工作原理: 7层代理主要用于服务端(服务器端)的负载均衡、安全防护和资源分发等,位于应用层(OSI第七层)。
    • 典型用途: Nginx、HAProxy 等反向代理服务器。
    • 特点: 客户端通常不直接知道反向代理的存在,它在客户端和服务器之间扮演一个中间角色。
    • 无法用于抓包,因为它是为服务端优化的,客户端无法控制。
  • 正向代理:

    • 工作原理: 位于客户端和目标服务器之间,帮助客户端发起请求并返回目标服务器的响应。
    • 正向代理适合抓包,因为你可以在客户端配置代理地址。
    • 典型用途: HTTP/HTTPS 抓包工具(如 Charles、Fiddler)。
    • 特点: 客户端需要明确配置代理信息。
  1. 抓包使用正向代理的原因
  • 透明性: 抓包工具(如 Charles、Wireshark)会作为正向代理运行,拦截并记录客户端与目标服务器之间的通信。
  • SSL/TLS解密: 正向代理能够通过中间人攻击方式(Man-In-The-Middle)解密 HTTPS 数据流进行分析。
  • 可配置性: 手机或其他设备需要配置正向代理地址(例如 192.168.x.x:8888)。

# WebSocket

# websocket 的实现方式

从 demo-websocket (opens new window) 示例中看出.

  • 前端可以基于 sockJs(浏览器中处理 WebSocket 连接) 使用 STOMP (opens new window) 协议进行
  • 后端使用 org.springframework.boot:spring-boot-starter-websocket 来实现

# CDN, P2P 和 PCDN

  • CDN: 即 Content Delivery Network, 中文全称为内容分发网络
  • P2P: 即 Peer-To-Peer, 应用于互联网上, 是指一种点对点传输的网络结构, 形象地描述为图1这样一个搭档式的组织结构。如同人与人之间的交流, 每个节点(也就是搭档)之间地位相同, 又相互独立, 处于对等状态, 不以个人为中心
  • PCDN: 在 CDN 产品的基础上融合新一代 P2P 技术, 充分利用边缘网络海量碎片化的计算、存储、网络等闲置资源构建低成本、高质量的内容分发网络服务。通过创新的分发网络优化技术和精准的智能调度系统, 在为用户提供稳定、高质量的分发加速服务的同时, 显著降低分发成本

# link

  • xiaolin-网络 (opens new window)
上次更新: 2025/10/31, 17:48:12
network category
network concept

← network category network concept→

最近更新
01
math经典公式
11-19
02
线性代数
11-18
03
电商运营核心指标图表
11-16
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式