云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

《TCP 三次握手;端口 扫描攻击;公网私网IP区别》

jxf315 2025-08-21 03:29:29 教程文章 1 ℃

一、TCP 三次握手

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的可靠传输协议,其核心特性之一是在数据传输前建立逻辑连接。“三次握手(Three-Way Handshake)”是TCP连接建立的标准过程,用于确保客户端与服务器双方“同步”连接状态,并确认双方的发送和接收能力正常。

1. 三次握手的具体步骤

假设客户端(Client)主动连接服务器(Server),整个过程通过**SYN(同步序列号)ACK(确认应答)**两种标志位完成,具体步骤如下:

步骤

角色

发送的数据包

目的

第一步(SYN)

Client → Server

SYN=1(请求同步),Seq=x(客户端初始序列号,随机生成)

客户端向服务器声明:“我想和你建立连接,我的初始序列号是x。”

第二步(SYN+ACK)

Server → Client

SYN=1(同意同步),Seq=y(服务器初始序列号,随机生成),ACK=1(确认客户端的SYN),Ack=x+1

服务器向客户端声明:“收到你的连接请求,我的初始序列号是y,确认你可以发送数据(x+1表示下一个期望接收的序列号)。”

第三步(ACK)

Client → Server

ACK=1(确认服务器的SYN),Seq=x+1(客户端下一个序列号),Ack=y+1(确认服务器的序列号)

客户端向服务器声明:“收到你的确认,我的下一个序列号是x+1,确认你可以发送数据(y+1表示我期望接收的下一个序列号)。”

2. 为什么需要“三次”握手?

关键目的是防止“失效的连接请求”被误接收。假设采用两次握手:

  • 客户端发送SYN后,若因网络延迟未收到服务器的SYN+ACK,可能重发SYN;
  • 服务器收到第一次SYN后回复SYN+ACK,若客户端未收到,服务器会认为连接已建立并等待数据;
  • 此时客户端重发的SYN到达服务器,服务器会认为是新的连接请求,导致“半开连接”(Half-Open Connection)浪费资源。

三次握手通过“客户端最终确认”避免了这一问题:服务器只有在收到客户端的第三次ACK后,才会正式建立连接并分配资源。

3. 安全风险与防御

三次握手的缺陷可能被攻击者利用,典型风险是SYN洪水攻击(SYN Flood)

  • 攻击者伪造大量客户端的SYN包(不发送第三次ACK),导致服务器的“半连接队列”被填满(半开连接无法释放);
  • 服务器无法处理新的合法连接请求,最终导致服务瘫痪(DoS攻击)。

防御方法

  • SYN Cookie:服务器不立即分配半连接队列资源,而是通过加密算法生成一个“Cookie”(基于客户端IP、端口、时间戳等),在收到第三次ACK时验证Cookie有效性,减少资源消耗;
  • 防火墙速率限制:通过防火墙限制单位时间内SYN包的数量(如每分钟仅允许100个SYN请求);
  • 缩短半连接超时时间:减少服务器等待第三次ACK的时间(如从默认的60秒缩短至30秒)。

二、端口扫描攻击

端口扫描(Port Scanning)是攻击者通过向目标主机的特定端口发送探测数据包,判断端口是否开放、运行何种服务的技术。其核心目的是收集目标网络的服务信息,为后续攻击(如漏洞利用)提供依据。

1. 端口扫描的原理

  • 端口状态:TCP端口有65536个(0-65535),分为“开放”(服务监听)、“关闭”(无服务监听)、“过滤”(被防火墙拦截)三种状态;
  • 探测方式:通过发送特定类型的TCP/UDP数据包(如SYN、ACK、FIN),根据目标返回的响应(如RST、SYN-ACK)判断端口状态。

2. 常见扫描类型

扫描类型

原理

特点

工具示例

全连接扫描(TCP Connect)

完成三次握手(发送SYN→接收SYN+ACK→发送ACK),与目标建立完整连接。

技术简单,但会留下完整的连接日志(易被检测)。

Netcat(nc)、Telnet

半开放扫描(SYN Scan)

仅发送SYN包,不完成三次握手:
- 若目标返回SYN+ACK(端口开放),则发送RST终止连接;
- 若返回RST(端口关闭),则停止。

隐蔽性强(无完整连接日志),是最常用的扫描方式。

Nmap(-sS参数)

FIN扫描(FIN Scan)

发送FIN包(用于关闭连接),若目标返回RST(端口关闭),否则认为端口开放(适用于无状态防火墙)。

绕过部分防火墙规则,但对Windows系统无效(Windows会忽略FIN包)。

Nmap(-sF参数)

UDP扫描(UDP Scan)

发送UDP数据包到目标端口:
- 若目标返回ICMP“端口不可达”(端口关闭);
- 无响应则可能开放(或被防火墙过滤)。

耗时久(UDP无连接),但可发现DNS、SNMP等UDP服务。

Nmap(-sU参数)

3. 安全风险与防御

端口扫描的直接风险是暴露网络服务信息(如开放了SSH 22端口、HTTP 80端口),攻击者可针对性利用服务漏洞(如SSH弱密码、HTTP SQL注入)。

防御方法

  • 防火墙过滤:通过ACL(访问控制列表)限制外部对非必要端口的访问(如仅开放80/443端口);
  • 端口最小化:关闭不必要的服务端口(如禁用Telnet 23端口,改用SSH 22);
  • 入侵检测(IDS):部署IDS监控异常扫描行为(如短时间内大量SYN包发送到不同端口);
  • 服务加固:对开放端口的服务(如SSH、HTTP)启用认证(如密钥登录)、加密(如TLS)和漏洞修复(定期更新补丁)。

三、公网IP与私网IP的区别

IP地址是网络设备的“网络身份证”,根据使用范围可分为公网IP(Public IP)和私网IP(Private IP),两者的核心差异在于“是否可在互联网上全局路由”。

1. 定义与范围

类型

定义

IP地址范围(RFC 1918标准)

唯一性

公网IP

由互联网号码分配机构(IANA)或其授权机构(如APNIC、ARIN)分配,可在全球互联网上唯一标识一个设备。

- A类:0.0.0.0~9.255.255.255(保留0.0.0.0/8和127.0.0.0/8)
- B类:10.0.0.0~10.255.255.255(私有)
- C类:172.16.0.0~172.31.255.255(私有)
- D类:224.0.0.0~239.255.255.255(多播)
- E类:240.0.0.0~255.255.255.255(保留)

全球唯一,无重复。

私网IP

由企业/家庭内部网络(如局域网、校园网)自行分配,仅在局域网内有效,无法直接在互联网上路由。

10.0.0.0/8(10.0.0.0~10.255.255.255)
172.16.0.0/12(172.16.0.0~172.31.255.255)
192.168.0.0/16(192.168.0.0~192.168.255.255)

局域网内唯一,不同局域网可重复(如多家公司都可使用192.168.1.1)。

2. 核心差异

维度

公网IP

私网IP

作用范围

全球互联网(跨运营商、跨国家)。

局域网(如企业内网、家庭Wi-Fi)。

路由能力

可被互联网核心路由器(如BGP路由表)识别并转发。

仅能在局域网内路由(需通过NAT转换为公网IP才能访问互联网)。

分配方式

由IANA或其授权机构分配(需申请,费用较高)。

由局域网管理员自行分配(如路由器DHCP自动分配)。

典型场景

企业服务器(如官网、邮件服务器)、云服务器(如阿里云ECS的公网IP)。

个人电脑、手机、智能家居设备(通过家庭路由器共享公网IP访问互联网)。

3. NAT(网络地址转换)的作用

由于私网IP无法直接访问互联网,需通过**NAT(Network Address Translation,网络地址转换)**技术将私网IP映射为公网IP。典型场景:

  • 家庭网络:路由器(公网IP:223.5.5.5)为内网设备(私网IP:192.168.1.100)分配临时公网端口(如223.5.5.5:12345),实现内网设备访问互联网;
  • 企业网络:企业出口路由器将多个内网私网IP(如10.1.1.2~10.1.1.100)映射到一个公网IP的不同端口,节省公网IP资源。

4. 安全影响

  • 公网IP暴露风险:公网IP直接暴露在互联网中,易成为攻击目标(如DDoS、端口扫描),需部署防火墙、WAF等防护措施;
  • 私网IP隐蔽性:私网IP无法被互联网直接访问,天然具备一定隐蔽性,但需防范内网横向渗透(如攻击者通过钓鱼邮件进入内网后,扫描私网IP的开放端口)。

总结

TCP三次握手是TCP连接的“握手仪式”,需重点关注SYN洪水攻击的防御;端口扫描是攻击者的“信息收集工具”,需通过网络设备过滤和IDS监控应对;公网与私网IP的本质区别是“全局唯一性”,NAT技术则是连接两者的桥梁。理解这些概念,有助于数通工程师在设计网络架构时平衡通信需求与安全性(如合理分配公网IP、限制私网端口开放),并为后续渗透测试、安全防护提供基础。

Tags:

最近发表
标签列表