||
理論學(xué)習(xí)不如動(dòng)手實(shí)踐。LuatOS提供了極簡(jiǎn)的API和完善的開(kāi)發(fā)工具,讓你在實(shí)戰(zhàn)中快速掌握TCP/IP通信的核心要點(diǎn),真正做到“學(xué)以致用”。
提到網(wǎng)絡(luò)應(yīng)用,就繞不開(kāi)TCP/IP——它不僅是互聯(lián)網(wǎng)的通信基石,更像是一套精妙絕倫的“世界語(yǔ)”,讓形態(tài)各異、遍布全球的設(shè)備能夠跨越硬件和軟件的差異,使用統(tǒng)一的規(guī)則進(jìn)行對(duì)話。
相比傳統(tǒng)開(kāi)發(fā)方式,LuatOS通過(guò)高效易用的API:將復(fù)雜的協(xié)議細(xì)節(jié)封裝在簡(jiǎn)潔的接口之下,開(kāi)發(fā)者無(wú)需從零開(kāi)始構(gòu)建整個(gè)協(xié)議棧,而是可以像搭積木一樣快速上手,只需專(zhuān)注于應(yīng)用邏輯本身。
你可以在幾分鐘內(nèi)讓一塊4G-Cat.1模塊真正連接到云端服務(wù)器,并立刻觀察到數(shù)據(jù)交互的全過(guò)程。每一個(gè)理論概念,都能通過(guò)具體的代碼和硬件行為得到最直觀的驗(yàn)證和理解。
一、TCP/IP網(wǎng)絡(luò)模型簡(jiǎn)介
有網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)的人,應(yīng)該都聽(tīng)說(shuō)過(guò)OSI七層模型、TCP/IP協(xié)議四層模型和TCP/IP協(xié)議五層模型。
這三種網(wǎng)絡(luò)協(xié)議模型的說(shuō)明,參考下表:

看了這張表之后,我們應(yīng)該有以下幾點(diǎn)認(rèn)識(shí):
都采用了分層的思想,將復(fù)雜的通信過(guò)程分解為更小、更易于管理的部分;
每一層都為其上層提供服務(wù),并使用其下層提供的服務(wù);
這三種網(wǎng)絡(luò)模型,只是分層的顆粒度不一樣;實(shí)際上,這三種網(wǎng)絡(luò)模型的本質(zhì)內(nèi)容都是一樣的。
既然本質(zhì)內(nèi)容是一樣的,為什么還要存在三種網(wǎng)絡(luò)模型呢?
我們簡(jiǎn)單地看一下這三種網(wǎng)絡(luò)模型的歷史:
TCP/IP
20世紀(jì)70年代(1970s)
美國(guó)國(guó)防部某個(gè)計(jì)劃局,提出了建立一種通信網(wǎng)絡(luò)的需求;美國(guó)的幾個(gè)工程師大佬開(kāi)發(fā)了一套通信協(xié)議,TCP和IP協(xié)議是其中的核心;當(dāng)時(shí)并沒(méi)有抽象出四層或者五層模型。
OSI和TCP/IP
20世紀(jì)80年代(1980s)
網(wǎng)絡(luò)技術(shù)蓬勃發(fā)展,但各家廠商(如IBM、DEC)都有自己的私有網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn),導(dǎo)致不同廠商的設(shè)備之間無(wú)法通信。
網(wǎng)絡(luò)世界,需要一個(gè)“通用語(yǔ)言”。
國(guó)際標(biāo)準(zhǔn)化組織ISO于1984年,提出了開(kāi)放系統(tǒng)互聯(lián)OSI參考模型;
與此同時(shí),TCP/IP的支持者也抽象出了一套自己的“術(shù)語(yǔ)”和“框架”來(lái)與OSI模型競(jìng)爭(zhēng)。他們從現(xiàn)有的TCP/IP協(xié)議族中反向歸納、提煉出了一個(gè)更簡(jiǎn)單的分層模型。
TCP/IP
20世紀(jì)90年代(1990s)
OSI和TCP/IP經(jīng)過(guò)一段時(shí)間協(xié)議競(jìng)爭(zhēng),最終TCP/IP勝出,得到廣泛應(yīng)用,主要有以下幾點(diǎn)原因:
TCP/IP來(lái)自實(shí)踐,簡(jiǎn)單高效,易于實(shí)現(xiàn);而OSI模型過(guò)于復(fù)雜和理想化,標(biāo)準(zhǔn)制定緩慢;
TCP/IP規(guī)范(RFC文檔)對(duì)所有人免費(fèi)開(kāi)放,鼓勵(lì)了廣泛的應(yīng)用和創(chuàng)新;
美國(guó)政府規(guī)定其所有聯(lián)邦機(jī)構(gòu)使用的網(wǎng)絡(luò)必須支持TCP/IP;
萬(wàn)維網(wǎng)(World WideWeb)在1991年出現(xiàn),它運(yùn)行在TCP/IP協(xié)議之上,Web的爆炸式普及使得TCP/IP協(xié)議成為了所有上網(wǎng)設(shè)備的必然選擇。
最終,TCP/IP模型在實(shí)踐中得到廣泛應(yīng)用。
至于TCP/IP四層模型和TCP/IP五層模型,二者的差別不大,主要體現(xiàn)在對(duì)最底層的劃分不同:
四層模型隱藏了底層細(xì)節(jié),將網(wǎng)絡(luò)接入視為一個(gè)黑盒,更關(guān)注對(duì)軟件層面的設(shè)計(jì),不關(guān)心具體的硬件;
五層模型明確包含了物理硬件層。
四層模型和五層模型本質(zhì)上是同一個(gè)東西的兩種不同表述方式,所以我們接下來(lái)不糾結(jié)四層還是五層模型,而是統(tǒng)稱(chēng)為T(mén)CP/IP模型。
在了解TCP/IP網(wǎng)絡(luò)模型之后,接下來(lái)我們看一下TCP/IP協(xié)議這個(gè)概念。
TCP/IP網(wǎng)絡(luò)模型是理論上的框架和藍(lán)圖,而TCP/IP協(xié)議是這個(gè)框架的具體實(shí)現(xiàn)。我們來(lái)看下面這張表格:

可以看到,每一層都有多個(gè)協(xié)議去實(shí)現(xiàn),在所有的這些協(xié)議中,TCP和IP兩種協(xié)議是其中的核心協(xié)議,所以用TCP/IP協(xié)議代指網(wǎng)絡(luò)模型中的所有協(xié)議。
所以說(shuō),TCP/IP協(xié)議并不是兩個(gè)單一的協(xié)議,而是一個(gè)協(xié)議家族,包含TCP/IP網(wǎng)絡(luò)模型中的所有協(xié)議;所有協(xié)議協(xié)同工作,從軟件上完成了互聯(lián)網(wǎng)上的數(shù)據(jù)傳輸任務(wù)。
TCP/IP協(xié)議的核心工作原理,功能分層、數(shù)據(jù)封裝/解封裝等已整理詳細(xì)介紹,感興趣的朋友可查看文檔:
https://docs.openluat.com/luatos_lesson/002_luatos_socket/
那么,LuatOS對(duì)TCP/IP協(xié)議棧的支持情況是怎樣的,提供了哪些編程接口給LuatOS項(xiàng)目應(yīng)用腳本來(lái)使用呢?
1)LuatOS協(xié)議支持:
HTTP,MQTT,F(xiàn)TP,WebSocket,DNS,NTP,DHCP, SSL/TLS(從OSI七層模型來(lái)看,和表示層最接近,所以此處把SSL/TLS放到TCP/IP模型中應(yīng)用層)。
2)LuatOS編程接口:
socket核心庫(kù)/libnet擴(kuò)展庫(kù)
http核心庫(kù)/httpplus擴(kuò)展庫(kù)/httpsrv核心庫(kù)
mqtt核心庫(kù)
ftp核心庫(kù)
websocket核心庫(kù)
httpdns擴(kuò)展庫(kù)
dhcpsrv擴(kuò)展庫(kù)
udpsrv擴(kuò)展庫(kù)
用層提供的這些編程接口和LuatOS項(xiàng)目應(yīng)用開(kāi)發(fā)關(guān)系最為密切,這些核心庫(kù)和擴(kuò)展庫(kù)的API文檔可參考下方鏈接。
LuatOS最新API手冊(cè):https://docs.openluat.com/osapi/
1)LuatOS協(xié)議支持:TCP,UDP;
2)LuatOS編程接口:socket核心庫(kù)/libnet擴(kuò)展庫(kù)。
1)LuatOS協(xié)議支持:IP,ICMP;
2)LuatOS編程接口:
socket核心庫(kù)
exnetif擴(kuò)展庫(kù)IP_READY、IP_LOSE
在這里重點(diǎn)說(shuō)一下exnetif擴(kuò)展庫(kù),exnetif擴(kuò)展庫(kù)有兩項(xiàng)核心功能。

LuatOS協(xié)議支持:
以太網(wǎng)、Wi-Fi、4G等網(wǎng)絡(luò)各自的數(shù)據(jù)鏈路層協(xié)議;
以太網(wǎng)的IEEE 802.3系列;
Wi-Fi網(wǎng)絡(luò)的IEEE 802.11系列;
4G網(wǎng)絡(luò)的PDCP、RLC、MAC等協(xié)議。
2.5 物理層
光纖、雙絞線、無(wú)線電波等傳輸介質(zhì)。
今天的內(nèi)容就分享到這里了!