首先提一下osi七層模型中的傳輸層,它提供了兩種資料傳輸服務分別是 面向連線的可靠服務、面向無連線的不可靠服務。
型別遵循協議
特點使用場景
面向連線的可靠服務
tcp對傳輸質量要求較高、需要可靠的傳輸
面向無連線的不可靠服務
udp對實時性要求較高,或者說網路情況不佳的時候,對資料的準確性沒有嚴格要求
根據不同的使用場景,它們在資料傳輸的過程中都起到了關鍵性的作用。
說白了它就是網路間進行通訊的方式的名稱,行內人一般都稱之為套接字通訊。比如說http協議,需要具體的程式設計去實現,或者現在我們做前後端分離專案的時候需要遵循restful協議,那麼實現此協議的方法就是restful api。那麼傳輸層的兩種傳輸服務分別遵循了tcp、udp協議,實現這兩種協議的方法就是套接字。
這種通訊方式在linux、unix作業系統下有著很完美的支援,當然windows也同樣支援這種通訊方式。unix系統最初是依靠網路起家的,linux作業系統在很多地方仿照了unix系統也可以說在unix的基礎上發展而來的,所以它在網路上也是非常得強大。
上世紀六七十年代,美國有乙個學校叫做bsd(加州大學伯克利分校)。早期的unix誕生依賴也經歷了一些風波,後來分成了兩個版本,第乙個版本是systemv,還有乙個版本是加州伯克利分校開發出來的bst版本。所以說加州伯克利分校在unix、linux作業系統歷史上有著很大的貢獻,其次隨著網路的流行,它們還研究出了一種非常方便的網路之間進行通訊的方式,即套接字。通過這種方式實現事先規定的通訊協議。
套接字後來在linux作業系統下演變成了一種檔案型別,名字叫做socket。比如說現在兩個linux作業系統a和b需要進行網路通訊,a向b發了一條訊息,此時這個訊息實際上是寫到了linux作業系統下的socket檔案當中,然後再從作業系統再去檔案中讀取傳送的訊息,實現了網路通訊。(這個檔案是乙個臨時的虛擬檔案,用ls指令捕捉不到這個檔案)
套接字目前逐漸演化為世界上最為通用化的網路通訊方式,無論你使用的哪種程式語言或者什麼樣的作業系統,在網路通訊的實現方式上都是用套接字來實現的。
流式套接字在傳輸過程中是以位元組流的形式就行資料傳輸,而資料報套接字是以訊息結構體的方式(將訊息打包,封裝成了乙個結構)來進行資料傳輸,總的來說不同的套接字不僅使用了不同的傳輸協議,而且它們傳輸資料的型別也不一樣。
最後,如果通過程式設計的形式實現這幾種套接字通訊,就不貼**了。
套接字 Socket 定義
套接字介面可分為三類 公認埠 註冊埠 動態和 或私有埠 套接字,簡單的說就是通訊的兩方的一種約定,用套接字中的相關函式來完成通訊過程 應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個 tcp協議埠傳輸資料...
socket 套接字通訊
要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟 伺服器監聽 客戶端請求 連線確認。伺服器監聽是指服務端套接字並...
套接字(socket) 埠
套接字 socket socket可以看成在兩個程式進行通訊連線中的乙個端點,乙個程式將一段資訊寫入socket中,該socket將這段資訊傳送給另外乙個socket中,使這段資訊能傳送到其他程式中。套接字,是支援tcp ip的網路通訊的基本操作單元,可以看做是不同主機之間的程序進行雙向通訊的端點,...