TCP 是什么?它和 IP、端口以及网络扫描有什么关系
TCP(传输控制协议)是在 IP 之上提供可靠、面向连接的字节流传输的协议。IP 只负责把数据包送到目标地址,不保证送达、不保证顺序、也不保证不重复;TCP 补上了这些:它先建立连接,再按序传输数据,丢失就重传,收到就确认。所以当你需要"数据完整、顺序正确"时用 TCP,需要"快、能容忍丢包"时常用 UDP。理解 TCP 的连接和端口机制,也是看懂 IP 扫描器、端口扫描器扫描结果的前提。
TCP 与 IP 的分工
两者常被合称 TCP/IP,但职责完全不同:
| 维度 | IP | TCP |
|---|---|---|
| 主要职责 | 寻址与路由,把包送到目标主机 | 可靠性、顺序、流量控制、连接管理 |
| 是否面向连接 | 否,每个包独立处理 | 是,通信前先建立连接 |
| 可靠性 | 不保证送达、顺序、去重 | 确认、重传、排序、去重 |
| 数据形态 | 数据包 | 字节流 |
| 典型关注点 | 地址、子网、路由 | 端口、连接状态、握手 |
一句话:IP 负责"送到哪台机器",TCP 负责"这台机器上的这次通信是否可靠、有序"。
端口与 TCP 连接
一台主机只有一个 IP 地址,但要同时跑网页、邮件、文件传输等多种服务,靠端口区分。端口是 0–65535 的编号,服务通常监听固定端口,客户端发起连接时使用临时端口。
一个 TCP 连接由四元组唯一标识:
- 源 IP
- 源端口
- 目标 IP
- 目标端口
这也是为什么扫描工具探测的是"某 IP 的某端口":它其实在问"这个地址的这个端口上,有没有服务愿意接受 TCP 连接"。
三次握手:连接是怎么建立的
TCP 建立连接的过程叫三次握手,理解它就能理解扫描结果的含义:
- 客户端发送 SYN,请求建立连接。
- 服务端回复 SYN-ACK,表示愿意接受。
- 客户端再发 ACK,连接建立,双方开始传数据。
由此可以推断端口状态:
- 端口开放:目标回了 SYN-ACK,说明有服务在监听。
- 连接被拒绝:目标回了 RST,说明主机可达但该端口没有服务。
- 超时无响应:可能被防火墙丢弃,或主机不可达。
排查 TCP 连通性问题时,区分"拒绝"和"超时"很关键——前者通常是端口没开,后者更可能是链路或防火墙问题。
哪些应用依赖 TCP
- 网页浏览(HTTP/HTTPS)
- 邮件(SMTP、POP3、IMAP)
- 文件传输(FTP、SFTP)
- 远程登录(SSH、Telnet)
这些场景都要求数据完整、顺序正确,所以选 TCP。而 DNS 查询、视频流、语音通话等更看重低延迟、能容忍少量丢包,常用 UDP。
用扫描工具观察 TCP 端口
像 Angry IP Scanner 这类开源、跨平台的网络扫描器,就是通过探测 IP 地址和端口来工作的。根据其官网介绍,它可以扫描本地网络和互联网 IP 范围,支持 IP 范围、随机或文件形式的输入,结果可导出为多种格式,并可通过数据抓取器扩展、提供命令行界面,支持 Windows、Mac 和 Linux,且无需安装。
用它检查 TCP 端口时,可以按这个思路:
- 确定要扫描的 IP 范围(如某个子网)。
- 选择要探测的端口(如常见的 80、443、22)。
- 运行扫描,观察每个端口的响应。
- 根据"开放 / 拒绝 / 超时"判断服务是否存在及网络是否通畅。
需要提醒的是:扫描自己拥有或已获授权的网络是正常运维行为,扫描他人网络可能涉及法律和合规问题,动手前先确认授权范围。
常见卡点
- 把 IP 和 TCP 混为一谈:IP 通了不代表 TCP 端口通,反之亦然。
- 只看"通不通",不看"怎么不通":拒绝和超时的原因不同,处理方式也不同。
- 忽略端口:同一台主机不同端口状态可能完全不同,排查要落到具体端口。
- 以为扫描结果等于安全结论:端口开放只说明有服务在监听,是否安全还需进一步评估。