Android開發需要了解的TCP UDP網路協議

2021-09-22 10:13:29 字數 3108 閱讀 9409

盛唐年間,天下安定,由於疆域太大傳遞信件不易,就有民間的能人異士向皇帝諫言,每個州縣都建立資訊司來養信鴿。由信鴿來傳遞信件。皇帝覺得可行遍開始施行。

一日皇帝命小吏從東都洛陽發一封信件到西京,這個小吏第一次去資訊司發信件,到了資訊司發現只有乙個人處理信件。小吏便把信件交給了資訊司的小哥,只見小哥嫻熟的拿出只信鴿告訴它去西京,就放飛了,然後將信件謄抄了乙份,將信件撕成了三份,並標上了序號。過了不一會小哥剛剛放走信鴿飛回來了,只見小哥又將信鴿放飛了。然後拿出三個信鴿分別將三份信件綁到信鴿的腿上,然後將信鴿放飛了。這時候小吏就問了小哥一句:」為什麼剛剛只把信鴿放飛而不放信件啊!「。這時小哥不耐煩地說:」我要試試,我們州縣附近有沒有獵人,看看信鴿能不能飛出去。如果飛不出去就要找縣衙派兵沿途檢查一下路線了。「;小吏又問:」既然我們已經看到信鴿飛回來了,為什麼還要再次放出去。「。小哥繼續說:」西京那邊還不知道他能不能發信鴿。我需要告訴他一聲。「,談話間只看到傳遞 1,3 號信件的鴿子飛回來了。小哥說:」又有乙隻鴿子飛丟了。「,小吏急忙問道:」怎麼辦!如果出了差錯,我可是要被殺頭的。「。小哥說:」莫著急我們再等一柱香的時間,如果還不回來我們在把 2 號信件重新發一次就好了。「。一炷香過後,小哥又拿出乙隻信鴿把 2 號信件綁到鴿子的腿上。不一會傳遞 2 號信件的信鴿飛回來了。只見小哥又嫻熟的拿出乙隻信鴿放了出去,不一會飛回兩隻,然後小哥又放出去乙隻信鴿。小吏不解的問小哥:」你這個在幹什麼!「。小哥說:「我這是再告訴西京那邊我的資訊發完了。然後西京告訴我他知道了並讓我把備份的信件銷毀。我再告訴西京沒問題」。終於皇帝的信件發完了。

小吏回去後感覺比較有意思,東都西京中間隔著兩個州,信鴿是怎麼如何飛的呢?他又專程去問了資訊司的小哥。小哥說:」我也不知道信鴿會飛到那個州,如果信鴿飛到其他州,其他州的人會看到信鴿的目的地是西京,他會改變信鴿的飛行方向,直到信鴿飛到西京才算結束。「。

以上的小故事就是個簡單 tcp 傳輸。

小吏便算是應用層,皇帝讓他去發訊息。

資訊司的小哥身兼傳輸層和網路層。

信鴿便是鏈路層。

1. 應用層

應用層決定了向使用者提**用服務時通訊的活動。

tcp/ip 協議族內預存了各類通用的應用服務。例如:http、ssh、ftp 等。

2. 傳輸層

應用層的下一層就是傳輸層,提供處於網路連線中的兩台計算機之間的資料傳輸

常見的傳輸層協議有 tcp、udp 等。

3. 網路層

網路層又稱網路互連層。

網路層用來處理在網路上流動的資料報,資料報是網路傳輸的最小資料單位。該層規定了通過怎樣的路徑到達對方的計算機,並把資料報傳送給對方。

網路層的作用就是在眾多選項內選擇一條合適的傳輸路徑。

4. 鏈路層

鏈路層又稱資料鏈路層,網路介面層

用來處理連線網路的硬體部分,控制作業系統、硬體的裝置驅動。

我們能夠看到的交換機、網線、光纖等也屬於物理層

tcp 的全稱是傳輸控制協議(transmission control protocol)位於傳輸層,它是一種有連線的協議,提供可靠的位元組流服務[注1]。而可靠的傳輸服務是指,能夠將資料準確可靠的傳遞給對方。資料為何能準確無誤的送達目標處,就是因為 tcp 協議採用了三次握手策略,當然除了三次握手,tcp 協議還有其他手段來保證通訊的可靠性

tcp 三次握手

①傳送端首先傳送乙個帶 syn 標誌的資料報給對方

②接收端收到標有 syn 的資料報後回傳乙個帶有 syn/ack 標誌的資料報表示確認資訊

③傳送端在傳送乙個帶有 ack 標誌的資料報給接收端表示握手成功

更通俗的以物件舉例:

如果握手成功後連線斷開,再次連線還需要重新握手
tcp 四次揮手

由於tcp連線時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是在這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。

第一次揮手:

client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。

第二次揮手:

server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。

第三次揮手:

server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。

第四次揮手:

client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。

udp 的全稱是使用者資料報協議(user datagram protocol)同樣位於傳輸層,它是一種無連線的協議,提供面向事務的簡單不可靠資訊傳送服

tcp 是有連線的而 udp 是無連線的

tcp 是可靠的連線而 udp 是不可靠的

udp 不需要各種可靠性策略所以相比 tcp 效能要高不少

因為 udp 的連線步驟少,報頭內容少所以相比 tcp 更加的省流量

tcp 只能一對一連線傳遞訊息而 udp 可以一對

一、一對多、多對一和多對多

參考資料 

抓包軟體 wireshark

注1:位元組流服務是指,為了方便傳輸,將大塊資料分割成報文段為單位的資料報進行管理的服務

【tcp相關疑問】

Android開發需要了解的網路協議

1.應用層 應用層決定了向使用者提 用服務時通訊的活動。tcp ip 協議族內預存了各類通用的應用服務。例如 http ssh ftp 等。2.傳輸層應用層的下一層就是傳輸層,提供處於網路連線中的兩台計算機之間的資料傳輸 常見的傳輸層協議有 tcp udp 等。3.網路層網路層又稱網路互連層。網路層...

Web開發中需要了解的東西

下面的這些東西可能對於大多數人並不陌生,但是可能會有些東西你以前並沒有看過,或是沒有完全搞懂,甚至都沒有聽說過。陳皓注 我相信當你看完這個列表後,你會覺得對於我國的web開發有點弱了,還是那句話,表面上的東西永遠是膚淺的 介面和使用者體驗 最後,你可以使用一下這個工具 來看看你的網頁在不同的瀏覽器下...

Web開發中需要了解的東西

好了,下面是正文 我對原文做了一些批註,也許不對或有誤導,請大家指正 下面的這些東西可能對於大多數人並不陌生,但是可能會有些東西你以前並沒有看過,或是沒有完全搞懂,甚至都沒有聽說過。陳皓注 我相信當你看完這個列表後,你會覺得對於我國的web開發有點弱了,還是那句話,表面上的東西永遠是膚淺的 介面和使...