Socket和Http之間的區別和概述

2021-09-24 23:29:35 字數 2082 閱讀 3053

推薦必看:

socket和http的區別:

http協議:簡單的物件訪問協議,對應於應用層。http協議是基於tcp鏈結的。

tcp協議:對應於傳輸層

ip協議:對應與網路層

tcp/ip是傳輸層協議,主要解決資料如何在網路中傳輸;而http是應用層協議,主要解決如何包裝資料。

socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api),通過socket,我們才能使用tcp/ip協議。

http連線:http連線就是所謂的短連線,及客戶端向伺服器傳送一次請求,伺服器端相應後連線即會斷掉。

socket連線:socket連線及時所謂的長連線,理論上客戶端和服務端一旦建立連線,則不會主動斷掉;但是由於各種環境因素可能會是連線斷開,比如說:伺服器端或客戶端主機down了,網路故障,或者兩者之間長時間沒有資料傳輸,網路防火牆可能會斷開該鏈結已釋放網路資源。所以當乙個socket連線中沒有資料的傳輸,那麼為了位置連續的連線需要傳送心跳訊息,具體心跳訊息格式是開發者自己定義的。

1》tcp連線

手機能夠使用聯網功能是因為手機底層實現了tcp/ip協議。可以使手機終端通過無線網路建立tcp連線,tcp協議可以對上層網路提供介面,使上層網路資料的傳輸建立在無差別的網路之上。

建立乙個tcp連線需要三次握手:

第一次握手:客戶端傳送sys包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認。

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送了乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態。

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

握手過程中傳輸的暴力不含資料,三次握手完畢後,客戶端和服務端才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中任何一方主動關閉連線之前,tcp連線都將被一直保持下去,斷開連線時伺服器和客戶端 均可以主動發起斷開tcp連線的請求,斷開過程需要經過「四次握手」(伺服器 和客戶端互動,最終確定斷開)

2》http連線

http協議即超文字傳輸協議,是web聯網的基礎,也是手機聯網常用的協議之一,http協議是建立在tcp協議之上的一種應用。

3》socket原理

1)套接字(socket)概念

套接字(socket)是通訊的基石,是支援tcp/ip協議的網路通訊的基本操作單元,他是網路通訊過程中端點的抽象表示,他包含網路通訊必須的五種資訊:連線使用的協議,本地主機的ip位址,本地程序的協議埠,遠端主機的ip位址,遠地程序的協議埠。

應用層通過傳輸層進行資料通訊時,tcp會遇到同時為多個應用程式提供併發服務的問題,多個tcp連線多個應用程式程序可能需要通過同乙個tcp協議埠傳輸資料,為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp/ip協議互動提供了套接字(socket)介面,應用層可以和傳輸層通過socket介面區分來自於不同應用程序或網路連線的通訊,實現資料傳輸的併發服務。

2)建立socket連線

建立socket連線至少需要一對套接字,其中乙個執行於客戶端,稱為clientsocket,另乙個執行與伺服器,稱為serversocket。

套接字之間的連線分為三個步驟:伺服器監聽、客戶端請求、連線確認。

伺服器監聽:服務端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態,等待客戶端的連線請求。

客戶端請求:至客戶端的套接字提出連線請求,要練級的目標是伺服器端的套接字,為此客戶端的套接字必須首先描述他要連線的伺服器的套接字,指出伺服器端套接字的位址和埠號,然後向伺服器端套接字提出連線請求。

連線確認:當伺服器端套接字監聽到或者說接收到客戶端的套接字連線請求是,就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的描述發給客戶端,一旦客戶端確認了此描述,雙方就正式鏈結鏈結,而伺服器端 套接字繼續處於監聽狀態,繼續接受其他客戶端套接字的連線請求。

4》socket連線與tcp連線

建立socket連線時,可以指定使用的傳輸層協議,socket可以支援不同的傳輸層協議(tcp/udp),當使用tcp協議進行連線時,該socket接連就是tcp鏈結.

Http和Socket之間的和關係

一 先說下http網路協議棧 二 連線過程 三 重點來了,tcp套接字程式設計,也就是所謂的socket 四 通過比較發現http和socket完全是兩個不同的概念,http是應用層的,socket是傳輸層和網路層的,http要基於socket實現。httpclient的預設請求超時時間為60s。五...

TCP滑動視窗和socket緩衝區之間的關係

一 tcp的滑動視窗大小實際上就是socket的接收緩衝區大小的位元組數 二 對於server端的socket一定要在listen之間設定緩衝區大小,因為,accept時新產生的socket會繼承監聽socket 的緩衝區大小。對於client端的socket一定要在connet之前設定緩衝區大小,...

http和socket之長連線和短連線區別

tcp ip tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有 tcp包括ftp http telnet smtp等協議 udp包括dns tftp等協議 短連線...