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

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