Socket連線和HTTP連線的區別
阿新 • • 發佈:2019-02-17
TCP/IP是傳輸層協議,主要解決資料如何在網路中傳輸;而HTTP是應用層協議,主要解決如何包裝資料。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。
HTTP連線:HTTP連線就是所謂的短連線,即客戶端向伺服器端傳送一次請求,伺服器端響應後連線即會斷掉;
Socket連線:Socket連線就是所謂的長連線,理論上客戶端和伺服器端一旦建立起連線將不會主動斷掉;但是由於各種環境因素可能會是連線斷開,比如說:伺服器端或客戶端主機down了,網路故障,或者兩者之間長時間沒有資料傳輸,網路防火牆可能會斷開該連線以釋放網路資源。所以當一個Socket連線中沒有資料的傳輸,那麼為了維持連線需要傳送心跳訊息(具體心跳訊息格式是開發者自己定義的)。
我們已經知道網路中的程序是通過Socket來通訊的,那什麼是Socket呢?Socket起源於Unix,而Unix/Linux基本哲學之一就是“一切皆檔案”,都可以用“開啟open –> 讀寫write/read –> 關閉close”模式來操作。我的理解就是Socket就是該模式的一個實現,Socket即是一種特殊的檔案,一些Socket函式就是對其進行的操作(讀/寫IO、開啟、關閉)。我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。Web使用HTTP協議作應用層協議,以封裝HTTP文字資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。
1) Socket是一個針對TCP和UDP程式設計的介面,你可以藉助它建立TCP連線等等。而TCP和UDP協議屬於傳輸層 。
而HTTP是個應用層的協議,它實際上也建立在TCP協議之上。
(HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。)
2)Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。Socket的出現只是使得程式設計師更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函式介面。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。
HTTP連線:HTTP連線就是所謂的短連線,即客戶端向伺服器端傳送一次請求,伺服器端響應後連線即會斷掉;
Socket連線:Socket連線就是所謂的長連線,理論上客戶端和伺服器端一旦建立起連線將不會主動斷掉;但是由於各種環境因素可能會是連線斷開,比如說:伺服器端或客戶端主機down了,網路故障,或者兩者之間長時間沒有資料傳輸,網路防火牆可能會斷開該連線以釋放網路資源。所以當一個Socket連線中沒有資料的傳輸,那麼為了維持連線需要傳送心跳訊息(具體心跳訊息格式是開發者自己定義的)。
我們已經知道網路中的程序是通過Socket來通訊的,那什麼是Socket呢?Socket起源於Unix,而Unix/Linux基本哲學之一就是“一切皆檔案”,都可以用“開啟open –> 讀寫write/read –> 關閉close”模式來操作。我的理解就是Socket就是該模式的一個實現,Socket即是一種特殊的檔案,一些Socket函式就是對其進行的操作(讀/寫IO、開啟、關閉)。我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。Web使用HTTP協議作應用層協議,以封裝HTTP文字資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。
1)
而HTTP是個應用層的協議,它實際上也建立在TCP協議之上。
(HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。)
2)Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),通過Socket,我們才能使用TCP/IP協議。Socket的出現只是使得程式設計師更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函式介面。