物聯網數據接入篇-應用層協議一(4)
前三篇文章講述的是TCP/IP 模型中的網絡接口層、網絡層、傳輸層,這里到了第四層應用層。由于協議比較多,就分兩篇來介紹。
這一篇講 HTTP、Websocket、郵件傳輸協議、遠程登錄協議、文件傳輸協議、文件共享協議以及網絡管理協議。下一篇再講物聯網常用的 Modbus 協議、MQTT、協議、CoAP 協議、OPC 框架。
第四層:應用層協議之一
應用層是 TCP/IP 模型中的最上層,直接與應用程序交互,為應用程序提供網絡通信服務。
提供各種應用服務、對數據進行特定的處理和格式化、與用戶交互、定義應用程序之間通信的規則和協議、適應不同的應用場景和需求、為上層應用提供統一的接口。
TCP 通過不同的端口號,來把信息轉達給應用程序。端口號類似于房間的門,TCP 快遞上門了,送到哪個房間,就是用端口號來充當門牌號的。
應用層協議主要包括基于 TCP 的MQTT、DDS、Modbus-TCP、XMPP、AMQP、POP3、HTTP、HTTPS、FTP、Telnet、SMTP、Samba、CIFS、NFS。
應用層協議還包括基于 UDP 的 DNS、SNMP、TFTP、DHCP、CoAP、Modbus-UDP、RIP、NTP。
還有即不基于 TCP,也不基于 UDP 的應用層協議。
1. HTTP 協議
超文本傳輸協議,HyperText Transfer Protocol,HTTP 是一種用于分布式、協作式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通信的基礎。
HTTP是一個客戶端(用戶)和服務端(網站)之間請求和應答的標準,通常使用TCP協議。通過使用網頁瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個HTTP請求到服務器上指定端口(默認端口為80)。我們稱這個客戶端為用戶代理程序(user agent)。應答的服務器上存儲著一些資源,比如HTML文件和圖像。我們稱這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個“中間層”,比如代理服務器、網關或者隧道(tunnel)。
通俗講,HTTP 是一個在計算機世界里專門在「兩點」之間「傳輸」文字、圖片、音頻、視頻等「超文本」數據的「約定和規范」?!敢眯×?coding」
設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識,也叫 URL。
組成部分
HTTP是一個客戶端(用戶)和服務端(網站)之間請求和應答的標準,通常使用TCP協議。
請求部分:
- 請求行:包含請求方法(如 GET、POST 等)、請求的資源路徑和 HTTP 版本。
- 請求頭:包含各種描述請求屬性的字段,如 Accept(接受的內容類型)、content-type(發送的數據類型)、user-agent(用戶代理信息)等。
- 請求體(可選):當有具體數據要發送時,如 POST 請求提交表單數據等。
響應部分:
- 響應行:包含 HTTP 版本、狀態碼(如 200 表示成功、404 表示未找到等)和狀態描述。
- 響應頭:類似請求頭,包含關于響應的各種屬性信息,如 content-length(響應體長度)、content-type(響應的數據類型)等。
- 響應體:實際返回給客戶端的數據內容。
工作原理
由HTTP客戶端發起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監聽客戶端的請求。一旦收到請求,服務器會向客戶端返回一個狀態,以及返回的內容,如請求的文件、錯誤消息、或者其它信息。
基于 HTTP 通信的流程:
HTTP 9 種請求方法:
啥是冪等?冪等意味著對一個資源進行多次相同的操作,其產生的效果與一次操作是相同的。
特點
- 簡單快速:請求方法和首部字段定義簡潔,傳輸效率較高。
- 靈活:可以傳輸各種類型的數據。
- 無狀態:服務器不保存客戶端的狀態信息。
應用
- 網頁瀏覽:瀏覽器與服務器之間的數據交互。
- Web API 開發:移動端或其他客戶端與服務器端的通信。
- 內容分發:如靜態資源的傳輸。
各種基于 Web 的應用。
2. HTTPS 協議
超文本傳輸安全協議,HyperText Transfer Protocol Secure,HTTPS 是一種通過計算機網絡進行安全通信的傳輸協議。HTTPS經由HTTP進行通信,但利用SSL/TLS來加密數據包。HTTPS開發的主要目的,是提供對網站服務器的身份認證,保護交換資料的隱私與完整性。
HTTP的URL是由“http://”起始與默認使用端口80,而HTTPS的URL則是由“https://”起始與默認使用端口443。
3. WebSocket 協議
WebSocket是一種網絡傳輸協議,可在單個TCP連接上進行全雙工通信,位于 OSI 模型的應用層。
他的出現,是因為 HTTP 是半雙工,采用的是客戶端請求服務端才應答,不請求就無法主動給用戶推送數據(采用輪休可以實現偽主動推送)。WebSocket 允許服務端主動向客戶端推送數據,比如瀏覽網頁的時候,主動給你推一個彈窗廣告。
對于客戶端和服務端之間需要頻繁交互的復雜場景,比如網頁游戲,都可以考慮使用 WebSocket 協議。
4. 郵件協議:STMP、POP、IMAP
郵件協議是用于規范電子郵件在不同系統和設備之間傳輸、接收、存儲和管理等操作的一組規則和標準。
SMTP 協議
SMTP:Simple Mail Transfer Protocol,即簡單郵件傳輸協議。將郵件從發送方的郵件服務器傳輸到接收方的郵件服務器。
POP 協議
POP:Post Office Protocol,即郵局協議,允許用戶從郵件服務器上把郵件下載到本地計算機進行離線閱讀和管理。
IMAP 協議
IMAP:Internet Message Access Protocol,即互聯網消息訪問協議,與 POP 不同,它可以讓用戶在多個設備上同步郵件狀態,比如已讀、未讀等。(SMTP 專注于郵件發送,POP 適合簡單的郵件下載與離線管理,而 IMAP 則為用戶提供了更強大和靈活的郵件在線管理體驗。)
某些郵件客戶端,需要整合 qq 郵箱、網易郵箱、Gmail 等等,就需要配置 SMTP、POP、IMAP。
5. 遠程登錄協議
Telnet 電傳打字機網絡
Telnet:Teletype Network。當用戶在本地終端上發起 TELNET 連接請求時,本地的 TELNET 客戶端與遠程主機的 TELNET 服務器建立 TCP 連接。連接建立后,客戶端與服務器之間開始進行交互。
SSH 安全外殼協議
SSH:Secure Shell,安全外殼協議。身份驗證、通信加密、建立安全通道。
這兩個大家都熟悉,遠程登錄服務器的時候用到其中一種或者兩種。
6. 文件傳輸協議
FTP 協議
FTP:File Transfer Protocol,即文件傳輸協議。戶在本地計算機和遠程服務器之間進行文件的上傳和下載操作,方便文件的共享和交換。
TFTP 協議
TFTP,Trivial File Transfer Protocol,簡單文件傳輸協議位于應用層,基于 UPD 無連接、簡單的文件傳輸協議。
TFTP 的應用場景包括:
- 網絡設備的配置文件傳輸。
- 某些嵌入式系統中軟件的更新和部署。
特點:簡單、開銷小。
7. 應用層文件共享協議
文件服務器
文件服務器包含 Windows 文件服務器、UNIX 文件服務器以及 Linux 文件服務器,具體是哪種類型取決于所采用的操作系統。
其中,Windows 文件服務器利用常見的 Internet 文件系統(CIFS)來向客戶端共享存儲。通常情況下,這可通過在計算機資源管理器中的屬性/共享操作以及在其他計算機上連接網絡驅動器來實現對文件夾的共享。文件服務器因操作系統的不同而顯得極為重要。
Windows – Windows:CIFS(Windows自助共享)
Linux – Windows:SMB(使用Samba)
Linux – Linux:NFS
Samba 服務器消息塊
Samba:Server Message Block。 它主要用于實現 Linux 和 Windows 系統之間的文件和打印共享等交互操作。 可以讓 Linux 系統模擬 Windows 文件共享服務器的功能,方便不同操作系統之間的資源共享,基于 TCP。
CIFS 通用互聯網文件系統
CIFS:Common Internet File System。是微軟主導開發的一種網絡文件共享協議。它基于 SMB(Server Message Block)協議,廣泛應用于 Windows 網絡環境中?;?TCP。
NFS 網絡文件系統
NFS:Network File System。主要用于在 Unix/Linux 系統之間進行文件共享。具有高效、靈活的特點,能夠方便地實現跨網絡的文件訪問和共享。主要基于 TCP。
8. 網絡管理協議
SNMP 簡單網絡管理協議
SNMP:Simple Network Management Protocol,簡單網絡管理協議。網絡監控、故障管理、配置管理、性能管理。大家熟悉的網吧的網管,就是操作 SNMP 服務器程序來管理網吧網絡的。
DNS 域名系統
DNS:Domain Name System,域名系統。維護主機名和 IP 之間關系,根據域名尋找 IP。
DNS 的根服務器不給出具體答案,而是給下一級服務器的地址,只指路不帶路。
域名和 IP 的對應關系,保存在電腦中的 hosts 文件中,查看本地的域名表 hosts 文件:cat /etc/hosts
用 dig 命令,看看本地訪問淘寶的過程:dig www.taobao.com
NAT 網絡地址轉換
NAT:Network Address Translator 是用于在本地網絡中使用私有地址,在連接互聯網時轉而使用全局 IP 地址的技術。是因為 IPv4 不夠分。
除轉換 IP地址外,還出現了可以轉換TCP、UDP 端口號的NAPT (Network Address Ports Translator) 技術,由此可以實現用一個全局 IP 地址與多個主機的通信 。
NAT 把同個公司、家庭、學校內的主機對外部通信時,把私有 IP 地址轉換成公有 IP 地址。
DHCP 動態主機配置協議
DHCP:Dynamic Host Configuration Protocol,DHCP可以自動分配IP、子網掩碼、網關、DNS。使用 DHCP 之前,首先要架設一臺 DHCP 服務器”。然后將 DHCP 所要分配的 IP 地址設置到服務器上。此外,還需要將相應的子網掩碼、路由控制信息以及DNS 服務器的地址等設置到服務器上。
DHCP客戶端使用的端口68,服務端使用端口67,使用的UDP應用層的協議。為什么一開始沒有 IP 的設備能請求到 DHCP 服務器數據,因為沒有 IP 的設備,默認 IP 是 0.0.0.0。
DHCP 一般不為服務器分配IP,因為他們要使用固定IP,所以 DHCP 一般只為辦公環境的主機分配 IP。
DHCP 服務器和客戶端一般需要在一個局域網內,在為客戶端分配IP的時候需要進行多次廣播。不在一個局域網內,需要用到 DHCP 中繼代理。
有三種分配方式
- 自動分配:MAC 地址與 IP 綁定,適用于服務器、打印機或網絡設備。
- 動態分配:IP 使用時有時間限制的,到期需要續租,否則就會釋放,適用于大量移動設備連接到網絡的場景,如公司辦公室或公共無線網絡。
- 手動分配:手動分配是由DHCP服務器管理員專門為客戶端指定IP地址。 有利于網絡監控和管理。
RIP 路由信息協議
RIP,Routing Information Protocol,路由信息協議是一種內部網關協議(IGP),不常用。
RIP 協議規定網絡里的每一個路由器均需維護由其自身至其他每一個目的網絡的距離記錄,即距離向量。RIP 協議對于距離的界定如下:其一,從一個路由器到直接相連的網絡的距離被定義為 1;其二,從一個路由器到非直接連接的網絡的距離被定義為所歷經的路由器數量加 1。RIP 協議中的距離又被稱作跳數,并且 RIP 協議準許一條路徑最多僅能包含 15 個路由器。故而,當距離等于 16 時就等同于不可達。
NTP 網絡事件協議
NTP(Network Time Protocol,網絡時間協議),基于UDP的一種用于計算機時間同步的應用層協議,用于在網絡中實現時鐘同步。
后記
前三篇文章講述的是TCP/IP 模型中的網絡接口層、網絡層、傳輸層,這里到了第四層應用層。由于協議比較多,就分兩篇來介紹。
理解 TCP/IP 四層框架是學習物聯網相關協議的基礎。學習協議是做好物聯網設備數據接入、監控、報警、下控、運維、數據分析、智控的基礎。
我閱讀了大量的書籍和文章,匯總出了 TCP/IP 四層框架的主要協議、物聯網設備的主要協議。工作量之大,超出預期。我看了 B 站《希賽關于軟考網絡工程師的全套視頻教程》,看了《圖解 TCP/IP》,看了大量的文章。又結合之前的物聯網行業的從業經驗,整理出來這篇文章。 期望大家的鼓勵與支持,歡迎大家交流。
參考文獻
15 張圖, 把TCP/IP 講得一清二楚!-騰訊云開發者社區-騰訊云
什么是OPC UA&它是如何工作的?_嗶哩嗶哩_bilibili
探索 OSI 會話層:建立和管理通信會話的關鍵_不同機器之間用戶會話的建立與管理-CSDN博客
【2024軟考】《網絡工程師》新版精講視頻-希賽網(零基礎系統教程,建議收藏)!_嗶哩嗶哩_bilibili
MQTT協議_mqtt payload一定要字符串嗎-CSDN博客
MQTT協議_mqtt payload一定要字符串嗎-CSDN博客
如何使用CoAP的對稱加密自主接入和DTLS自主接入_物聯網平臺(IoT)-阿里云幫助中心
network_protocol_structures.pdf
本文由 @躍曰 原創發布于人人都是產品經理。未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!