首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 網絡編程基石:IP 地址、域名、端口、協議全景解析

     編輯:Java 相關知識

網絡編程的本質是「兩個端點按約定格式交換數據」。要建立連接,必須搞懂四大基石:IP 地址(定位設備)、域名(人類可讀別名)、端口(定位進程)、協議(數據格式契約)。本文系統梳理核心概念、分類規則、編碼細節與實戰注意點。

IP 地址:網絡層的身份證

IPv4:32 位經典

  • 格式:X.X.X.X,每段 0-255 (8 位)
  • 總數:2³² ≈ 42.9 億,扣除保留地址(私有網段、環回、組播、廣播)可用更少
  • 分類(歷史產物,現以 CIDR 無類別域間路由為主):
    • A 類:1.0.0.0 - 126.255.255.255,掩碼 255.0.0.0 (/8)
    • B 類:128.0.0.0 - 191.255.255.255,掩碼 255.255.0.0 (/16)
    • C 類:192.0.0.0 - 223.255.255.255,掩碼 255.255.255.0 (/24)
  • 特殊地址:
    • 0.0.0.0:本機所有介面 / 預設路由
    • 127.0.0.1:環回地址,本機內部通信
    • 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16:私有網段 (RFC 1918)
    • 169.254.0.0/16:鏈路本地地址 (DHCP 失敗時自分配)

IPv6:128 位未來

  • 格式:8 組 16 位十六進制,冒號分隔 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • 壓縮規則:
    1. 每組前導零可省略:2001:db8:85a3:0:0:8a2e:370:7334
    2. 連續全零組可用 :: 替換(僅能出現一次):2001:db8:85a3::8a2e:370:7334
  • IPv4 嵌入:::ffff:192.168.1.1 (IPv4-mapped IPv6 address)
  • 常見前綴:
    • ::1/128:環回
    • fe80::/10:鏈路本地
    • fc00::/7:唯一本地地址 (ULA,類似 IPv4 私有網段)
    • 2000::/3:全球單播

域名系統 (DNS):人類記憶的橋樑

層級結構 (從右向左):
  . (根域) → com (頂級域 TLD) → example (二級域) → www (三級域/主機名)
  完整 FQDN:www.example.com.
類別範例說明
通用頂級域 (gTLD).com, .org, .net, .edu, .gov, .io, .dev按用途分類
國家代碼頂級域 (ccTLD).cn, .us, .jp, .uk, .de按國家/地區分類
二級域example.com組織註冊的核心標識
三級域www.example.com, api.example.com業務子系統/主機標識

解析流程:應用調用 getaddrinfo() → 本地緩存 → 系統 DNS 客戶端 → 遞歸解析器 → 根/頂級/權威服務器 → 返回 A/AAAA 記錄 → 緩存並返回 IP。

端口:傳輸層的進程選擇器

  • 範圍:0-65535 (16 位)
  • 分類:
    • 0-1023:知名端口 (Well-known),需 root/admin 權限綁定 (HTTP 80, HTTPS 443, SSH 22, DNS 53...)
    • 1024-49151:註冊端口 (Registered),IANA 註冊應用使用
    • 49152-65535:動態/私有端口 (Ephemeral),客戶端臨時分配
  • Socket = IP + 端口 + 協議,唯一標識一個通信端點

傳輸協議:TCP vs UDP

特性TCP (傳輸控制協議)UDP (用戶數據報協議)
連接模式面向連接 (三次握手/四次揮手)無連接
可靠性可靠:序號、確認、重傳、流控、擁塞控制不可靠:盡力交付,可能丟包、亂序、重複
有序性保證順序交付不保證順序
邊界字節流,無消息邊界 (需應用層分幀)數據報,保留消息邊界
開銷頭部 20-60 字節,狀態機維護成本高頭部 8 字節,無狀態
典型場景Web、郵件、資料庫、SSH、檔案傳輸DNS、流媒體、即時遊戲、IoT 心跳、廣播/組播

應用層協議:數據格式契約

協議定義「雙方如何編碼/解碼業務數據」。核心要素:

  • 消息結構:長度前綴 / 分隔符 / 固定長度 / 自描述 (JSON, Protobuf, MessagePack)
  • 請求/響應模式:同步阻塞、異步回調、雙工流
  • 錯誤處理:狀態碼、錯誤碼、重試語義
  • 版本演進:向前/向後兼容策略

Java 核心網絡 API 快速對照

功能TCP (客戶端)TCP (服務端)UDP
Socket 類SocketServerSocketDatagramSocket
數據單元InputStream/OutputStreamInputStream/OutputStreamDatagramPacket
地址封裝InetSocketAddress (IP + 端口)InetSocketAddressInetSocketAddress

總結

網絡編程不再神秘:IP 定位機器,端口定位進程,協議定義格式。掌握 IPv4/IPv6 寫法、DNS 解析鏈、TCP/UDP 特性對比、應用層協議設計原則,配合 Java NIO/NIO.2/Netty 等高級框架,即可構建健壯、高效的分布式系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved