ios開發日記11-http和socket,ios11-httpsocket
今天博主有一個網路開發的需求,遇到了一些困痛點,在此和大家分享,希望能夠共同進步.
今天和大家分享一下http和socket的區別,具體的各種網路通訊協定,請各位看官自行百度
1.http串連:http串連就是所謂的短串連,即用戶端向伺服器端發送一次請求,伺服器端響應後串連即會斷掉
簡單說,你瀏覽的網頁(網址以http://開頭)都是http協議傳輸到你的瀏覽器的, 而http是基於socket之上的。socket是一套完成tcp,udp協議的介面。
HTTP協議:簡易物件存取通訊協定 (SOAP),對應於應用程式層 ,HTTP協議是基於TCP串連的
tcp協議: 對應於傳輸層
ip協議: 對應於網路層
TCP/IP是傳輸層協議,主要解決資料如何在網路中傳輸;而HTTP是應用程式層協議,主要解決如何封裝資料。
Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API),通過Socket,我們才能使用TCP/IP協議
2.socket串連:socket串連就是所謂的長串連,理論上用戶端和伺服器端一旦建立起串連將不會主動斷掉;但是由於各種環境因素可能會是串連斷開,比如說:伺服器端或用戶端主機down了,網路故障,或者兩者之間長時間沒有資料轉送,網路防火牆可能會斷開該串連以釋放網路資源。所以當一個socket串連中沒有資料的傳輸,那麼為了維持串連需要發送心跳訊息~~具體心跳訊息格式是開發人員自己定義的
我們已經知道網路中的進程是通過socket來通訊的,那什麼是socket呢?socket起源於Unix,而Unix/Linux基本哲學之一就是“一切皆檔案”,都可以用“開啟open –> 讀寫write/read –> 關閉close”模式來操作。我的理解就是Socket就是該模式的一個實現,socket即是一種特殊的檔案。
3.一些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協議的抽象,從而形成了我們知道的一些最基本的函數介面。