TCP/IP,HTTP,Socket的區別

網絡由上至下分爲:

物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層


IP協議對應於網絡層,TCP協議對應於傳輸層,HTTP對應於應用層

socket是對TCP/IP協議的封裝和應用;TCP/IP協議是傳輸層協議,主要解決數據如何在網絡上傳輸;HTTP是應用層協議,主要解決如何封裝數據。

“我們在傳輸數據的時候,可以只使用TCP/IP協議,但是無法識別數據內容。想要使傳入的數據有意義,必須要使用應用層協議。Web使用HTTP協議做應用層協議,以封裝HTTP問題信息,然後使用TCP/IP做傳輸層協議將它發佈到網絡上”

What is socket? socket:是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用接口(API),通過Socket才能使用TCP/IP。 socket跟TCP/IP協議沒有必然的聯繫,Socket編程接口在設計的時候,希望能適應其他的網絡協議,所以Socket只是方便程序員更加方便的使用TCP/IP協議棧,是對TCP/IP的抽象,從而形成了一些基本的函數接口,比如:create,connect,accept,read,write等。

TCP/IP和Socket的理解: “TCP/IP只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作接口。TCP/Ip也要提供程序員做網絡開發所用的接口,這就是Socket編程接口。”

HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。

傳輸層的TCP是基於網絡層的IP協議層,而應用層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,它只是提供了一個針對於TCP或者UDP編程的接口。

什麼是TCP連接的三次握手

1.第一次握手:客戶端發送syn包(syn=j)到服務器,並進入synsend狀態,等待服務器確認; 2.第二次握手:服務器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也發送一個syn(syn=k),即syn+ack包,此時服務器進入,此時服務器進入synrecv狀態; 3.第三次握手:客戶端收到服務器的syn+ack包,向服務器發送確認包ack(ack=k+1),此時包發送完畢,客戶端和服務器進入estalished狀態,完成三次握手。

握手的過程中傳送的包裏不包含數據,三次握手完畢後,客戶端和服務器才正式開始傳輸數據。

理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP連接都被一直保持下去。

斷開連接時,服務器和客戶端都可以發起斷開TCP連接的請求,斷開過程需要經過“四川捂手”

利用Socket建立網絡連接的步驟

建立Socket連接至少需要一對套接字,其中一個運行於客戶端,稱爲ClientSocket;另一個運行於服務端,稱爲ServerSocket 套接字之間的連接過程分爲三步:服務器監聽,客戶端請求,連接確認 1·服務器監聽:服務器端套接字並不定位具體的客戶端套接字,而是處於等待連接狀態,實時監控網絡狀態,等待客戶端的連接請求

2.客戶端請求:指客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字

爲此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然後就向服務器端套接字提出連接請求。

3.連接確認:當服務器端套接字監聽或者收到客戶端套接字的連接請求,就相應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發送給客戶端,一旦客戶端確認了描述,雙方就建立連接。

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

HTTP鏈路的特點

HTTP協議即超文本傳輸協議,是WEB聯網的基礎,也是手機聯網的常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。

HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在結束後,會主動釋放連接,在建立連接到關閉連接的過程稱爲“一次連接”

TCP和UDP的區別

1.TCP是面向連接的,雖然說是網絡的不安全不穩定決定了多少次握手都不能保證連接的可靠性,但是TCP的三次握手最大程度上保證了連接的可靠性

UPD不是面向連接的,UDP傳輸數據並不於對方建立連接,對方收到的數據也不發送確認信息號,發送端不知道數據是否會正式,所以說UDP是無連接不可靠的一種數據傳輸協議

2.使用UDP的開銷更小,不必進行收發數據的確認,UDP的實時性更好,比如:視頻


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章