從零開發B S機架應用程式(十)網路通訊上

2021-08-20 22:20:10 字數 1895 閱讀 6908

#簡述

在我們使用客戶端的時候,客戶端是如何通訊的呢?

下面就簡單的說說看

#通訊流程

下面是流程圖

通訊的基礎是tcp/ip模型

#伺服器搭建

##伺服器搭建流程

##網路通訊的基礎知識

tcp/ip 四層協議

tcp報文段首部格式

此部分是傳輸層資料封裝,封裝後給網路層,ip資料報

序號:seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。

確認序號:ack序號,佔32位,只有ack標誌位為1時,確認序號欄位才有效ack=seq+1。

標誌位:共6個,即urg、ack、psh、rst、syn、fin等,具體含義如下:

(a)urg:緊急指標(urgent pointer)有效。

(b)ack:確認序號有效。

(c)psh:接收方應該盡快將這個報文交給應用層。

(d)rst:重置連線。

(e)syn:發起乙個新連線。

(f)fin:釋放乙個連線。

需要注意的是:

不要將確認序號ack與標誌位中的ack搞混了。

確認方ack=發起方req+1,兩端配對。

資料報

網路介面層

這一塊主要主要涉及到一些物理傳輸,比如乙太網,無線區域網.這裡就不做詳細的介紹了

網路層/ip資料報

tcp/ip協議定義了乙個在區域網上傳輸的包,稱為ip資料報(ip datagram)。

ip資料報由兩部分組成

tcp資料報與ip資料報的關係

應用層

應用層做為 tcp/ip 協議的最高層級,對於我們移動開發來說,是接觸最多的。

同樣的,由於應用層我們需要涉及的東西太多,具體的介紹我們將在之後的文章中進行

tcp服務端

所謂三次握手(three-way handshake)即建立tcp連線,就是指建立乙個tcp連線時,需要客戶端和服務端總共傳送3個包以確認連線的建立。

在socket程式設計中,這一過程由客戶端執行connect來觸發

tcp/ip資料封裝包

協議加工過程

比如資料hello ,進行封包

從零開發B S機架應用程式(四) TCP

傳輸控制協議。與udp不同,他是面向連線和資料流的可靠傳輸協議。也就是,他能夠使一台計算機上的資料無差錯的發往網路的其他計算機,所以當藥傳輸大量資料時,我們選用tcp協議。qtcpserver的基本操作 1 呼叫listen監聽埠。2 連線訊號newconnection,在槽函式裡呼叫nextpen...

從零開發B S機架應用程式(七)巨集定義的使用

看下面的一段 enum audiomasteropcodes 在 或c 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集...

從應用程式的角度看Binder (十)

從應用程式的角度看binder一共有三個方面 1.本地功能 bn 部分做的 2.部分 bp 做的 3.客戶端做的 在程式的實現過程中bnabc和bpabc是雙繼承了介面abc。一般來說bpabc是乙個實現類,這個實現類不需要在介面中體現,它實際上負責的只是通訊功能,不執行具體的功能 bnabc則是乙...