網絡協議
兩臺計算機要實現通訊必須遵守同一個規(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