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