日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一文详解 TCP/IP 协议

發(fā)布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文详解 TCP/IP 协议 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

荷西:你是不是一定要嫁個有錢人。
三毛:如果我不愛他,他是百萬富翁我也不嫁,如果我愛他,他是千萬富翁我也嫁。
荷西:。。。說來說去你還是要嫁有錢人。
三毛:也有例外的時候。
荷西:如果跟我呢?
三毛:那只要吃得飽的錢也算了。
荷西思索了一下:你吃得多嗎?
三毛十分小心的回答:不多,不多,以后還可以少吃點。
---- 三毛《撒哈拉的故事》

文章內(nèi)容主要摘抄自《STM32 物聯(lián)網(wǎng)實戰(zhàn)教程》,個人有些許改動。

一、TCP/IP 模型 概述

計算機網(wǎng)絡(luò)在物聯(lián)網(wǎng)應(yīng)用中起到舉足輕重的作用,它是硬件設(shè)備連接網(wǎng)絡(luò)的基石。

目前提到計算機網(wǎng)絡(luò)協(xié)議指的就是著名的 TCP/IP 協(xié)議,只要是連接到網(wǎng)絡(luò)的設(shè)備其內(nèi)部都是使用的 TCP/IP 協(xié)議。TCP/IP 協(xié)議是眾多協(xié)議的集合,根據(jù) TCP/IP 的分層不同,對應(yīng)的協(xié)議族也不同,下圖是列舉了 TCP/IP 包含的各個層的通信協(xié)議:

在平時的物聯(lián)網(wǎng)項目的開發(fā)時,并不會涉及到的所有協(xié)議,常用的就是傳輸層的 TCP 協(xié)議和 UDP 協(xié)議,需要了解的是應(yīng)用層的 HTTP、DHCP、DNS、FTP 、SMTP 和 和 NTP 協(xié)議, 以及一些網(wǎng)絡(luò)基礎(chǔ)知識,如 IP 的概念和分類,域名的劃分和解析等 。

由于 TCP/IP 網(wǎng)絡(luò)協(xié)議非常復(fù)雜,本文只講解開發(fā)時用到的一些基礎(chǔ)知識和基本的通信協(xié)議,在學(xué)習(xí)了這些基本的通信協(xié)議之后再去深入學(xué)習(xí)計算機網(wǎng)絡(luò)將會非常容易。

TCP/IP 由于十分復(fù)雜,因此采用了分層設(shè)計的思想,共分為 4 層,從上往下依次是調(diào)用的關(guān)系,如下圖:

TCP/IP 協(xié)議位于應(yīng)用層、傳輸層和網(wǎng)絡(luò)層。
網(wǎng)絡(luò)接口層只是實現(xiàn) TCP/IP 協(xié)議的物理設(shè)備和驅(qū)動(網(wǎng)卡),其實就是物理層和數(shù)據(jù)鏈路層。

網(wǎng)絡(luò)層用于甄別數(shù)據(jù)傳輸介質(zhì)中的某一數(shù)據(jù)包的是否屬于本機,如果是則解析數(shù)據(jù)包并去掉數(shù)據(jù)的 IP 首部,接著將數(shù)據(jù)發(fā)給傳輸層處理,

傳輸層在經(jīng)解析去掉 TCP 首部,并將數(shù)據(jù)發(fā)送給對應(yīng)的端口。也就是說數(shù)據(jù)的發(fā)送是從應(yīng)用層開始封包,一層一層的套包裝,接收數(shù)據(jù)則是拆包裝的過程。如下圖所示:

整個發(fā)送過程,其實就是發(fā)送端不斷給數(shù)據(jù)加上幀頭,而接受端是不斷去掉幀頭,最終得到原始的數(shù)據(jù)的過程。

OSI 的標準是七層模型,而 TCP/IP 協(xié)議只分為四層,以下是對比圖:

如果想了解 OSI 模型,可以點擊下載 《科來 TCP/IP網(wǎng)絡(luò)協(xié)議圖 2020》。

二、TCP/IP 封包和共享傳輸介質(zhì)

TCP/IP 采用共享傳輸介質(zhì)的方式來進行多機的數(shù)據(jù)傳輸,比如同處于家庭無線局域網(wǎng)內(nèi)的所有設(shè)備,或者使用同一根網(wǎng)線的多臺計算機,如果不采取任何機制直接使用這種方式進行多臺計算機的網(wǎng)絡(luò)通信就會導(dǎo)致一個很嚴重的問題:一臺計算機想要發(fā)送一個大文件,則會長時間占用硬件傳輸介質(zhì),迫使其他計算機處于等待狀態(tài),使得網(wǎng)絡(luò)速度下降,傳輸實時性降低,為此 TCP/IP 針對共享傳輸介質(zhì)采用了封包的概念,即:將用戶 的信息切割成多份并投放入傳輸介質(zhì)中,但是這種封包進行傳輸不能保證各個數(shù)據(jù)包是按順序傳輸?shù)?#xff0c;因此TCP/IP 為每個包都加入了順序編號,接收端會將這些數(shù)據(jù)包按照編號重新整理組合成原始數(shù)據(jù)。

在使用這種封包的傳輸機制之后,使得每臺計算機的等待時間大大降低,在計算機想要發(fā)送數(shù)據(jù)之前,它會先在傳輸線上試探一下是否有數(shù)據(jù)包正在發(fā)送,如果有數(shù)據(jù)發(fā)送它會自己擲骰子來生成一個隨機延時,等到延時結(jié)束接著試探,以此類推,所以我們會有這種經(jīng)歷,當(dāng)一條網(wǎng)線上的接入設(shè)備較多后,網(wǎng)絡(luò)會卡頓,其原因就是你的計算機檢測到此時網(wǎng)線上有數(shù)據(jù)傳輸,自己在那里不停的擲骰子,導(dǎo)致傳輸延時。

如下圖舉例,ABC 三個用戶正在使用通訊軟件傳輸消息,但這些消息在傳輸介質(zhì)中卻是以不可預(yù)知的順序傳輸?shù)摹?br />

三、IP 地址(定位到聯(lián)網(wǎng)設(shè)備)及端口號(定位到設(shè)備中的具體應(yīng)用)

雙方計算機進行通信的前提是知道目標計算機的網(wǎng)絡(luò)位置,即我們所說的 IP地址 ,這是因為 IP 地址具有全網(wǎng)唯一性,大家最熟悉的 IP 地址大概就是 192.168.1.1 了。

現(xiàn)在普遍使用的是 IPv4 協(xié)議,用 32 位二進制表示 IP 地址,但為了方便人類識別、記憶將其以 8 位為單位進行分割,共分成 4 份,每份之間用句點隔開,并使用十進制表示,即:點分十進制表示法,其取值范圍為 0-255。這樣看來 IP 地址有 2^32 (4294967296)個,看似很難用完,

但由于最初 IP 地址劃分保留了一些 IP 地址導(dǎo)致這些地址不可用,另外隨著更多用戶接入互聯(lián)網(wǎng),最終在 2011 年 2 月 3 日 IP 地址被耗盡。

現(xiàn)在供人類選擇的就只有 IPv6 協(xié)議了,IPv6 使用 128 位表示 IP 長度,理論上可以產(chǎn)生 2^128 個 IP 地址,IPv6 使用 8 組 4 個十六進制數(shù)表示地址,如:1027:0cd6:7aa3:16f3:3329:4c6e:a360:4637。

IP 地址根據(jù)應(yīng)用場景通過改變網(wǎng)絡(luò)號和主機號的范圍進行了分類,這些分類包有:A 類,B 類,C 類,D 類,E 類,我們常用的是前三者,下圖是分類方法(以 B 類 IP 為例):

網(wǎng)絡(luò)號可以表示網(wǎng)絡(luò)的數(shù)量,主機號則是每個網(wǎng)絡(luò)下的主機數(shù)量,

  • A 類地址,其 IP 取值范圍是:0.0.0.0 - 127.255.255.255,網(wǎng)絡(luò)號為地址第一段號碼,后面的三段為主機號。
  • B 類地址取值范圍是:128.0.0.0 - 191.255.255.255,前兩段為網(wǎng)絡(luò)號,后兩段為主機號,如上圖所示。
  • C 類地址取值范圍是:192.0.0.0 - 223.255.255.255,前三段為網(wǎng)絡(luò)號,最后一段為主機號。

根據(jù)這種分類可以看出由 A 到 C 網(wǎng)絡(luò)數(shù)量逐漸變多,主機數(shù)量逐漸變少,對應(yīng)的應(yīng)用場景為大型網(wǎng)絡(luò)、中型網(wǎng)絡(luò),小型網(wǎng)絡(luò)。

一臺計算上會同時運行多個不同的網(wǎng)絡(luò)應(yīng)用,比如 SMTP,FTP,HTTP 等,他們都處于一個 IP 地址下,因此就需要一種標識來告訴傳輸層接收到的數(shù)據(jù)要送到應(yīng)用層的哪個具體應(yīng)用中,這個標識就是端口號,端口號是一種虛擬的邏輯上的端口劃分,這樣做的好處是可以使各個應(yīng)用合理的使用網(wǎng)絡(luò)資源。

端口號有 16 位,即可以表示 65536 個端口,這些端口其中一部分是被固定分配給指定的應(yīng)用,比如 HTTP 占用 80 端口,SMTP 占用 25 端口。

我們在做測試時可以在 Windows 命令行中輸入 netstat -ano 命令來查看此時被占用的端口,避免發(fā)生端口沖突。

四、ARP 協(xié)議(IP 到 MAC地址的轉(zhuǎn)換)

在前面已經(jīng)知道了 IP 是識別一臺計算機的唯一標識,但最終操作數(shù)據(jù)的還是網(wǎng)卡,所以要知道網(wǎng)卡的物理地址,即 MAC 地址,因此就需要一種能夠?qū)?IP 這一邏輯標識和 MAC 地址物理標識進行轉(zhuǎn)換的協(xié)議,這種協(xié)議就是 APR 協(xié)議。大家了解其功能即可,無需深入。

五、DHCP (IP 戶口登記):動態(tài)分配 IP 地址

之前說過 IPv4 提供的 IP 資源有限,不可能為每一個人提供一個固定的 IP,因此就會導(dǎo)致很多人因為沒有 IP 地址而不能上網(wǎng),想要解決這個問題最直接的辦法就是使用更大 IP 容量的 IPv6 協(xié)議,但是想徹底從 IPv4 過渡到 IPv6 困難重重。

因此人們想到了另外一個緩解辦法:動態(tài)分配 IP。即為了每一個設(shè)備分配一個臨時的 IP,當(dāng)一個設(shè)備關(guān)機后這個空閑
的 IP 地址就會分配給其他主機使用,一個主機開機就會請求路由器為其隨機分配一個可用 IP,這樣就使得原本短缺的 IP 資源動態(tài)的流動起來,使其使用效率大大提高。

我們稱這種方式為 DHCP(Dynamic Host Configuration Protocol)。

在一個主機剛開機時,由于沒有 IP 地址,它會通過 DHCP 協(xié)議外廣播,請求該網(wǎng)絡(luò)內(nèi)的 DHCP 主機(路由器)為其分配一個 IP,當(dāng) DHCP 主機收到這個請求后會在可用的 IP 中選擇一個并廣播出去,有 IP 地址的計算機會忽略這種廣播,只有沒有 IP 地址的主機才會將該廣播接收,并將新 IP 地址為自己所用。在 Windows 操作系統(tǒng)中,TCP/IPv4 屬性中的自動獲得IP 地址選項就用于選用或者關(guān)閉 DHCP 功能:

如果不開啟 DHCP,則需要使用者自行指定 IP 地址,但前提是不能和該網(wǎng)絡(luò)中的其他主機 IP 發(fā)生沖突,如果該網(wǎng)絡(luò)下主機數(shù)量很多,將會使加劇這種沖突,所以一般采用 DHCP 來動態(tài)為我們主機分配 IP,避免不必要的麻煩。

六、NAT (IP 易容術(shù))

NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換),是另一種緩解 IP 資源短缺的方法。

我們一定有過這種經(jīng)歷:無論在哪里連接 WIFI,大多數(shù)情況下上網(wǎng)設(shè)備分配的 IP 地址都是 192.168.x.x,該類地址稱之為 私有地址。

在每個網(wǎng)絡(luò)分類中都指定了某一 IP 地址范圍為私有地址,如
A 類 IP 的私有 IP 地址范圍是:10.0.0.0~10.255.255.255,
B 類 IP 的私有 IP 地址是:172.16.0.0~172.31.255.255,
C 類 IP 私有 IP 地址是:192.168.0.0~192.168.255.255。

這類私有地址是不會被外網(wǎng)承認的,因此就無法上網(wǎng),通常將這類私有地址作為家庭或者公司的局域網(wǎng)來使用,然后通過路由器進行上網(wǎng),而實現(xiàn)這一功能的就是由路由器中的 NAT 協(xié)議來實現(xiàn)的,NAT 會將局域網(wǎng)內(nèi)的主機 IP 和端口號替換成路由器的公網(wǎng) IP 和端口號,然后再將數(shù)據(jù)發(fā)送給目標主機或服務(wù)器,因此在效果上來看就好像是擁有公網(wǎng) IP 的路由器發(fā)出的數(shù)據(jù)一樣,從而實現(xiàn)了內(nèi)網(wǎng)向外網(wǎng)的穿透,這么做的好處是可以使 IP 地址(私有地址)得到最大程度的復(fù)用,有效緩解 IP 資源的枯竭。

另外 NAT 的一個好處是,它可以隱藏局域網(wǎng)內(nèi)的聯(lián)網(wǎng)設(shè)備,因為對于外網(wǎng)設(shè)備來說他們看到的只是路由器的公網(wǎng) IP,其內(nèi)部局域網(wǎng)內(nèi)的主機他們是察覺不到的,因此可以提高網(wǎng)絡(luò)的安全性。

大家不要將 NAT 和 DHCP 這兩個概念混淆在一起,就以家庭網(wǎng)絡(luò)為例,NAT 功能和 DHCP 功能都由路由器提供,路由器通過 DHCP 可以為每一個剛接入到該網(wǎng)絡(luò)的設(shè)備按照某種策略隨機分配一個局域網(wǎng) IP,如:192.168.1.23,此時該設(shè)備想要向外網(wǎng)發(fā)送數(shù)據(jù),路由器就需要通過 NAT 將數(shù)據(jù)包中的局域網(wǎng) IP 和端口號轉(zhuǎn)換成公網(wǎng)的 IP 和端口號實現(xiàn)外網(wǎng)訪問。

如果想將路由器的某一個端口接收到的數(shù)據(jù)映射到指定的該局域網(wǎng)內(nèi)的主機上,我們可以設(shè)置路由器的端口映射來滿足要求,但是現(xiàn)在很多運營商為用戶分配的動態(tài) IP 也都是局域網(wǎng),也就是說在我們路由器的上一層還有一臺路由器,除非我們可以更改上一層路由器的端口映射,否則映射就會失敗。另外外網(wǎng) IP 是動態(tài)的,因此每次開機的 IP 地址都可能不同,如果將我們的計算機作為服務(wù)器(比如個人論壇或者網(wǎng)頁)的話,那么在用戶每次訪問時就需要不停的更改 IP,顯然不切實際。因此可以選擇一些能夠提供內(nèi)網(wǎng)穿透的服務(wù)商來為我們提供內(nèi)網(wǎng)穿透服務(wù),比如作者常用的就是花生殼,大家可以免費注冊和使用,對于開發(fā)調(diào)試來說已經(jīng)足夠了,而且會為用戶分配一個域名(后面講解),之后設(shè)置內(nèi)網(wǎng)和外網(wǎng)的映射 IP 和端口號即可:

例如我希望用自己的電腦作為物聯(lián)網(wǎng)的服務(wù)器,來接收各個設(shè)備發(fā)送過來的數(shù)據(jù),則根據(jù)上圖配置,我們的物聯(lián)網(wǎng)設(shè)備連接的服務(wù)器地址和端口號是 18h212253o.iok.la:22958,而作為服務(wù)器的(本臺電腦)地址和端口號要設(shè)置 192.168.31.238:5468,當(dāng)設(shè)備向外網(wǎng) IP 發(fā)送數(shù)據(jù)時就會將這些數(shù)據(jù)映射到服務(wù)器主機上了。
花生殼具體的操作流程如下:

  • 注冊花生殼
  • 下載花生殼客戶端
  • 點擊客戶端“內(nèi)網(wǎng)穿透”,跳轉(zhuǎn)到映射設(shè)置網(wǎng)頁
  • 根據(jù)實際需求指定要映射的 IP 和端口號
  • 七、DNS 和域名(IP 綽號)

    雖然使用四段點分十進制來表達 IP 地址相對于二進制表示來說更加直觀一些,但是依然不能表達特殊的人類可以理解的含義,因此就產(chǎn)生了域名(也叫網(wǎng)址),域名可以理解為一個 IP 地址的綽號,這個綽號更符合人類的記憶方式,這一點類似于電話本中的聯(lián)系人,聯(lián)系人的手機號碼對應(yīng)的就是 IP 地址,聯(lián)系人的備注對應(yīng)的就是域名,例如 www.fengmeitech.club(域名)就比 101.200.130.235(IP)更好記。

    我們可以在 Windows 命令行中輸入 nslookup “域名”,如 nslookup www.baidu.com 來解析域名對應(yīng) IP 地址。下圖是測試結(jié)果:

    當(dāng)一臺計算機要訪問指定域名的主機或者服務(wù)器,如訪問 www.fengmeitech.club 時,就需要解析該域名對應(yīng)的 IP 地址,因為最終的訪問對象就是 IP 地址,這時就要用到 DNS(Domain Name System,域名解析系統(tǒng)),當(dāng)需要進行域名解析時,計算機會向 DNS 服務(wù)器發(fā)送請求解析指令,該指令是通過 UDP 協(xié)議實現(xiàn),這樣的速度更快,DNS 服務(wù)器上存儲的是 IP 和域名的對應(yīng)關(guān)系表,如果查到域名后將返回域名對應(yīng) IP 地址給我們的計算機,此時計算機開始訪問目標主機或者服務(wù)器。

    更詳細的流程是:當(dāng)計算機要訪問一個域名,此時它先從本地緩存查找是否存在這個域名,如果有,就把本地保存的域名對應(yīng) IP 提取出來然后直接訪問,如果沒有則會向你的網(wǎng)絡(luò)提供商(ISP,如:網(wǎng)通,電信等)的 DNS 服務(wù)器發(fā)出查找指令,如果 ISP 的 DNS 服務(wù)器也沒有這個域名,則 ISP DNS 服務(wù)器會向其他 DNS 服務(wù)器(根服務(wù)器,頂級服務(wù)器等)發(fā)送
    解析指令,當(dāng)這些 DNS 服務(wù)器解析之后找到了這個域名對應(yīng)的 IP,就會將這個 IP 傳給 ISP 的 DNS 服務(wù)器,ISP 的 DNS 服務(wù)器再將找到了這個 IP 返回給你的電腦,同時 ISP 的 DNS 服務(wù)器會將這個域名 IP 對應(yīng)關(guān)系緩存起來,不用下次再進行查找,到此整個的域名解析就完成了。

    樂鑫 ESP8266 官方 AT 指令為我們提供了域名解析指令(AT+CIPDOMAIN=”域名”),效果如下:

    接下來講解一下域名的分類,域名分類可以很好的將域名進行管理,通過查看域名可以快速獲悉域名性質(zhì),所屬上級域名等信息。域名分類采用了樹狀圖的形式進行分類,下面就以作者母校——沈陽化工大學(xué)官網(wǎng)(http://www.syuct.edu.cn/)為例進行講解。

    在最頂層的根域名服務(wù)器(無名稱,可以用.表示,我們平時會忽略這個.)下面的是頂級域名,接著是二級域名,三級域名……主機名,頂級域名按照性質(zhì)分為兩種,一個是國家頂級域名(如:中國(.cn),美國(.us),英國(.uk)等等),另一個是國際頂級域名(如:營利組織性質(zhì)的.com,非盈利組織的.org),二級域名由國家劃分,按照性質(zhì)分為兩種,一種是按照地理位置劃分的各省域名,如 ln.(遼寧)bj.(北京)以及按照職能性質(zhì)分的 gov.(政府),edu.(教育)等。下圖是以沈陽化工大學(xué)官網(wǎng)為例繪制的樹狀圖:

    可以看到域名從左到右依次為三級域名-二級域名-頂級域名。

    八、TCP 和 UDP

    前面做了這么多的鋪墊主要是為了講解 TCP 和 UDP 并對 TCP/IP 協(xié)議有一個清晰的認識。在物聯(lián)網(wǎng)應(yīng)用中,絕大部分的硬件設(shè)備和服務(wù)器的通信方式都是基于 TCP 或者 UDP 的(少數(shù)使用 HTTP),一般情況下,TCP 應(yīng)用的比 UDP 要多一些。下面來講解一下 TCP 和 UDP 的原理、特點以及區(qū)別,我們目的并不是學(xué)會這兩個協(xié)議是如何實現(xiàn)的,而是要知道他們的大致機理并學(xué)會應(yīng)用。

    8.1、TCP 協(xié)議

    TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、安全可靠的、基于字節(jié)流的傳輸層通信協(xié)議,在進行 TCP 傳輸時,要有一方作為服務(wù)器端(Server),一方作為客戶端(Client),服務(wù)端用于監(jiān)聽來自其他客戶端發(fā)來數(shù)據(jù),一個服務(wù)端可以同時監(jiān)聽多個客戶端,因此物聯(lián)網(wǎng)應(yīng)用中,硬件設(shè)備作客戶端,服務(wù)器作為服務(wù)端。一個 TCP 的客戶端要和服務(wù)器端進行通信,客戶端就必須先指定服務(wù)器端的 IP 地址和端口號,然后通過 3 次握手建立連接,如下圖:

    當(dāng)握手成功后,客戶端和服務(wù)器端就正式建立了連接,此時就可以互相傳輸數(shù)據(jù)了,通常我們還會人為的對這些數(shù)據(jù)進行標識和加密,目的是保證數(shù)據(jù)傳輸安全,通過這些標識可以讓服務(wù)器來區(qū)分該數(shù)據(jù)消息來自于哪個用戶的哪臺設(shè)備,加密則是防止物聯(lián)網(wǎng)設(shè)備被惡意攻擊,對于能夠產(chǎn)生物理影響的物聯(lián)網(wǎng)設(shè)備來說,安全是最重要的,否則設(shè)備被攻擊后,攻擊者會惡意控制家中設(shè)備,比如打開煤氣一段時間后點燃,其后果不堪設(shè)想。

    前面介紹了 TCP 的兩個階段:握手建立連接 - 數(shù)據(jù)收發(fā),最后一個是斷開連接,通常由客戶端發(fā)起,斷開連接要經(jīng)過 4 次確認,如下圖所示:

    從上面來看,TCP 類似于平時撥打電話,如果想要正常通信,就必須先向指定的目標撥號,撥通并建立連接后開始通話,通話結(jié)束后由一方斷開連接。

    到這里就已經(jīng)介紹完了 TCP 的三個通信過程,另外我們可能都聽說過 TCP 長連接和 TCP 短連接,TCP 長連接是指客戶端和服務(wù)端長時間保持連接,這種情況在客戶端連接數(shù)量很多時會增加服務(wù)器的負擔(dān),但是可以保證數(shù)據(jù)能夠?qū)崟r的傳輸。另外一種稱為 TCP 短連接,即通信完之后立即斷開,比如常見的 HTTP 協(xié)議,因為當(dāng)客戶端請求完數(shù)據(jù)之后,就不在需要繼續(xù)保持 TCP 連接了,因此可以斷開,降低服務(wù)器的工作負擔(dān)。

    在物聯(lián)網(wǎng)應(yīng)用中通常使用的都是 TCP 長連接,對于大多數(shù)物聯(lián)網(wǎng)應(yīng)用來說對傳感器數(shù)據(jù)采集的實時性要求不高,因此間隔都比較長,比如快則幾十秒,慢則幾小時,同時這樣也可以減輕服務(wù)器的處理負擔(dān),但是為了保證雙方連接有效,通常物聯(lián)網(wǎng)設(shè)備會每隔幾秒或者更長的時間發(fā)送一個簡短的數(shù)據(jù)包給服務(wù)器,證明自己還在,我們稱這種數(shù)據(jù)包為心跳包,如果服務(wù)器長時間沒有收到某一個設(shè)備發(fā)來的心跳包,則認為其斷開連接,就會將和它的TCP 連接斷開,并釋放資源,同時在用戶界面顯示該設(shè)備異常。

    8.2、UDP 協(xié)議

    UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)是一種簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,它與 TCP 的傳輸不同,雙方不存在所謂的客戶端和服務(wù)端,只要一方知道另一方的 IP 地址和端口號,就可以直接建立連接并發(fā)送數(shù)據(jù),并且也沒有 TCP 一系列的傳輸安全措施,比如丟包重傳和擁塞控制等,因此相對于 TCP 來說,UDP 的傳輸是不安全的,可能會出現(xiàn)丟包的現(xiàn)象,但正因為沒有了握手,數(shù)據(jù)傳輸安全等處理,使得 UDP 的傳輸速度更快,UDP 通常應(yīng)用在允許丟包但要保證通信速度的場合,比如流媒體。而像文件傳輸就需要使用 TCP,因為文件傳輸?shù)那疤崾潜WC數(shù)據(jù)的完整。但是 TCP 和 UDP 通信速度的區(qū)別我們其實是察覺不到的,只不過都是相對而言,同樣,UDP 丟包率也沒有想象中的那么嚴重,像大家平時用的 QQ 都是通過 UDP 來進行傳輸?shù)?#xff0c;所以完全可以放心的將 UDP 應(yīng)用到物聯(lián)網(wǎng)項目中,只不過使用 UDP 傳輸缺少一種連接上的控制。

    到這里 TCP/IP 的基礎(chǔ)知識就講完了,關(guān)于這部分只要求大家了解它的用途就可以了,如果想要繼續(xù)深入學(xué)習(xí) TCP/IP 的原理,推薦大家閱讀《圖解 TCP/IP》

    總結(jié)

    以上是生活随笔為你收集整理的一文详解 TCP/IP 协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。