目錄
1. 為什麼要了解 IP 和端口?
如果你準備學習量化交易開發,或者想把你的交易程序部署到雲服務器上 24/7 運行,那麼 IP 地址和端口是你繞不開的基礎概念。
這兩個概念會出現在很多地方:
- 連接交易所 API(如 Binance WebSocket 地址
wss://stream.binance.com:9443) - 部署交易機器人到雲服務器(需要配置 IP 和防火牆端口)
- 運行本地 Web 服務(如
http://localhost:8080) - 數據庫連接(如 MySQL 默認端口
3306)
別擔心,這篇文章會用最生活化的比喻,讓你徹底搞懂這兩個概念!
2. IP 地址:網絡世界的「門牌號」
2.1 什麼是 IP 地址?
生活比喻:
想像整個互聯網是一座超級大城市,每台電腦/手機/服務器都是這座城市裡的一棟建築。
IP 地址就是每棟建築的門牌號碼,讓郵差(數據包)知道要把信件(數據)送到哪裡。
IP 是 Internet Protocol(互聯網協議)的縮寫。IP 地址是一串數字,用來唯一標識網絡上的每一台設備。
2.2 IP 地址長什麼樣?
目前有兩種 IP 地址格式:
| 類型 | 格式 | 示例 | 說明 |
|---|---|---|---|
| IPv4 | 4 組數字(0-255) | 192.168.1.100 |
最常見,但地址數量有限 |
| IPv6 | 8 組十六進制 | 2001:0db8:85a3::8a2e:0370:7334 |
更新更長,地址幾乎無限 |
日常生活中,我們接觸最多的還是 IPv4,所以本文主要講解 IPv4。
2.3 公網 IP vs 私網 IP
比喻:小區 vs 城市地址
公網 IP = 你家小區在城市裡的地址(如「深圳市南山區科技園路100號」),全世界唯一
私網 IP = 你家在小區內的門牌號(如「3棟502室」),只在小區內有效
| 類型 | 範圍 | 用途 | 示例 |
|---|---|---|---|
| 公網 IP | 全球唯一 | 服務器、網站、直接訪問互聯網 | 8.8.8.8(Google DNS) |
| 私網 IP | 局域網內 | 家庭/公司內部設備 | 192.168.x.x、10.x.x.x |
以下開頭的都是私網 IP,不能直接被外網訪問:
10.x.x.x172.16.x.x~172.31.x.x192.168.x.x
2.4 特殊的 IP 地址
| IP 地址 | 名稱 | 含義 |
|---|---|---|
127.0.0.1 |
localhost(本機) | 指向自己這台電腦,用於本地測試 |
0.0.0.0 |
所有地址 | 監聽所有網卡的所有 IP |
255.255.255.255 |
廣播地址 | 向局域網內所有設備發送消息 |
3. 端口:大樓裡的「房間號」
3.1 什麼是端口?
生活比喻:
如果 IP 地址是一棟大樓的地址,那麼端口就是大樓裡的房間號。
一棟大樓(一台服務器)可以有很多房間(端口),每個房間住著不同的租戶(服務):
• 101 室住著「網頁服務」
• 102 室住著「郵件服務」
• 103 室住著「數據庫服務」
端口(Port)是一個 0-65535 之間的數字,用來區分同一台電腦上運行的不同服務/程序。
3.2 為什麼需要端口?
一台服務器可能同時運行很多服務:網站、數據庫、郵件服務器、交易 API 等。當數據包到達這台服務器時,操作系統需要知道把數據交給哪個程序處理。
端口就是這個「分發員」的依據:
- 訪問網站 → 數據送到 80 或 443 端口 → Web 服務器處理
- 發送郵件 → 數據送到 25 或 587 端口 → 郵件服務器處理
- 連接數據庫 → 數據送到 3306 端口 → MySQL 處理
3.3 常見的端口號
| 端口 | 服務 | 說明 |
|---|---|---|
22 |
SSH | 遠程登錄服務器(Linux) |
80 |
HTTP | 網頁服務(無加密) |
443 |
HTTPS | 網頁服務(加密) |
3306 |
MySQL | MySQL 數據庫 |
5432 |
PostgreSQL | PostgreSQL 數據庫 |
6379 |
Redis | Redis 緩存數據庫 |
8080 |
HTTP 備用 | 常用於開發測試 |
9443 |
Binance WebSocket | 幣安實時行情推送 |
- 0-1023:系統保留端口(需要管理員權限)
- 1024-49151:註冊端口(常用服務)
- 49152-65535:動態/私有端口(臨時使用)
4. IP + 端口:完整的通訊地址
IP 地址和端口組合在一起,才能構成一個完整的網絡通訊地址,通常寫成 IP:端口 的格式:
192.168.1.100:8080
127.0.0.1:3306
8.8.8.8:53
完整比喻:
寄一封信需要完整地址:「深圳市南山區科技園路100號 3棟502室」
網絡通訊也一樣:「192.168.1.100:8080」
• 192.168.1.100 = 城市地址(哪棟樓)
• 8080 = 房間號(哪個服務)
4.1 URL 中的端口
你平時訪問的網址,其實也包含端口,只是被省略了:
| 你輸入的 | 實際訪問的 | 說明 |
|---|---|---|
http://google.com |
http://google.com:80 |
HTTP 默認 80 端口 |
https://google.com |
https://google.com:443 |
HTTPS 默認 443 端口 |
http://localhost:8080 |
http://127.0.0.1:8080 |
本地開發常用 |
5. 實戰:查看你電腦的 IP 和端口
5.1 查看本機 IP 地址
Windows:
# 打開 CMD 或 PowerShell,輸入:
ipconfig
macOS / Linux:
# 打開終端,輸入:
ifconfig
# 或者
ip addr
5.2 查看正在使用的端口
Windows:
# 查看所有正在監聽的端口
netstat -an | findstr LISTENING
macOS / Linux:
# 查看所有正在監聽的端口
netstat -tlnp
# 或者
lsof -i -P -n | grep LISTEN
5.3 查看公網 IP
你的電腦對外的公網 IP(經過路由器 NAT 轉換後):
# 方法1:訪問網站
curl ifconfig.me
# 方法2:訪問另一個服務
curl ip.sb
5.4 Python 獲取 IP 和測試端口
import socket
# 獲取本機主機名
hostname = socket.gethostname()
print(f"主機名: {hostname}")
# 獲取本機 IP
local_ip = socket.gethostbyname(hostname)
print(f"本機 IP: {local_ip}")
# 測試某個端口是否開放
def check_port(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3)
result = sock.connect_ex((host, port))
sock.close()
return result == 0
# 測試 Google DNS 的 53 端口
if check_port("8.8.8.8", 53):
print("8.8.8.8:53 端口開放")
else:
print("8.8.8.8:53 端口關閉")
6. 在量化交易中的應用
理解了 IP 和端口,你就能看懂這些量化交易中常見的配置了:
6.1 連接交易所 API
# Binance WebSocket 實時行情
# wss://stream.binance.com:9443/ws/btcusdt@trade
# └── 協議 └── 域名(會解析成 IP)└── 端口
import websocket
ws = websocket.create_connection(
"wss://stream.binance.com:9443/ws/btcusdt@trade"
)
6.2 部署到雲服務器
# SSH 連接到你的雲服務器(22 端口)
ssh [email protected]
# 開放防火牆端口(讓外部能訪問你的服務)
# AWS 安全組 / 阿里雲安全組 中配置:
# 入站規則:TCP 8080 端口 允許 0.0.0.0/0
6.3 本地運行 Web 監控面板
# Flask 運行在本地 5000 端口
from flask import Flask
app = Flask(__name__)
@app.route('/')
def dashboard():
return "交易監控面板"
if __name__ == '__main__':
# 監聽所有 IP 的 5000 端口
app.run(host='0.0.0.0', port=5000)
# 訪問地址:http://127.0.0.1:5000
- IP 地址 = 網絡上的「門牌號」,標識哪台設備
- 端口 = 設備上的「房間號」,標識哪個服務
- IP:端口 = 完整的通訊地址
- 常用端口:22(SSH)、80(HTTP)、443(HTTPS)、3306(MySQL)
掌握這些基礎知識後,你在學習量化交易的第十課:服務器部署時會更加得心應手!