【基本網路概念之三】IP、TCP和UDP IP地址和域名 埠
IP、TCP和UDP
java支援的協議只有TCP和UDP,以及建立在TCP和UDP之上的應用層協議。所有其他傳輸層、網際層和更底層的協議,如ICMP、IGMP、ARP和其他協議在java程式中都只能通過連結到原生程式碼來實現。
IP地址和域名
IPv4網路中的每臺計算機都由宇哥4位元組的數字標識。一般寫為點四分段格式,這4個數都是無符號位元組,範圍是0~255。IPv4網路中的每臺計算機都有唯一的4位元組地址。當資料通過網路傳輸時,包的首部會包括髮往的機器地址(目的地址)和傳送這個包的機器地址(源地址)。沿路的路由器通過檢查目的地址來選擇傳送資料包的最佳路由。包括源地址是為了讓接收方知道要向誰回覆。
IPv6使用16位元組地址。通常寫為冒號分隔的8個區塊,每個區塊是4個十六進位制數字(一個塊兩個位元組)。
雖然計算機可以輕鬆處理數字,但人類對於記憶數字卻不在行。因此,開發了域名系統(Domai Name System,DNS),用來將人類易於記憶的主機名轉換為數字Internet地址。當java程式訪問網路時,它們需要同時處理數字地址和相應的主機名。這些方法由java.net.InetAddress類提供。
有些計算機(尤其是伺服器)有固定的地址。其他計算機(特別是區域網和無線連線上的客戶端)可能每次啟動時會收到不同的地址,這是由DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)伺服器提供的。動態分配和手工分配的地址之間的區別對java程式沒有影響。
埠
每臺有IP地址的計算機都有幾千個邏輯埠(確切地講,每個傳輸層協議有65535個埠)。這些只是計算機記憶體中的抽象,不表示任何物理實物,與USB埠不同。每個埠號由1到65535之間的一個數字標識。每個埠可以分配給一個特定的服務。例如,Web的底層協議HTTP一般使用埠80。