C語言中文網 目錄
首頁 > socket 閱讀:2,197

IP、MAC和端口號——網絡通信中確認身份信息的三要素

在茫茫的互聯網海洋中,要找到一臺計算機非常不容易,有三個要素必須具備,它們分別是 IP 地址、MAC 地址和端口號。

IP地址

IP地址是 Internet Protocol Address 的縮寫,譯為“網際協議地址”。

目前大部分軟件使用 IPv4 地址,但 IPv6 也正在被人們接受,尤其是在教育網中,已經大量使用。

一臺計算機可以擁有一個獨立的 IP 地址,一個局域網也可以擁有一個獨立的 IP 地址(對外就好像只有一臺計算機)。對于目前廣泛使用 IPv4 地址,它的資源是非常有限的,一臺計算機一個 IP 地址是不現實的,往往是一個局域網才擁有一個 IP 地址。

在因特網上進行通信時,必須要知道對方的 IP 地址。實際上數據包中已經附帶了 IP 地址,把數據包發送給路由器以后,路由器會根據 IP 地址找到對方的地里位置,完成一次數據的傳遞。路由器有非常高效和智能的算法,很快就會找到目標計算機。

MAC地址

現實的情況是,一個局域網往往才能擁有一個獨立的 IP;換句話說,IP 地址只能定位到一個局域網,無法定位到具體的一臺計算機。這可怎么辦呀?這樣也沒法通信啊。

其實,真正能唯一標識一臺計算機的是 MAC 地址,每個網卡的 MAC 地址在全世界都是獨一無二的。計算機出廠時,MAC 地址已經被寫死到網卡里面了(當然通過某些“奇巧淫技”也是可以修改的)。局域網中的路由器/交換機會記錄每臺計算機的 MAC 地址。
MAC 地址是 Media Access Control Address 的縮寫,直譯為“媒體訪問控制地址”,也稱為局域網地址(LAN Address),以太網地址(Ethernet Address)或物理地址(Physical Address)。
數據包中除了會附帶對方的 IP 地址,還會附帶對方的 MAC 地址,當數據包達到局域網以后,路由器/交換機會根據數據包中的 MAC 地址找到對應的計算機,然后把數據包轉交給它,這樣就完成了數據的傳遞。

端口號

有了 IP 地址和 MAC 地址,雖然可以找到目標計算機,但仍然不能進行通信。一臺計算機可以同時提供多種網絡服務,例如 Web 服務(網站)、FTP 服務(文件傳輸服務)、SMTP 服務(郵箱服務)等,僅有 IP 地址和 MAC 地址,計算機雖然可以正確接收到數據包,但是卻不知道要將數據包交給哪個網絡程序來處理,所以通信失敗。

為了區分不同的網絡程序,計算機會為每個網絡程序分配一個獨一無二的端口號(Port Number),例如,Web 服務的端口號是 80,FTP 服務的端口號是 21,SMTP 服務的端口號是 25。

端口(Port)是一個虛擬的、邏輯上的概念。可以將端口理解為一道門,數據通過這道門流入流出,每道門有不同的編號,就是端口號。如下圖所示:

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo