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

2021-09-20 04:35:14 字數 2242 閱讀 8932

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)同樣位於傳輸層,它是一種無連線的協議,提供面向事務的簡單不可靠資訊傳送服務

udp 報頭

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

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

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

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

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

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

參考資料

抓包軟體 wireshark

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

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

盛唐年間,天下安定,由於疆域太大傳遞信件不易,就有民間的能人異士向皇帝諫言,每個州縣都建立資訊司來養信鴿。由信鴿來傳遞信件。皇帝覺得可行遍開始施行。一日皇帝命小吏從東都洛陽發一封信件到西京,這個小吏第一次去資訊司發信件,到了資訊司發現只有乙個人處理信件。小吏便把信件交給了資訊司的小哥,只見小哥嫻熟的...

Web開發中需要了解的東西

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

Web開發中需要了解的東西

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