寫在前面:最近整理東西有點上癮呢,難道這就是創(chuàng)作的快感嗎?(哈哈哈哈哈)網(wǎng)絡協(xié)議,在大學專門開了一門課,我們的叫《網(wǎng)絡協(xié)議分析》,寶寶記憶好好哦~~~老師上課全英文課件 ~~
iOS的TCP/IP協(xié)議族整理參照了http://www.cocoachina.com/ios/20160223/15347.html
感謝作者的無私分享~~
TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)的簡寫,傳輸控制協(xié)議/互聯(lián)網(wǎng)絡協(xié)議)協(xié)議。
TCP/IP(傳輸控制協(xié)議/網(wǎng)間協(xié)議)是一種網(wǎng)絡通信協(xié)議,它規(guī)范了網(wǎng)絡上的所有通信設備,尤其是一個主機與另一個主機之間的數(shù)據(jù)往來格式以及傳送方式。 通常我們說TCP/IP是說TCP/IP協(xié)議族,它是一組協(xié)議的代名詞。包含了很多別的協(xié)議。
HTTP協(xié)議
HTTP(HyperText Transfer Protocol),超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應用最廣泛的一種網(wǎng)絡協(xié)議。它規(guī)定了客戶端—服務器之間的數(shù)據(jù)傳輸格式。
HTTP優(yōu)點
- 簡單快速:HTTP協(xié)議簡單,通信速度很快
- 靈活:允許傳輸任意類型的數(shù)據(jù)
- 短連接:每次連接只處理一個請求,服務器對客戶端的請求作出響應后,馬上斷開連接.這種方式可以節(jié)省傳輸時間.
HTTP協(xié)議的使用
1 請求 :客戶端向服務器索要數(shù)據(jù),
一個完整的http請求包含:請求行,請求頭,請求體三個部分。
- 請求行:包含請求方法,請求資源路徑
- 請求頭:客戶端的環(huán)境描述
- 請求數(shù)據(jù):客戶端發(fā)給服務器的具體數(shù)據(jù),如圖片,文件等。
2 響應:服務器返回客戶端想要的數(shù)據(jù)
與請求對應,響應也有三部分:響應行,響應頭,響應內(nèi)容。
響應行:包含http協(xié)議版本,狀態(tài)碼,狀態(tài)英文名稱。
"HTTP/1.1 200 OK"
200就是請求成功
- 1xx 消息 比如100 Continue
- 2xx成功
- 3xx 重定向
- 4xx客戶端請求錯誤 比如常見的404 Not Found
- 5xx和6xx服務器錯誤 500 Internal Server Error 600 Unparseable Response Headers
發(fā)送http請求
常見方式有兩種:
- Apple原生:
1 NSURLConnection:用法簡單,古老經(jīng)典的一種方案.
2 NSURLSession:iOS7以后推出的技術,功能NSURLConnection更加強大.
3 CFNetWork:NSURL的底層,純C語言,一般不用. - 第三方框架:
AFNetWorking(OC)
之前還有ASIHttp 12年停止更新,所以現(xiàn)在基本都用AFNetWorking。
Alamofire(swift)
HTTP請求方法
在HTTP/1.1協(xié)議中,定義了8種發(fā)送http請求的方法:GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
增:PUT
刪:DELETE
改:POST
查:GET
最常用的是GET和POST方法。因為GET和POST可以實現(xiàn)上述所有操作,除此以外HEAD請求使用頻率也比較高;
GET、POST區(qū)別
- GET請求:用于從服務端獲得數(shù)據(jù),請求參數(shù)拼接在URL后面,所以安全性相對不是很高。
- POST請求:給服務器數(shù)據(jù),比如上傳文件。請求參數(shù)在http的body中,所以相對更安全。
TCP
TCP(Transmission Control Protocol),傳輸控制協(xié)議,提供可靠的,面向連接的網(wǎng)絡數(shù)據(jù)傳遞服務。比如上傳文件需要TCP.
TCP工作原理(三次握手)
TCP的連接建立過程又稱為TCP三次握手:
- 首先發(fā)送方主機向接收方主機發(fā)起一個建立連接的同步(SYN)請求;
- 接收方主機在收到這個請求后向發(fā)送方主機回復一個同步/確認(SYN/ACK)應答;
- 發(fā)送方主機收到此包后再向接收方主機發(fā)送一個確認(ACK),此時TCP連接成功建立.
三次握手示意圖:

UDP(用戶數(shù)據(jù)報協(xié)議)
UDP 提供無連接的網(wǎng)絡服務,不可靠的網(wǎng)絡數(shù)據(jù)傳輸服務。經(jīng)常與TCP對比。(寶寶又想起大學的考試了~~~~)比如可以用于語言通話。
TCP,UDP都是傳輸層協(xié)議,是OSI(七層模型)中最重要,最關鍵的一層。