今天給大家介紹TCP/IP協議當中傳輸層幾個重要概念,希望對大家理解TCP/IP協定提供一些説明!
面向連接的協定它在發送數據之前需要先建立連接,確保數據傳輸的可靠性和順序性。該協定協議類似於電話通信,需要先撥號建立連接,然後進行通話,最後掛斷電話。面向連接的協定通常用於對數據傳輸品質要求較高的應用場景,如檔案傳輸、電子郵件、遠端登錄等。最典型的就是TCP協定。
該協定不需要在發送數據之前建立連接。每個數據包都是獨立尋址和傳輸的,類似於寄信,每封信都有自己的位址,郵局根據位址將信件投遞到目的地,具體對方有沒有收到信件則無需關心。可以理解為單向傳遞協定。無連接協定普遍用於對即時性要求較高,但對數據傳輸品質要求相對較低的應用場景,如視頻流、音訊流、實時遊戲等場景。最典型的就是UDP協定。
埠屬於標識電腦不同應用程式或服務的邏輯連接點。埠號被用來區分不同的應用程式或服務。埠號範圍從0到65535。根據數值範圍,分為三種類型:
熟知埠:範圍從0到1023,通常用於常見的網路服務,如HTTP(埠80)、FTP(埠21)、SSH(埠22)等。
註冊埠:範圍從1024到49151,一般用於用戶註冊的應用程式或服務,比如1433 SQLserver資料庫預設埠、3306 Mysql默認埠、3389 遠端連接埠等。
動態或私有埠:範圍從49152到65535,一般由用戶端程式在建立連接時隨機選擇。
TCP常見的埠號
UDP 常見的埠號
說明:在TCP/IP協定棧中,源埠號和目的埠號分別與源IP位址和目的IP地址組成套接字(socket),唯一地確定一條TCP連接。
套接字可以理解為網路中不同主機上的應用進程之間進行雙向通信的端點的抽象。一個套接字就是網路上進程通信的一端,提供了應用層進程利用網路協定交換數據的機制。套接字屬於應用程式通過網路協定進行通信的介面,有是應用程式與網路協定棧進行交互的介面。
套接字有三種類型:
流式套接字(Stream Sockets):即TCP套接字,用SOCK_STREAM表示,提供面向連接的、可靠的數據傳輸服務。
數據報套接字(Datagram Sockets):即UDP套接字,用SOCK_DGRAM表示,提供無連接的、不可靠的數據傳輸服務。
原始套接字(Raw Sockets):用SOCK_RAW表示,允許直接訪問底層網路協定,一般用於開發新的網路協定或進行網路診斷。
說明:套接字是網路程式設計的基礎,通過套接字應用程式可以實現跨網路的進程間通信。
多路複用是指伺服器使用一個單獨的套接字來同時處理來自不同客戶端的數據。多路複用的目的是讓不同的程式共用一個網路連接來發送資訊,
實際案例:比如你家裡的水管可以同時給多個地方供水,比如廚房、浴室和洗衣机。TCP多路復用就像是這樣,它允許一台電腦上的不同程式(如瀏覽器、郵件用戶端等)通過同一個網路連接與互聯網通信。這樣做的好處是節省資源,因為不需要為每個程序單獨建立新的連接。
多路分解是指伺服器在收到來自多個客戶端的數據時,能夠將這些數據分解成獨立的流,並將它們發送給相應的用戶端,多路分解主要是確保回來的資訊能準確地送到對應的程式中。
實際案例:考慮水從外面回到你家,但這次每滴水都知道要去哪裡——有的去廚房,有的去浴室。TCP多路分解就是這個過程:當資訊從互聯網返回你的電腦時,計算機知道哪些資訊應該發送給哪個程式。例如,瀏覽器收到的網頁內容不會被誤發給郵件用戶端。