iOS探索 網路相關

2021-09-11 13:12:10 字數 2366 閱讀 9489

超文字傳輸協議

我們來看一下請求報文的格式,首先是請求行,請求行包括方法、url、協議文字,方法常見的有get/post,url就是我們的請求位址,協議文字一般是http1.1版本

然後再看一下請求頭,頭部欄位都是以key:value的形式組合在一起的,由多個首部欄位名構成首部字段區域

之後是我們的實體主體,一般在get請求中沒有實體主體,而在post請求中一般會帶有實體主體

首先是版本,然後是狀態碼,還有狀態碼的描述,我們稱之為短語,然後下面跟請求報文一致,由此組成響應報文

http的請求方式

get和post方式的區別

但是從語義的角度來比較的話,是這樣的:

對應的解釋

1、安全性:不應該引起server端的任何狀態變化,比如說我們用get請求多次去server端去獲取資料,不會引起server的乙個狀態變化,安全性的請求包括:get、head、options

2、冪等性:同乙個請求方法執行多次和執行一次的效果完全相同,比如說我們用get請求多次去server端去獲取資料,執行的效果是完全相同的,這裡需要注意的是執行的效果,冪等性的請求包括:get、put、delete

3、可快取性:請求是否可快取,我們一般在發起乙個http請求的過程中,傳遞的鏈路我們是不確定的,雖然說實在一條tcp連線上,但是網路路徑在接觸或者通過閘道器包括一些**到達我們的server端,在這上面會涉及到方方面面的內容,往往對於一些**伺服器會有快取,而這種快取性是官方的一種規範,即可以遵守也可以不遵守,大多數情況會遵守,所以在get請求會有相對應的快取,可快取性的請求包括:get、head

狀態碼

1xx:通知

2xx:成功

3xx:重定向

4xx:客戶端錯誤

5xx:服務端錯誤

連線建立流程

三次握手

四次揮手

http的特點https = http + ssl/tls

https就是在原有http基礎上,在應用層下面,傳輸層上面插入了乙個ssl/tls協議中間層,為我們實現乙個安全的網路機制,也就是說https是安全的http

https連線建立流程傳輸層協議

tcp:傳輸控制協議

udp:使用者資料報協議

udp(使用者資料報協議)

特點:1、無連線

2、盡最大努力交付

3、面向報文,既不合併,也不拆分

功能包括:

1、復用

2、分用

3、差錯檢測

特點:1、面向連線

2、可靠傳輸(無差錯,不丟失,不重複,按序到達)

3、面向位元組流

4、流量控制

5、擁塞控制

網域名稱到ip位址的對映,dns解析請求是採用udp資料報,且明文

dns解析查詢方式

dns劫持問題

當客戶端傳送網域名稱去dns伺服器去查詢時,由於是udp資料報並且明文,就會被竊聽,這時如果有乙個釣魚伺服器劫持了這次查詢,返回給你乙個錯誤的ip,這時你就會訪問到乙個錯誤的網頁

這裡還需要注意乙個點:就是dns劫持和http是完全沒有關係的,因為dns解析是發生在http建立連線之前,並且dns解析請求使用的事udp資料報,埠號53

那麼如何解決dns劫持問題呢?

dns解析**問題

簡單一句話,就是我們客戶端傳送請求時,我們的dns伺服器可能為了節省資源等原因,會**給其他的dns伺服器,會出現跨網訪問,可能會慢一點

http協議無狀態特點的補償

cookie

主要是用來記錄使用者狀態,區分使用者;狀態儲存在客戶端,客戶端傳送的cookie在http請求報文的cookie首部欄位中,服務端設定http響應報文的set-cookie首部字段

修改cookie

刪除cookie

怎樣保證cookie的安全性

session

也是用來記錄使用者狀態,區分使用者;狀態儲存在服務端 session需要依賴於cookie機制

至此ios基礎相關的內容暫時告一段落,寫的可能並不是特別詳細,也會有很多的瑕疵,也多謝各位對文章問題的指出,接下來會寫一些資料結構與演算法相關的內容,屆時希望大家可以共同**,共同進步

ios探索:ui檢視之事件傳遞&檢視響應

ios探索:ui檢視之卡頓、掉幀及繪製原理

ios探索:runtime之基本資料結構

ios探索:runtime之訊息**及動態新增方法

ios探索:block解析**

ios探索:runloop本質、資料結構以及常駐執行緒實現

iOS 網路連線相關

目前有乙個模組要做,就是同步訊息,其中的問題就是說,程式在後台的時候,網路連線斷了,直到下次連線上網路之前,很多推送的訊息會丟失,所以,要同步這段時間的訊息 但是現在程式從後台回來之後,我們怎麼能夠知道程式在後台的時候斷過網,有可能有訊息丟失了,需要同步 ps 在前台和後台正常連線網路的情況下,訊息...

iOS的網路請求相關知識

get get的語義是獲取指定url上的資源 將資料按照variabele value 的形式新增到action所指向的url後面,並且兩者使用 連線,各個變數之間使用 連線 不安全 因為在傳輸過程中,資料被放在請求的url中 傳輸資料量小主要受url長度限制 post post 是對指定資源追加 ...

TLS相關探索心得

tls是什麼呢?thread local storage 執行緒本地儲存 tls 是乙個機制,經過它,程式可以擁有全域性變數,但處於 每一線程各不相同 的狀態。也就是說,程序中的所有執行緒都可以擁有全域性變數,但這些變數其實是特定對某個執行緒才有意義,各個執行緒擁有全域性變數的乙個副本,各自之間不相...