iOS開發(fā)之網絡協議TCP/IP、HTTP

網絡協議

兩臺計算機要實現通訊必須遵守同一個規(guī)則,這就好比兩個人交流,只會英文和只會中文的因為沒有共同的語言(規(guī)則)根本就無法溝通,要使兩臺計算機能夠正常通訊,兩者必須遵守同樣的規(guī)則,而這個規(guī)則就是就是網絡協議。

那么這個規(guī)則,也就是計算機通信的網絡協議是誰規(guī)定的呢,國際上有這么一個組織ISO(國際標準化組織),他定義了網絡協議基本框架,叫做OSI模型。兩臺電腦在進行通訊時,要考慮很多很多的問題,例如A電腦如何找到B電腦,A電腦給B電腦什么類型的數據,A電腦怎么能收到B電腦的反饋等等,這些問題都需要一個標準,為了能夠給以上問題分類設置標準,OSI模型進行了層次劃分,每一層都有相應的協議去解決相應的問題。七層標準模型,如下:

應用層

表示層

會話層

傳輸層

網絡層

數據鏈路層

物理層。

TCP/IP協議

What

OSI網絡通訊協議模型,是一個參考模型,參考于他的TCP/IP協議才是目前網絡上通用的網絡通訊協議,接下來先了解一下TCP/IP協議。

通常所說的TCP/IP協議,其實是一個協議集合,這個集合里面包含了網絡通訊所需的所有協議,里面不僅有TCP(傳輸控制協議)、IP(網際協議),還有UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等許多協議,但因為TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議,所以該協議集合就被命名為TCP/IP協議了。

TCP/IP協議的制定是參考于OSI模型的,但并沒有嚴格按照OSI規(guī)定的七層去劃分,而是劃分了四層,

應用層

傳輸層

網絡層

網絡接口層

OSI和TCP/IP對比圖

目前我們已經知道TCP/IP協議分為四個層次,我舉個例子簡單說明一下各個層的作用,拿寄送郵件舉例,A寄郵件給B,A關心的是用什么格式寫什么內容給B(應用層內容),是寄掛號信(信件丟失會賠償)還是寄平信(信件丟失不賠償)(應用層內容),A是不會關注郵件傳送過程中采用了哪條路線,郵遞員是如何把信地道B手里的(網絡層,網絡接口層)。接下來再詳細講一下應用層和傳輸層。

傳輸層傳輸層有多個協議,但最主要的是TCP和UDP協議。兩者的區(qū)別在與TCP協議需要接收方反饋,傳輸更可靠,而UDP協議雖然不需要反饋,但傳輸的速率比較高。,至于具體采用哪種方式,需要具體問題具體分析,在不可靠的網絡傳送過程中一般選擇TCP傳送方式,在講求效率或者不在乎傳輸失誤的情況下可以選擇UDP方式來提高傳輸速率。

應用層應用層協議有很多,每一個協議代表一種類型的服務。

HTTP協議,萬維網服務

FTP協議,文件傳送服務

POP3協議,郵件服務

HTTP協議

HTTP介紹

HTTP協議,屬于應用層,是一種超文本傳輸協議。

HTTP協議的作用

規(guī)定客戶端和服務器之間的數據傳輸格式

讓客戶端和服務器能有效地進行數據溝通

為什么要選擇使用HTTP協議

支持客戶/服務器模式。

簡單快速??蛻粝蚍掌髡埱蠓諘r,只需傳送請求方法和路徑,客戶端與服務器之間的請求方法常用的有GET、HEAD、POST。另外,由于HTTP協議簡單,使得HTTP服務器的程序規(guī)模小,因而通信速度很快因為HTTP協議簡單,所以HTTP服務器的程序規(guī)模小,因而通信速度很快。

靈活。HTTP允許傳輸任意類型的數據,正在傳輸的類型由Content-Type加以標記。

無連接。限制每次鏈接只處理一個請求,服務器對客戶端的請求做出響應后,馬上斷開鏈接,這種方式可以節(jié)省傳輸時間。

無狀態(tài)。HTTP協議是無狀態(tài)協議。無狀態(tài)是指協議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

采用HTTP向服務器請求數據常用方式

GET請求。get是獲取數據的意思,數據以明文在URL中傳遞,受限于URL長度,所以傳輸數據量比較小。比如我在百度上搜索FMDB,那么他相應的url便是https://www.baidu.com/s?ie=UTF-8&wd=FMDB,我要搜索的內容在url是可見的,如果我要搜索的內容過長,便會產生異常,不信的話,你可以將FMDB換成一個比較長的字符看下效果。

POST請求。post是向服務器提交數據的意思,提交的數據以實際內容形式存放到消息頭中進行傳遞,無法在瀏覽器url中查看到,大小沒有限制。在請求URL后面以?的形式跟上發(fā)給服務器的參數,多個參數之間用&隔開,比如http://ww.test.com/login?username=123&pwd=234&type=JSON

HEAD請求:請求頭信息,并不返回請求數據體,而只返回請求頭信息,常用用于在文件下載中取得文件大小、類型等信息。

GET和POST的選擇

如果要傳遞大量數據,比如文件上傳,只能用POST請求

GET的安全性比POST要差些,如果包含機密\敏感信息,建議用POST

如果僅僅是索取數據(數據查詢),建議使用GET

如果是增加、修改、刪除數據,建議使用POST

//鏈接:TCP/IP、Http、Socket的區(qū)別

http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html? socket

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 網絡協議 兩臺計算機要實現通訊必須遵守同一個規(guī)則,這就好比兩個人交流,只會英文和只會中文的因為沒有共同的語言(規(guī)則...
    Ming普閱讀 878評論 0 6
  • 網絡協議兩臺計算機要實現通訊必須遵守同一個規(guī)則,這就好比兩個人交流,只會英文和只會中文的因為沒有共同的語言(規(guī)則)...
    任夢RM閱讀 820評論 0 1
  • 個人認為,Goodboy1881先生的TCP /IP 協議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,195評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,368評論 6 174
  • 有喜歡的 不多不少 偶爾忘記 甚至叫不上名字 至于所謂的喜歡 可能是某個點 也許單純的順眼 三秒熱血 沒怕過會有陷...
    花粥丶閱讀 238評論 0 0

友情鏈接更多精彩內容