计算机网络

计算机网络

创建时间
Dec 28, 2024 05:25 PM
标签

OSI 七层网络模型

  • 物理层
    • 概念:负责物理介质上的数据传输
      单位:比特(Bits)
      实例:网线,Wi-Fi,光猫
  • 数据链路层
    • 概念:负责节点之间的可靠数据传输,包括对数据的封装、Mac 地址的管理以及检测和纠正物理层可能引入的错误,并且将物理层的原始信号打包成帧传输
      单位:帧(Frames)
      实例:Mac 地址,交换机,PPP协议(点对点协议)
  • 网络层
    • 概念:负责跨网络的路由选择和逻辑地址的管理。决定数据如何从一个节点传送到另一个节点,跨越多个网络,通过IP地址来标识源和目标
      单位:数据包(Packets)
      实例:IP 协议,路由器,ICMP 协议,ARP 协议
  • 传输层
    • 概念:负责端到端的数据传输,并提供可靠的传输机制(如重传、流量控制)
      单位:段(Segments)或数据报(Datagrams)
      实例:TCP、UDP、TLS/SSL
  • 会话层
    • 概念:负责建立、管理和终止会话
      单位:数据流(Data Streams)
      实例:PPTP、RPC、NetBIOS
  • 表示层
    • 概念:负责数据的表示和转换
      单位:格式化数据
      实例:JPEG、MPEG
  • 应用层
    • 概念:负责为用户与应用程序之间提供直接的网络服务接口
      单位:报文(Message)
      实例:HTTP、FTP、SMTP、DNS
notion image

HTTP

HTTP 请求方式

  • GET
    • 用于从服务器获取数据。请求参数一般附加在 URL 上,适合获取静态资源或查询操作
  • POST
    • 用于向服务器发送数据(如表单提交、上传文件等),数据通常放在请求体中,适合需要对服务器进行修改或提交数据的操作
  • HEAD
    • 与 GET 类似,但只请求响应的头部,不返回实际数据体。用于检查资源是否存在或资源的元数据信息
  • PUT
    • 用于上传资源到服务器。通常用于更新一个已有资源,如果资源不存在,则会创建该资源
  • DELETE
    • 用于删除服务器上的资源
  • PATCH
    • 与 PUT 类似,但用于对资源进行部分更新,而不是整个替换
  • OPTIONS
    • 用于请求服务器支持的通信选项,常用于 CORS(跨域资源共享)请求中,查看服务器允许哪些 HTTP 方法
  • CONNECT
    • 启动一个到服务器的双向通信通道,一般用于代理服务器或隧道(如 HTTPS 的 TLS/SSL 连接)
  • TRACE
    • 用于回显服务器收到的请求,主要用于调试,帮助开发者查看请求在服务器之间传输时是否被修改

网络协议

  • APIPA
    • Automatic Private IP Addressing,自动私有 IP 地址分配。当基于 TCP/IP 协议栈的设备多次广播请求 DHCP 服务无果时,会自动给设备分配形如 169.254.x.x/16 的 IP 地址,以确保局域网内的设备可相互通信
  • ARP
    • Address Resolution Protocol,地址解析协议。用于在局域网中将 IP 地址 转换为 MAC 地址。由于局域网中设备通信依赖 MAC 地址,因此需要此协议将已知的 IP 地址转换为 MAC 地址
  • DHCP
    • Dynamic Host Configuration Protocal,动态主机配置协议。用于在网络中自动分配 IP 地址和其他网络配置信息的协议。它广泛用于局域网中,简化了设备的网络配置流程

VPN

代理协议

  • Shadowsocks
  • Vmess
  • Vless
  • Trojan

VPN 协议

  • OpenVPN
  • WireGuard
  • IPSec
  • L2TP

局域网设备共享

代理共享

💡
指定已科学设备为代理服务器。缺点:需要多次设置平;部分客户端不支持;无法接管所有流量
  • Clash:打开局域网共享功能
  • Shadowrocket:设置 - 隧道 - 代理 - 共享代理

网关共享(透明代理)

💡
指定已科学设备为网关以及 DHCP 服务器,可在路由器上设置,一步到位。缺点:部分服务端不支持
  • Linux/Unix-like(不包括 Windows):Clash 打开Tunnel 模式 - 路由器指定该设备为 DHCP 服务器

路由共享

💡
共享网卡至局域网其他设备。缺点:多一层 NAT;部分服务端不支持
  • Windows:Clash 打开 Tunnel 模式 - 共享此网卡
  • Android:打开 VPN 共享(需 root)

端口

Name
Protocol
Port
Used for
21
文件传输协议,用于在客户端和服务器之间传输文件
22
安全文件传输协议,基于SSH,用于加密的文件传输
TCP
80
用于Web浏览器和网站之间的标准不加密通信
443
用于加密的Web浏览器和网站之间的通信,确保数据传输的安全性
22
安全外壳协议,用于在不安全网络上安全地访问远程计算机
23
用于远程登录以管理网络设备和其他系统,但不安全,因为它传输的是明文数据
25
简单邮件传输协议,用于发送电子邮件
143
互联网消息访问协议,用于从邮件服务器读取电子邮件
UDP
53
域名系统协议,用于将域名解析为IP地址
UDP
67
动态主机配置协议,用于自动分配IP地址和其他网络配置参数
UDP
68
动态主机配置协议,用于自动分配IP地址和其他网络配置参数
110
邮局协议版本3,用于从邮件服务器下载电子邮件
3389
远程桌面协议,用于远程访问Windows桌面
3306
用于MySQL数据库服务器的默认端口
5432
用于PostgreSQL数据库服务器的默认端口
1433
用于Microsoft SQL Server数据库的默认端口
6379
用于Redis内存数据结构存储的默认端口
9200
用于Elasticsearch搜索和分析引擎的默认端口
9300
用于Elasticsearch搜索和分析引擎的默认端口

具体软件/服务

Moonlight

  • 配置
  1. 任务管理器
    1. 允许 Sunshine / NVIDIA 的服务
  1. Windows Defender
    1. 允许 Sunshine / NvContainer
      C:\Program Files\NVIDIA Corporation\NvContainer\nvcontainer.exe
  1. 放行端口
    1. # 以管理员模式运行 start-process PowerShell -verb runas
      # GameStream netsh advfirewall firewall add rule name="GameStream TCP" dir=in protocol=tcp localport=47984,47989,48010 action=allow netsh advfirewall firewall add rule name="GameStream UDP" dir=in protocol=udp localport=5353,47998-48010 action=allow
      # Sunshine netsh advfirewall firewall add rule name="Sunshine UDP" dir=in protocol=udp localport=47998-48000 action=allow netsh advfirewall firewall add rule name="Sunshine TCP" dir=in protocol=tcp localport=47984,47989,47990,48010 action=allow
  • Wake-on-lan
  1. Bios 设置
    1. 高级 → 高级电源管理(APM) → Power On By PCI-E
  1. 配置网卡驱动
    1. ncpa.cpl
      网卡 → 属性 → 配置 → 高级 → 魔术封包唤醒
      电源管理 → 允许此设备唤醒计算机
  1. 电源设置
    1. control powercfg.cpl
      启用快速启动

Tailscale

  • On OpenWrt
  1. 安装
    1. opkg update opkg install tailscale
  1. 配置接口
    1. 网络 -> 防火墙 -> 添加Tailscale -> 全部接受 -> 勾选IP动态伪装和MSS钳制 -> 允许转发到目标区域:lan,wan -> 允许来自源区域的转发:lan
    2. 网络 -> 接口 -> 添加Tailscale -> 不配置协议 -> 设备:tailscale0 -> 防火墙:Tailscale
  1. 配置 Tailscale
    1. tailscale up --advertise-routes="Your IP Address"\ --accept-routes\ --advertise-exit-node\ --accept-dns=false
  • On Mac OS
  1. 从 App Store 安装 Tailscale
  1. 配置环境变量
    1. echo 'export PATH="/Applications/Tailscale.app/Contents/MacOS:$PATH"' >> .zshrc source .zshrc