TCP/IP 是在編程中遇到網(wǎng)絡問題時,經(jīng)常聽到的一個詞語巷查,那么該如何準確理解 TCP/IP 呢?TCP/IP 是兩個詞 TCP 和 IP 的組合撩独,是處于不同網(wǎng)絡層級的概念。首先看一下網(wǎng)絡分層。
ISO ( International Organization for Standardization)是“國際標準化組織”的英文簡稱,成立于 1947 年 2 月 23 日锌唾,是世界上最大的國際化標準組織。網(wǎng)絡分層是 ISO 提出的關于網(wǎng)絡通信的概念模型捶牢,稱為 OSI (Open System Interconnection Model)開放系統(tǒng)連接模型鸠珠。ISO 的初衷是提供一個使各種不同的的計算機和網(wǎng)絡在世界范圍內實現(xiàn)互聯(lián)的標準框架。
下面是 OSI 七層模型的詳細規(guī)定:
從圖中可以很明顯的看出 7 層模型包括物理層秋麸、數(shù)據(jù)鏈路層、網(wǎng)絡層炬太、傳輸層灸蟆、會話層、表示層和應用層亲族。以我們經(jīng)常使用的 QQ 為例炒考,完成一次 QQ 聊天,需要經(jīng)歷如下步驟:
1 QQ 軟件運行在應用層霎迫;
2 當發(fā)送信息時斋枢,需要將輸入的漢語、圖片等信息知给,進行轉換翻譯成計算機理解的語言瓤帚,需要遵循表示層協(xié)議描姚;
3 不同的計算機建立會話,處于會話層戈次;
4 然后建立端到端的通信轩勘,不同計算機上 QQ 進程的端口號建立鏈接,對信息進行分組怯邪,使用 TCP 協(xié)議(安全通信)绊寻,或者 UDP 協(xié)議(非安全通信);
5 將分組好的信息悬秉,通過路由尋址澄步,進過不同的網(wǎng)路,傳遞到目的地和泌,遵循網(wǎng)絡層協(xié)議村缸;
6 對路由地址,進行物理地址轉換允跑,處于鏈路層王凑;
7 電子、光纖上的比特流傳送聋丝,處于物理層索烹;
比特流到達目的計算機后,在依次進行物理層->鏈路層->網(wǎng)絡層->傳輸層->會話層->表示層->應用層數(shù)據(jù)的解析弱睦,然后就能看到用戶發(fā)送的 QQ 信息百姓。
TCP 協(xié)議處于傳輸層,負責對數(shù)據(jù)進行分組况木,并且保證數(shù)據(jù)有效到達對方垒拢。其常常和 UDP 對照理解:
項目 | TCP | UDP |
---|---|---|
連接 | 端到端連接 | 不連接 |
安全 | 安全傳遞 | 不安全 |
使用 | 一對一 | 一對多、多對多火惊、多對一 |
效率 | 報文頭長求类,效率低 | 報文頭端,效率高 |
IP 處于網(wǎng)絡層屹耐,用于定位不同計算機地址尸疆,目前使用的有 IPv4 和 IPv6 兩種, IPv4 采用 32 位來定義不同地址惶岭,由于計算機數(shù)量的超預期發(fā)展寿弱,IPv4 地址處于枯竭的邊緣,因此 ISO 提出了 IPv6 的概念按灶,使用 128 位來定義不同的計算機地址症革,已經(jīng)遠遠多于計算機的個數(shù),目前使用范圍不斷擴大鸯旁。
TCP/IP 統(tǒng)稱為 Socket (套接字) 噪矛,基于 TCP/IP 能夠實現(xiàn)兩個計算機間數(shù)據(jù)的安全通信量蕊,是網(wǎng)絡協(xié)議中非常重要的一組概念∧σ桑基于 TCP/IP 危融,上層定義的有 HTTP、SOCKET雷袋、FTP 等協(xié)議吉殃,從底層來看,這幾個協(xié)議沒有區(qū)別楷怒。如果將網(wǎng)絡看成一個高速公路蛋勺,TCP/IP 協(xié)議可以看成 ISO 定義的最通用的一條公路,HTTP/SOCKET/FTP 就相當于不同的車型鸠删,比如專用于拉貨的大貨車抱完、拉人的客車和個人開的小轎車等。不同的車型用于不同的場景刃泡,TCP/IP 之上選擇何種協(xié)議巧娱,也要取決于實現(xiàn)的目的。
準確理解 TCP/IP 烘贴,需要基于對 OSI 七層協(xié)議的整體認識禁添,以上對二者進行了簡要的介紹,更詳細深入的理解桨踪,還需要參考 ISO 國際標準組織的手冊老翘。