端口
設備與外界通訊交流的出口,端口可分為虛擬端口和物理端口
物理端口:USB插口,網卡插口等
虛擬端口:計算機、交換機或路由器內的端口,不可見,如計算機中的21端口、22端口、80端口等
| 應用程序1,應用程序2 | 應用程序1,應用程序2 | |
|---|---|---|
| 端口1,端口2 | 端口1,端口2 | |
| 操作系統 | 操作系統 | |
| 網卡 | → 網絡 → | 網卡 |
如果一個程序要收發網絡數據,就需要有這樣的端口,Linux系統中端口有65536個
端口號
端口是通過端口號來標記的,端口號只有整數,范圍是 0 - 65535
端口的分配
端口號不是隨意使用的,而是按照一定規則進行分配,端口的分類標准有很多,此處只介紹知名端口和動態端口
知名端口(well known ports)
通用的端口,范圍是 0 - 1023,即常用功能使用的號碼是固定的,如果一個程序要使用知名端口的話通常需要root權限
| 常見協議 | 默認端口號 | 協議基本作用 |
|---|---|---|
| FTP | 21 | 文件上傳、下載 |
| SSH | 22 | 安全的遠程登錄 |
| TELNET | 23 | 遠程登錄 |
| SMTP | 25 | 郵件傳輸 |
| DNS | 53 | 域名解析 |
| POP3 | 110 | 郵件接收 |
| HTTP | 80 | 超文本傳輸 |
| HTTPS | 443 | 加密傳輸的HTTPS |
動態端口(dynamic ports)
用戶可以自己寫程序去綁定的,范圍是 1024 - 65535,動態端口一般不固定分配某種服務,而是動態分配
動態分配是指當一個系統程序或應用需要網絡通信時,它向主機申請一個端口,主機從可用的端口號中分配一個供它使用,當這個程序關閉時,釋放所占用的端口號
netstat
netstat 命令是一個監控 TCP/IP 網絡的工具,可以顯示網絡連接、路由表、網絡接口信息,可以讓用戶查看目前哪些網絡連接正在運作
netstat -an
查看端口狀態
# 查詢所有含該端口的信息
netstat -an | grep :端口號
lsof
# 查詢端口號被哪個程序占用
sudo lsof -i [TCP/UDP]:端口號
netstat -nlt
查看服務器 socket,即當前哪些正在監聽中,因為有些是已連接但不活躍的
