文章目錄
- TCP/IP協議概述
- 基于TCP/IP協議的應用工具
- 協議
- 協議的必要性
- TCP/IP協議
- TCP/IP協議族
- 協議的分層
- 傳輸方式的分類
- 報文、幀、數據包等的區別
- TCP 和 UDP的區別
TCP/IP協議概述
TCP/IP(Transmission Control Protocol/Internet Protocol)是一組通信協議,用于在互聯網上進行數據傳輸和通信,它是互聯網的基礎架構之一,支持全球范圍內的數據通信。它是互聯網的核心協議族,由多個不同的協議組成,每個協議負責不同的網絡功能。
TCP/IP 協議族是互聯網通信的基礎,它提供了一種可靠的、靈活的、開放的通信框架,支持各種不同類型的數據傳輸和應用。
TCP/IP 的一些關鍵特點和組成部分:
分層架構:TCP/IP 協議族采用分層的設計,分為四個層次:應用層、傳輸層、網絡層和數據鏈路層。每個層次都有不同的功能和責任,從而實現了協議的模塊化和可擴展性。
面向連接的協議:TCP(Transmission Control Protocol)是 TCP/IP 中的傳輸層協議之一,它提供了可靠的、面向連接的數據傳輸服務。通過 TCP 協議,數據可被分割成數據包,并確保它們按順序到達目的地,并且無錯誤。
無連接的協議:UDP(User Datagram Protocol)是另一個傳輸層協議,它是無連接的,不保證數據的可靠性和順序性。UDP 通常用于需要低延遲和更高性能的應用,如實時音頻/視頻傳輸。
IP 地址和路由:IP(Internet Protocol)是 TCP/IP 協議族中的網絡層協議,它負責定義和管理網絡設備的 IP 地址,以及確定數據包從源到目的地的路徑。IP 地址是用于在網絡中唯一標識設備的數字標識符。
數據封裝:在 TCP/IP 中,數據在傳輸過程中被封裝為數據包,每個數據包包含了目標地址、源地址以及其他必要的控制信息。數據包的封裝和解封裝是通過各層的協議來完成的,從應用層到數據鏈路層依次進行。
開放性和標準化:TCP/IP 協議族是開放的標準,由許多組織和機構共同維護和發展。它的開放性和標準化使得不同廠商和組織可以基于 TCP/IP 進行互操作,從而實現了互聯網的全球化和普及。
此外,TCP/IP 協議族還包括其他一些協議,如 ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,用于網絡管理、地址解析和錯誤報告等功能。
TCP/IP 協議族的設計目標是實現可靠、靈活和互操作的網絡通信。它已經成為全球互聯網的基礎,并被廣泛應用于各種網絡設備和應用程序中。
基于TCP/IP協議的應用工具
- Kafka: Kafka 是一個分布式流處理平臺,基于 TCP/IP 自定義了一套協議用于高效地進行消息傳遞和數據處理。
- Redis: Redis 是一個開源的內存數據庫,它使用 TCP/IP 自定義了一套協議用于客戶端與服務器之間的通信,實現了高效的數據存儲和訪問。
- Memcached: Memcached 是一個分布式的內存對象緩存系統,也使用了自定義的 TCP/IP 協議來實現客戶端與服務器之間的通信。
- Cassandra: Cassandra 是一個分布式的 NoSQL 數據庫,它使用了 TCP/IP 自定義協議用于節點之間的通信和數據同步。
- Thrift: Thrift 是一個跨語言的遠程過程調用(RPC)框架,它定義了一種自定義的 TCP/IP 協議用于不同語言之間的通信。
- ZooKeeper: ZooKeeper 是一個分布式的協調服務,它使用了 TCP/IP 自定義協議來實現客戶端與服務器之間的通信和數據同步。
- Elasticsearch: Elasticsearch 是一個分布式的搜索和分析引擎,它使用了自定義的 TCP/IP 協議用于節點之間的通信和數據交換。
有些特殊框架(如:redis、kafka、zeroMq等)根據自身需要未嚴格遵循MQ規范,而是基于TCP\IP自行封裝了一套協議,通過網絡socket接口進行傳輸,實現了MQ的功能。
這些工具都使用了 TCP/IP 自定義協議來實現不同的功能,例如消息傳遞、數據存儲、分布式計算等,為開發者提供了豐富的選擇來構建各種不同類型的應用程序。
協議
在計算機網絡與信息通訊領域里,人們經常提及 “協議” 一詞。互聯網中常用的協議有HTTP、TCP、IP等。
協議的必要性
簡單來說,協議就是計算機與計算機之間通過網絡通信時,事先達成的一種 “約定”。這種“約定”使不同廠商的設備、不同的CPU以及不同操作系統組成的計算機之間,只要遵循相同的協議就能夠實現通信。這就好比一個中國人說漢語一個外國人說英語使用不同的國家語言進行溝通,怎么也無法理解。如果兩個人約定好 都說中文或英文,就可以互相溝通通信。協議分為很多種,每一種協議都明確界定了它的行為規范。兩臺計算機必須能夠支持相同的協議,并遵循相同協議進行處理,這樣才能實現相互通信。
TCP/IP協議
TCP/IP 是用于因特網 (Internet) 的通信協議。 TCP/IP 通信協議是對計算機必須遵守的規則的描述,只有遵守這些規則,計算機之間才能進行通信。
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬于傳輸層協議。其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復 用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然后再進行數據發送;而UDP則不為IP提供可靠性、 流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。 TCP支持的應用協議主要有:Telnet、FTP、SMTP等; UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。 TCP/IP協議與低層的數據鏈路層和物理層無關,這也是TCP/IP的重要特點
TCP/IP協議族
TCP/IP是基于TCP和IP這兩個最初的協議之上的不同的通信協議的大集合
協議的分層
網絡協議通常分不同層次進行開發,每一層分別負責不同的通信功能。一個協議族,比如TCP/IP,是一組不同層次上的多個協議的組合。 傳統上來說 TCP/IP 被認為是一個四層協議, 而ISO(國際標準化組織),制定了一個國際標準OSI七層協議模型,OSI協議以OSI參考模型為基礎界定了每個階層的協議和每個階層之間接口相關的標準。
分層的作用
應用層
應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。
表示層
將應用處理的信息轉換為適合網絡傳輸的格式,或將來自下一層的數據轉換為上層能夠處理的格式。數據的表示、安全、壓縮。
會話層
負責建立和斷開通信連接(數據流動的邏輯通路),以及數據的分割等數據傳輸相關的管理。
傳輸層
管理兩個節點之間的數據傳輸。負責可靠傳輸(確保數據被可靠地傳送到目標地址)。
網絡層
地址管理與路由選擇, 在這一層,數據的單位稱為數據包(packet)(路由器)。
數據鏈路層
互連設備之間傳送和識別數據幀(交換機)。
物理層
以"0"、 "1"代表電壓的高低,燈光的閃滅,在這一層,數據的單位稱為比特(bit),(中繼器、集線器、還有我們通常說的雙絞線也工作在物理層)。
七層通信
發送方由第七層到第一層 由上到下按照順序傳送數據,每個分層在處理上層傳遞的數據時,附上當前層協議所必須的 "首部"信息。接收方由第一層到第七層 由下到上按照順序傳遞數據,每個分層對接收到的數據進行 "首部"與"內容"分離,在轉發給上一層。最終將發送的數據恢復為原始數據。
傳輸方式的分類
網絡通信科根據數據發送方法進行多種分類,分類方法很多,下面列舉幾種常見的:
- 面向有連接型和面向無連接型
1.1 面向有連接型
發送數據之前,需要在收發主機之間建立一條通信線路,在通信傳輸前后,專門進行建立和斷開連接的處理,如果與對端之間無法通信,可避免發送無謂的數據
1.2面向無連接型
報文、幀、數據包等的區別
報文(message)是網絡中交換與傳輸的數據單元,也是網絡傳輸的單元。報文包含了將要發送的完整的數據信息,其長短不需一致。報文在傳輸過程中會不斷地封裝成分組、包、幀來傳輸,封裝的方式就是添加一些控制信息組成的首部,那些就是報文頭。
應用層:報文(message),一般指完整的信息,傳輸層實現報文交付,位于應用層的信息分組稱為報文; 傳輸層:報文段(segment),組成報文的每個分組; 網絡層:分組(packet)是網絡傳輸中的二進制格式單元,數據包(datapacket)是TCP/IP通信協議傳輸中的數據單位;通過網絡傳輸的數據基本單元,包含一個報頭和數據本身,其中報頭描述了數據的目的地及其與其他數據之間的關系,可以理解為數據傳輸的分組,我們將通過網絡傳輸的基本數據單元稱為數據報(Datagram); 鏈路層:幀(frame),數據鏈路層的協議數據單元,為了保證數據的可靠傳輸,把用戶數據封裝成幀; 物理層:PDU(bit),協議數據單元; 抓包,抓到的是傳輸層的包,packet/frame/Datagram/segment是存在于同條記錄中的,這些是基于所在協議層的不同取了不同的名字。
TCP 和 UDP的區別
TCP 和 UDP的區別