您當前的位置:首頁 > 北塔知識庫

深入淺出歸納TCP/IP網絡協議

時間:2014-08-13

摘要:
TCP/IP 是一個協議族,也是按照層次劃分。共四層:應用層,傳輸層,互連網絡層,網絡接口層。  關鍵字:TCP/IP網絡協議

前段時間做了一個開發,涉及到網絡編程,開發過程比較順利,但任務完成后始終覺得有一些疑惑。主要是因為對網絡協議不太熟悉,對一些概念也沒弄清楚。后來 我花了一些時間去了解這些網絡協議,現在對TCP/IP網絡協議有了初步的認識,在這里總結出來,可以梳理一下我對網絡協議的理解,加深印象.

話說兩臺電腦要通訊就必須遵守共同的規則,就好比兩個人要溝通就必須使用共同的語言一樣。一個只懂英語的人,和一個只懂中文的人由于沒有共同的語言(規則)就沒辦法溝通。兩臺電腦之間進行通訊所共同遵守的規則,就是網絡協議。

對TCP/IP網絡協議的深入淺出歸納

那么誰來制定這個網絡協議?

國際標準化組織(ISO)定義了網絡協議的基本框架,被稱為OSI模型。要制定通訊規則,內容會很多,比如要考慮A電腦如何找到B電腦,A電腦在發送信息 給B電腦時是否需要B電腦進行反饋,A電腦傳送給B電腦的數據的格式又是怎樣的?內容太多太雜,所以OSI模型將這些通訊標準進行層次劃分,每一層次解決 一個類別的問題,這樣就使得標準的制定沒那么復雜。OSI模型制定的七層標準模型,分別是:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。

雖然國際標準化組織制定了這樣一個網絡協議的模型,但是實際上互聯網通訊使用的網絡協議是TCP/IP網絡協議。

TCP/IP 是一個協議族,也是按照層次劃分。共四層:應用層,傳輸層,互連網絡層,網絡接口層。 那么TCP/IP協議和OSI模型有什么區別呢?OSI網絡協議模型,是一個參考模型,而TCP/IP協議是事實上的標準。TCP/IP協議參考了OSI 模型,但是并沒有嚴格按照OSI規定的七層去劃分標準,而只劃分了四層,個人覺得這樣會更簡單點,當劃分太多層次時,你很難區分某個協議是屬于哪個層次 的。TCP/IP協議和OSI模型也并不沖突,TCP/IP協議中的應用層協議,就對應于OSI中的應用層,表示層,會話層。就像以前有工業部和信息產業 部,現在實行大部制后只有工業和信息化部一個部門,但是這個部門還是要做以前兩個部門一樣多的事情,本質上沒有多大的差別。TCP/IP中有兩個重要的協 議,傳輸層的TCP協議和互連網絡層的IP協議,因此就拿這兩個協議做代表,來命名整個協議族了,在說TCP/IP協議時,是指整個協議族。

TCP/IP協議分為四個層次,但我們并不需要了解所有層次的協議,我覺得主要關注應用層和傳輸層的協議就可以了。拿寄送郵件舉例, A寄郵件給B,A關心的是用什么格式寫什么內容給B(應用層內容),是寄掛號信還是寄平信(傳輸層內容),但是A是不會去關注郵件傳送過程中采用了那條路 線,郵遞員是如何把信件遞送到B手里的(互連網絡層,網絡接口層)。

先說傳輸層,傳輸層有多個協議,但最主要的是TCP和UDP協議。兩則的區別在于TCP協議需要接收方反饋,UDP協議不需要接收方反饋。TCP就像掛號 信,A電腦發信息給B電腦后,需要得到B電腦的反饋,這樣A電腦就能知道B電腦是否已經收到信息。UDP就像平信,A電腦發信息給B電腦后,B電腦并不給 A電腦發聵,A電腦發送信息出去后并不知道B電腦是否已經收到。 因此,TCP傳輸比UDP傳送更可靠,但是TCP傳輸的效率就不如UDP了。至于,在傳送過程中具體選擇哪種傳送方式,需要具體問題具體分析。在不可靠的 網絡傳送過程中一般選擇TCP傳送方式。在講求效率,或者不在乎傳送失誤的情況下可以選擇UDP方式來提高傳輸速率。

應用層的協議有很多,每一個協議代表一種類型的服務。HTTP協議,萬維網服務。FTP協議,文件傳送服務。POP3,郵件服務,SOAP協議webService服務。

在理解TCP/IP協議的過程中,我遇到了三個困惑。

什么是socket?

以前有聽說過socket編程這種說法,也有的說套接字編程。我在搜索關于socket的資料時,發現有的說socket是指一個連接,有的說 socket是一指一個端點。拿打電話做比喻,A電話機和B電話機正在通話,那么socket是指的A和B之間的連接線呢,還是指電話機(端點)?

我現在的理解是,socket就是一個連接中的一個端點,一次通訊(連接)a,b端都會有一個socket。一個socket對應一個連接。

http協議屬于應用層還是傳輸層?

http 超文本傳送協議,聽上去像是傳輸層的協議一樣。但事實上大家都知道http和ftp一樣都是屬于應用層的協議,我先前很納悶的是,既然是應用層的協議,怎 么就取這樣一個誤導人的名稱啊。在對TCP/IP協議還不熟悉的時候,這很容易讓人誤解和納悶的。后來,我在wiki上發現這么一段話:

http中文譯名問題

HTTP 在中國大陸被翻譯為“超文本傳輸協議”,因為“transfer”在中文里有“傳輸”的含意。但依據 HTTP 定制者之一的 Roy Fielding博士的論文[1](6.5.3節),作者專門強調“transfer”表示的是“(表述狀態的)轉移” (Representational State Transfer),而不是“傳輸”(transport)。故其中文譯名“超文本傳輸協議”恰恰引種反映了這種誤解。更符合原義的譯名應該為“超文本轉 移協議”。

這段話解除了我的疑惑。那么http協議當然是應用層的協議。

SOAP可以使用HTTP協議進行傳輸嗎?

在了解SOAP協議的過程中,看到介紹說soap可以通過tcp,udp,http協議來傳送。這也是讓人困惑的描述。一看這句話,就會感覺http怎么 和tcp,udp協議并列了呢?難道http還是屬于傳輸層的協議?再加上http中文譯名的問題,名字聽上去像傳輸層,初學者又要開始頭大了。

事實上,http是應用層的協議,這一點可以毫無懷疑。那么現在新的問題來了。soap和http都是應用層協議,怎么說soap能用http協議來傳輸呢?應用層的協議可以用應用層的協議傳送嗎?

我查閱了資料,是這樣一回事情,soap將信息進行XML的序列化后,再用http協議的方式再打包進行傳送,傳送的方式還是tcp或者udp。做個比喻 就好理解了。tcp 和 udp 都是公路,暫且把tcp認為是一般公路,udp高速公路,soap和http就都是汽車,那么soap和http都可以在tcp和udp上跑。說soap 可以通過http來傳送,實際就是說soap是小轎車,http是裝轎車的卡車,把soap的信息裝到http里面,然后再運輸,當然走的道路還是tcp 或udp。

說soap可以通過http協議來傳輸,這句話不太準確,比較準確第說法是:soap信息可以通過http協議包裝后通過tcp或udp傳輸。

本文來自互聯網,僅供參考

北塔軟件BTNM產品 免費試用

相關文章

產品中心
北塔BTSO 智慧運維平臺
新一代運維管理軟件,智能化、自動化成就智慧運維..
北塔BTDO業務保障系統
從網際數據流量角度分析業務、保障業務、守護業務...
EMonitor監控管家
輕量級自動監控管家,服務中小企事業單位...
解決方案
纯银3D投注 治疗疤痕赚钱 gdp与上证指数 天天赚钱软件是真的吗6 江西水泥股票行情 全球股票指数排名 互相赚钱的游戏 在泰国代购药品赚钱吗 短短嘛快速赚钱的方法 世界股票指数 滁州什么小吃赚钱 梦幻老区龙宫赚钱 普通程序员赚钱吗 瑞联盟赚钱吗 上证指数行情实时行情 开情怀店赚钱 玩客云 赚钱宝 赚钱宝pro