iOS開發之網路程式設計 常用網路協議

2021-07-11 02:08:32 字數 2119 閱讀 9035

看了上面那句不明所以得話,好像並沒有什麼luan用。在第一章有提過協議這個概念,就像咱們工作的時候,籤的協議,生活中的保單協議,都需要雙方同意簽字,才能生效。基於網路的應用就決定了資料鏈上不僅僅只有客戶端(應用)這一環,還需要有伺服器(資料來源)這一環。那我們的應用在與伺服器互動的時候,伺服器憑什麼接收你的請求,傳送給你想要的資料呢?除非你接受了它的協議,比如咱們之前做get,post請求的時候,為什麼post需要設定請求體,請求方式。這些都是「他們」的「協議」裡規定的。你想要從我這裡拿到東西,首先,你要有我的伺服器位址(url),你有了位址之後,你得給我憑證(相關表單資料,比如使用者名稱,密碼,裝置id等),證明你有這個資格,從我這裡獲取我的資料。當然有些資源獲取是不需要憑證的,管你是誰,都可以從我這裡獲取資料(比如一些免費開放的api)。然後「協議」裡面說了,你請求之後,給我乖乖等著,我這邊給你個答覆。不管你有沒有請求成功,我都會給你乙個答覆(響應),失敗會給你失敗資訊(error),裡面會告訴你為什麼失敗(url錯誤— —著名的404 not found之類的);成功的話,那就恭喜你,你會獲得乙個data或者responseobject(資源)。之所以會有這麼一套流程,都是「協議」規定的,咱們照著做,就能拿到想要資料,這就是協議。

而我們上面所說的流程就是最最常見的http協議的。

誰是制定這個協議的人?

這是書本上的圖,不過這個7層的osi模型,也就單單用在學術教學上面。

之所以資料流向是這個樣子,是因為咱們的真實的資料在傳輸過程中,因為介質的不同,需要給它做相應的包裝,比如在路由器之間傳輸,在光纖上傳輸,包括在計算機內部傳輸,從二進位制訊號到資料脈衝,資料形態都無法保持一致,所以每一層都是為上一層的資料傳輸做鋪墊。

咱們商業上普遍採用的是下面的5層模型:

上面這些,大家僅僅只需要在腦海裡留下個印象,有興趣的同學,可以找來《計算機網路》,細細研究一下。

http大家肯定不陌生,咱們在位址列輸入位址的時候,經常會看到乙個字首:http://……,那http是什麼呢??下面來一段官腔:http是乙個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分布式超**資訊系統,全稱是hypertext transfer protocol(超文字傳輸協議),而且它是屬於上面的層次模型的應用層。

看不懂了吧??告訴你們,之前咱們一直都在用http協議,做資料請求。從nsurlconnection到nsurlsession再到afnetworking,它們的網路傳輸都採用的是http協議,所以,沒有任何神秘感。如果單單講協議的話,這是計算機網路這門課所涉及到的,非常枯燥(反正這門課從一開始硬著頭皮聽,到最後,還是扛不住),所以,我也就不講那麼多知識點了(老師講給我的都沒怎麼聽懂,我也不指望我講的你們能懂了),直接上咱們ios所用到的http才是王道。

請求方法。其實請求並不單單只有get、post這兩種。一共有:get、post、options、head、put、delete、trace、connect、patch八種之多。而最常用的是get、post,我也沒看到過有其他的請求方法的使用。

結合咱們以前的使用,http協議也就只需要處理好請求和響應這兩個步驟。其他並沒有什麼特別之處。

https(全稱:hyper text transfer protocol over secure socket layer),是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。

超文字傳輸協議http協議被用於在web瀏覽器和**伺服器之間傳遞資訊。http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和**伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此http協議不適合傳輸一些敏感資訊,比如信用卡號、密碼等。

為了解決http協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議https。為了資料傳輸的安全,https在http的基礎上加入了ssl協議,ssl依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。

https和http的區別主要為以下四點:

ios開發中,tcp/ip一般會和socket牽扯到一起。socket是基於tcp/ip協議的封裝,主要是用於資料傳輸,即時通訊這一塊。單純的tcp/ip,在網路層次模型中,tcp和ip是兩個協議,tcp是運用的資料鏈路層的乙個協議,用於將資訊傳送到更高一層的網路層,而ip協議就是為網路層服務的。

在下一章,咱們就來研究一下基於socket的網路程式設計。

iOS 開發 網路程式設計詳解之TCP UDP

ip位址 主機名 0.1 主機名 localhost 每台計算機都有乙個 127.0 0.1 如果 127.0 0.1 ping 不通,說明網絡卡不工作 如果本機位址 ping 不通,說明網線壞了 埠號用於標示程序的邏輯位址,不同程序的標示 有效埠 0 65535 其中 0 1024由系統使用或者保...

IOS開發之 網路應用

nsdata foundation nsurl nsurlrequest nsurlconeection nsnetservice nsnetservicebrowser core foundation cfnetwork cfnetservice bsd sockets 1 獲取 nsdata d...

ios開發之網路基礎

1 網路訪問的步驟 1 建立nsurl 2 建立nsurlrequest 3 建立nsurlconnection 4 開始連線 1 void viewdidload 2 5 通過 nsurlconnectiondatadelegate方法處理網路請求的資料 1 伺服器響應,表示伺服器處理完成請求,準...