TCP IP, HTTP,SOCKET的區別與聯絡

2021-07-02 05:20:38 字數 2640 閱讀 8618

網路由下向上可分為:

物理層,資料鏈路層,網路層,傳輸層,會話層,表示層和應用層。

通過初步的了解,我知道ip協議對應網路層,tcp協議對應傳輸層,而http協議對應於應用層。三者從本質上來說沒有可比性。socket從程式設計師層面上就是對tcp/ip協議的封裝和使用。也可以說tcp/ip協議是傳輸層協議,主要解決資料如何在網路中傳輸。而http是應用層協議,主要解決如何包裝資料。

我們在傳輸資料時,可以只使用傳輸層 tcp/ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容。如果想要使傳輸的資料有意義,就必須使用到應用層。應用層協議有很多,比如http,ftp,telnet等,也可以自己定義應用層協議。

web使用http協議作應用層協議,以封裝http文字資訊,然後使用tcp/ip做傳輸層協議將它發到網路上。

而我們平時所說的socket是什麼呢?

socket是對tcp/ip協議的封裝,socket本身並不是協議,它只是乙個呼叫介面(api)

通過socket,我們才能使用tcp/ip協議。

實際上,socket跟tcp/ip協議沒有必然的聯絡。

socket程式設計介面在設計的時候,就希望也能適應其他的網路協議。

所以說socket的出現只是讓程式設計師更方便的使用tcp/ip協議棧而已。是對tcp/ip協議的抽象。從而形成了我們知道的一些基本函式的介面,比如create,listen,connect,accept,send,read和write。

tcp/ip協議也需要提供給開發人員做網路開發所用的介面,這就是socket程式設計介面。

一、什麼是tcp連線的三次握手

第一次握手:客戶端傳送syn包(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連線的請求,斷開過程需要經過「四次握手」(過程就不細寫了,就是伺服器和客戶端互動,最終確定斷開)  .

二、利用socket建立網路連線的步驟

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

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

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

2、客戶端請求:指客戶端的套接字提出連線請求,要連線的目標是伺服器端的套接字。

為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器端套接字的位址和埠號,然後就向伺服器端套接字提出連線請求。

3、連線確認:當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求時,就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的描述發給客戶端,一旦客戶端確認了此描述,雙方就正式建立連線。

而伺服器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連線請求。

三、http鏈結的特點

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

http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為「一次連線」。  

四、tcp和udp的區別(考得最多。。快被考爛了我覺得- -\\)

1、tcp是面向鏈結的,雖然說網路的不安全不穩定特性決定了多少次握手都不能保證連線的可靠性,但tcp的三次握手在最低限度上(實際上也很大程度上保證了)保證了連線的可靠性;

而udp不是面向連線的,udp傳送資料前並不與對方建立連線,對接收到的資料也不傳送確認訊號,傳送端不知道資料是否會正確接收,當然也不用重發,所以說udp是無連線的、不可靠的一種資料傳輸協議。

2、也正由於1所說的特點,使得udp的開銷更小資料傳輸速率更高,因為不必進行收發資料的確認,所以udp的實時性更好。

知道了tcp和udp的區別,就不難理解為何採用tcp傳輸協議的msn比採用udp的qq傳輸檔案慢了,但並不能說qq的通訊是不安全的,

因為程式設計師可以手動對udp的資料收發進行驗證,比如傳送方對每個資料報進行編號然後由接收方進行驗證啊什麼的,

即使是這樣,udp因為在底層協議的封裝上沒有採用類似tcp的「三次握手」而實現了tcp所無法達到的傳輸效率。

TCP IP Http Socket解析比較

網路由下往上分為物理層 資料鏈路層 網路層 傳輸層 會話層 表示層和應用層。通過初步的了解,我知道ip協議對應於網路層,tcp協議對應於傳輸層,而http協議對應於應用層,三者從本質上來說沒有可比性,socket則是對tcp ip協議的封裝和應用 程式設計師層面上 也可以說,tpc ip協議是傳輸層...

TCP,IP,HTTP,SOCKET區別和聯絡

網路由下往上分為 對應 物理層 資料鏈路層 網路層 ip協議 傳輸層 tcp協議 會話層 表示層和應用層 http協議 socket則是對tcp ip協議的封裝和應用 程式設計師層面上 也可以說,tpc ip協議是傳輸層協議,主要解決資料 如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資...

TCP,IP,HTTP,SOCKET區別和聯絡

網路由下往上分為 對應 物理層 資料鏈路層 網路層 ip協議 傳輸層 tcp協議 會話層 表示層和應用層 http協議 socket則是對tcp ip協議的封裝和應用 程式設計師層面上 也可以說,tpc ip協議是傳輸層協議,主要解決資料 如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資...