1. 程式人生 > >網路通訊——socket(TCP/IP).Http,同步和非同步的區別

網路通訊——socket(TCP/IP).Http,同步和非同步的區別

1首先說下同步和非同步的區別吧

同步:提交請求->等待伺服器處理->處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 (比如 普通B/S模式

非同步:請求通過事件觸發->伺服器處理(這是瀏覽器仍然可以作其他事情)->處理完畢 (AJAX技術(非同步))  
舉個栗子說: 同步   就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。 
非同步  就是你叫我,然後自己去吃飯,我得到訊息後可能立即走,也可能等到下班才去吃飯。 
更多請看:http://blog.csdn.net/morethinkmoretry/article/details/5791258

2 socket TCP/IP .http協議的區別

網路協議的話分為: 物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。

IP協議對應於網路層,TCP協議對應於傳輸層,而HTTP協議對應於應用層 三者從本質上來說沒有可比性

socket則是對TCP/IP協議的封裝和應用(程式設計師層面上),也就是說TPC/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝資料

TCP/IP和HTTP協議的關係,網路有一段比較容易理解的介紹:“我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別資料內容。 如果想要使傳輸的資料有意義,則必須使用到應用層協議。(http就是一種應用協議)
socket和TCP/IP協議關係的說法比較容易理解:“TCP/IP只是一個協議棧,就像作業系統的執行機制一樣,必須要具體實現,同時還要提供對外的操作介面。這個就像作業系統會提供標準的程式設計介面,比如win32程式設計介面一樣,TCP/IP也要提供可供程式設計師做網路開發所用的介面,這就是Socket程式設計介面。”

http和socket

CSDN上有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示資料的具體形式;

Socket是發動機,提供了網路通訊的能力

實際上,傳輸層的TCP是基於網路層的IP協議的,而應用層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP程式設計的介面。

我的認為:http就是單方面請求,返回,就是兩個端(客戶端,伺服器端)發簡訊 Socket就是兩個端的打電話,他們必須保持連線狀態才能通訊,至於怎麼連線的就不扯了