光會(huì)使用Socket的接口(API)去進(jìn)行基礎(chǔ)編程是遠(yuǎn)遠(yuǎn)不夠的,我們還必須還要了解整個(gè)網(wǎng)絡(luò)通信的傳輸流程。OSI開(kāi)放式系統(tǒng)互聯(lián),全稱(Open System Interconnection),OSI模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。
何為Socket?
第一篇文章我們首先簡(jiǎn)單介紹一下什么是Socket。在百度百科中是這樣介紹,網(wǎng)絡(luò)中,通過(guò)開(kāi)辟一個(gè)雙向的通信連接來(lái)實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端稱為一個(gè)Socket。
建立一個(gè)網(wǎng)絡(luò)通信連接至少要一對(duì)端口號(hào)(socket),socket本質(zhì)是編程接口(API),是對(duì)TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開(kāi)發(fā)所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力。
Socket實(shí)際上是應(yīng)用層與傳輸層之間的橋梁。

OSI七層模型與TCP/IP4層模型
OSI模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。
TCP/IP四層模型分別為網(wǎng)絡(luò)接口層(也可稱理解為數(shù)據(jù)鏈路層和物理層)、互聯(lián)網(wǎng)層(也稱網(wǎng)絡(luò)層)、傳輸層、應(yīng)用層。
目前來(lái)講OSI七層模型基本上被TCP/IP 4層模型淘汰。在當(dāng)今世界上沒(méi)有大規(guī)模使用。因此我們本文只著重介紹TCP/IP四層模型。
何為傳輸層?
傳輸層(Transport Layer),是TCP/IP模型層中最重要,也是最關(guān)鍵的一層。
傳輸層主要為兩臺(tái)主機(jī)上的應(yīng)用提供端對(duì)端的通信。其功能包括:一、格式化信息流;二、提供可靠傳輸。為實(shí)現(xiàn)后者,傳輸層協(xié)議規(guī)定接收端必須發(fā)回確認(rèn),并且假如分組丟失,必須重新發(fā)送。(一個(gè)端口對(duì)應(yīng)一個(gè)軟件)
傳輸層的TCP和UDP可以接收來(lái)自多個(gè)應(yīng)用程序的數(shù)據(jù)流,用端口號(hào)標(biāo)識(shí)他們。然后把他們送給Internet網(wǎng)絡(luò)層處理。同時(shí)TCP和UDP接收來(lái)自Internet網(wǎng)絡(luò)層的數(shù)據(jù)包,用端口號(hào)區(qū)分他們,然后交給不同的應(yīng)用程序。
傳輸層的兩大協(xié)議:TCP(傳輸控制協(xié)議)UDP(用戶數(shù)據(jù)包協(xié)議)
TCP是可靠面向連接傳輸協(xié)議,而UDP是不可靠或者說(shuō)無(wú)連接協(xié)議
UDP更像是手機(jī)發(fā)送短信,不需要關(guān)心對(duì)方號(hào)碼是否是空號(hào)(網(wǎng)絡(luò)不可到達(dá)),是否是開(kāi)機(jī)狀態(tài)。只管發(fā)出去即可,免不關(guān)心對(duì)方是否收到(丟包)。
而TCP更像是打電話,首先要確認(rèn)對(duì)方號(hào)碼是否是空號(hào),對(duì)方是否開(kāi)機(jī)(網(wǎng)絡(luò)可以到達(dá))、是否有信號(hào)。最后還要確認(rèn)對(duì)方是否有接聽(tīng)(通信連接)。
傳輸層的由來(lái)?
網(wǎng)絡(luò)層的ip幫我們區(qū)分子網(wǎng),以太網(wǎng)層的mac幫我們找到主機(jī),然后大家使用的都是應(yīng)用程序,你的電腦上可能同時(shí)開(kāi)啟qq,暴風(fēng)影音,等多個(gè)應(yīng)用程序。后續(xù)文章中我們會(huì)介紹網(wǎng)絡(luò)層ip與鏈路層mac。