深入淺出RPC服務 | 不同層的網路協議

語言: CN / TW / HK

導讀:✍️

本系列文章從RPC產生的歷史背景開始講解,涉及RPC核心原理、RPC實現、JSF的實現等,通過圖文類比的方式剖析它的內部世界,讓大家對RPC的設計思想有一個巨集觀的認識。

作者:王禹展   京東健康

網路協議

為什麼需要網路協議?

網路協議是為計算機網路中進行資料交換而建立的規則、標準或約定的集合。

網路中一個微機使用者和一個大型主機的操作員進行通訊,由於這兩個資料終端所用字符集不同,因此操作員所輸入的命令彼此不認識。為了能進行通訊,規定每個終端都要將各自字符集中的字元先變換為標準字符集的字元後,才進入網路傳送,到達目的終端之後,再變換為該終端字符集的字元。就像我們說話用某種語言一樣,在網路上的各臺計算機之間也有一種語言,這就是網路協議,不同的計算機之間必須使用相同的網路協議才能進行通訊。

一次請求都需要用到那些協議?

1.要傳輸資料,首先如何知道對應的機器的地址?通過IP可以確認具體的機器(網路層的IP層協議)。

2.找到目標機器後,需要知道該機器上那個程式接受本次請求?通過埠就能確定具體的程式(傳輸層的TCP層協議)。

3.確定完程式後,怎麼區分不同的請求,每一個請求如何關聯對應的響應呢?(應用層的RPC協議)通過訊息id區分。

4.以上這些最後是由物理層的光纜、電纜、無線通道等支援的,如何控制訊號在物理層之上的傳遞,還需要PPP協議、ARP協議等。

不同層的協議簡介

應用層的協議

HTTP協議

超文字傳輸協議(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-響應協議,它通常執行在TCP之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。

HTTPS協議

全稱:Hyper Text Transfer Protocol over SecureSocket Layer,是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 。HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同於 HTTP 的預設埠及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統提供了身份驗證與加密通訊方法。它被廣泛用於全球資訊網上安全敏感的通訊,例如交易支付等方面。

RPC協議

一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。

RTMP協議

全稱:Real Time Messaging Protocol(實時訊息傳輸協議)。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時資料通訊的網路協議,主要用來在Flash/AIR平臺和支援RTMP協議的流媒體/互動伺服器之間進行音視訊和資料通訊。支援該協議的軟體包括Adobe Media Server/Ultrant Media Server/red5等。RTMP與HTTP一樣,都屬於TCP/IP四層模型的應用層。

P2P協議

點對點技術又稱對等網際網路絡技術,是一種網路新技術,依賴網路中參與者的計算能力和頻寬,而不是把依賴都聚集在較少的幾臺伺服器上。P2P網路通常用於通過Ad Hoc連線來連線節點。這類網路可以用於多種用途,各種檔案分享軟體已經得到了廣泛的使用。P2P技術也被使用在類似VoIP等實時媒體業務的資料通訊中。

DNS協議

DNS是一種可以將域名和IP地址相互對映的以層次結構分佈的資料庫系統。DNS系統採用遞迴查詢請求的方式來響應使用者的查詢,為網際網路的執行提供關鍵性的基礎服務。目前絕大多數的防火牆和網路都會開放DNS服務,DNS資料包不會被攔截,因此可以基於DNS協議建立隱蔽通道,從而順利穿過防火牆,在客戶端和伺服器之間傳輸資料。

GTP協議

全稱:GPRS隧道協議(GPRSTunnelingProtocol),可以分解成三種獨立的協議,GTP-C(控制面)、GTP-U(使用者面)及GTP'(計費傳輸)。GTP-C用於GPRS核心網路中,用於不同網路節點之間的信令資料。GTP-U 用於承載使用者資料。 GTP可以用在UDP或TCP上,GTP v1僅用於UDP上。用於 GPRS(2.5代通訊技術)、UMTS(3G移動通訊技術)、LTE(3G與4G技術之間的過渡) 和 5G 網路

DHCP協議

全稱:Dynamic Host Configuration Protocol(動態主機配置協議),通常被應用在大型的區域網絡環境中,主要作用是集中地管理、分配IP地址,使網路環境中的主機動態的獲得IP地址、Gateway地址、DNS伺服器地址等資訊,並能夠提升地址的使用率。

其它協議

FTP·、Gopher IMAP4 、 IRC 、 NNTP 、XMPP 、POP3 、SIP 、SMTP 、SNMP 、SSH 、TELNET 、RTCP 、RTP 、RTSP 、 SDP 、 SOAP 、STUN 、 NTP 、SSDP 、BGP等。

傳輸層協議

TCP傳輸控制協議

全稱:Transmission Control Protocol,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,TCP旨在適應支援多網路應用的分層協議層次結構。 連線到不同但互連的計算機通訊網路的主計算機中的成對程序之間依靠TCP提供可靠的通訊服務。TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的資料報服務。 原則上,TCP應該能夠在從硬線連線到分組交換或電路交換網路的各種通訊系統之上操作。

網路層協議

IP協議

IP指網際互連協議,Internet Protocol的縮寫,是TCP/IP體系中的網路層協議。設計IP的目的是提高網路的可擴充套件性:一是解決網際網路問題,實現大規模、異構網路的互聯互通;二是分割頂層網路應用和底層網路技術之間的耦合關係,以利於兩者的獨立發展。根據端到端的設計原則,IP只為主機提供一種無連線、不可靠的、盡力而為的資料包傳輸服務。

鏈路層協議

PPP協議

點對點協議(Point to Point Protocol,PPP)為在點對點連線上傳輸多協議資料包提供了一個標準方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調製連線的資料鏈路層協議OSI模式中的第二層),替代了原來非標準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet 和 Novell 的 Internet 網包交換協議(IPX)。

每層協議之間的關係

傳送端的流程

1.傳送端將使用者資料拋給RPC層時,RPC協議將使用者的資料(訊息體)加上RPC頭部,然後拋給下一層“傳輸層“

2.”傳輸層”收到“應用層”的資料後,不會考慮上一次的協議是啥,它會將整個傳遞進來的資料作為‘訊息體’,加上TCP頭部後繼續向下一層“網路層”拋。

3.”網路層“收到資料後,也不會考慮上一次的協議是啥,會將整個傳遞進來的資料作為‘訊息體’並加上IP頭部,繼續繼續拋向下一層”資料鏈路層“。

4.”資料鏈路層“同樣加上MAC頭部,最後由物理層通過光電訊號傳輸到接收端。

接收端的流程

1.接受端收到資料後,”資料鏈路層“開始解析,識別乙太網頭部,取出資料後向上拋給”網路層“。

2.”網路層“識別IP頭部後,取出資料,向上拋給”傳輸層“。

3.”傳輸層“收到資料後,識別TCP頭部,取出資料後繼續向上拋給”應用層“。

4.”應用層“識別RPC協議頭部,最終取出傳送端的使用者資料。

每層協議的設計

TCP協議

設計的目的

在網路發展的過程中,IP協議提供了讓彼此相連的主機之間能夠進行資料傳送。但是IP協議無法讓接收資訊的主機知道從遠處傳送來的資料究竟要給到哪一個程序進行處理。TCP(傳輸控制協議)就是為了解決程序間的通訊問題而發展出來的協議。

1.源埠號和目標埠號:沒有這兩個埠號。資料就不知道應該發給哪個應用。

2.包的序列號:為什麼要給包編號呢?是為了解決亂序的問題。不編好號怎麼確認哪個應該先來,哪個應該後到呢。

3.確認序列號:發出去的包應該有確認,要不然我怎麼知道對方有沒有收到呢?如果沒有收到就應該重新發送,直到送達。這個可以解決不丟包的問題。

4.狀態位:SYN 是發起一個連線,ACK 是回覆,RST 是重新連線,FIN 是結束連線等。TCP 是面向連線的,因而雙方要維護連線的狀態,這些帶狀態位的包的傳送,會引起雙方的狀態變更。

5.視窗大小:TCP 要做流量控制,通訊雙方各宣告一個視窗,標識自己當前能夠的處理能力,發的太快處理不過來,發的太慢就會有空閒,使用視窗大小來達到一個最佳的處理水平。