网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”
如何毀掉一個(gè)嬰兒?
斷了他的奶。
如何毀掉一個(gè)年輕人?
斷了他的網(wǎng)。
“網(wǎng)絡(luò)之于年輕人,正如同奶水之于嬰兒”
什么是網(wǎng)?什么是域名?什么是IP、Mac地址,端口號(hào)?什么是UDP?什么是TCP?今天這篇教程,將帶大家學(xué)習(xí)TCP/IP的知識(shí),“工作中模模糊糊的概念,這次終于理順了!”
TCP/IP背景介紹
上世紀(jì) 70 年代,隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)使用者意識(shí)到:要想發(fā)揮計(jì)算機(jī)更大的作用,就要將世界各地的計(jì)算機(jī)連接起來(lái)。但是簡(jiǎn)單的連接是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橛?jì)算機(jī)之間無(wú)法溝通。因此設(shè)計(jì)一種通用的“語(yǔ)言”來(lái)交流是必不可少的,這時(shí) TCP/IP 協(xié)議就應(yīng)運(yùn)而生了。
TCP/IP(Transmission Control Protocol/Internet Protocol)是傳輸控制協(xié)議和網(wǎng)絡(luò)協(xié)議的簡(jiǎn)稱,它定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。
TCP/IP 不是一個(gè)協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱,里面包括了 IP 協(xié)議、ICMP 協(xié)議、TCP 協(xié)議、以及 http、ftp、pop3 協(xié)議等。網(wǎng)絡(luò)中的計(jì)算機(jī)都采用這套協(xié)議族進(jìn)行互聯(lián)。
網(wǎng)絡(luò)協(xié)議棧架構(gòu)
提到網(wǎng)絡(luò)協(xié)議棧結(jié)構(gòu),最著名的當(dāng)屬 OSI 七層模型,但是 TCP/IP 協(xié)議族的結(jié)構(gòu)則稍有不同,它們之間的層次結(jié)構(gòu)有如圖對(duì)應(yīng)關(guān)系:
可見 TCP/IP 被分為 4 層,每層承擔(dān)的任務(wù)不一樣,各層的協(xié)議的工作方式也不一樣,每層封裝上層數(shù)據(jù)的方式也不一樣:
-
(1)應(yīng)用層:應(yīng)用程序通過這一層訪問網(wǎng)絡(luò),常見 FTP、HTTP、DNS 和 TELNET 協(xié)議;
-
(2)傳輸層:TCP 協(xié)議和 UDP 協(xié)議;
-
(3)網(wǎng)絡(luò)層:IP 協(xié)議,ARP、RARP 協(xié)議,ICMP 協(xié)議等;
-
(4)網(wǎng)絡(luò)接口層:是 TCP/IP 協(xié)議的基層,負(fù)責(zé)數(shù)據(jù)幀的發(fā)送和接收。
本教程,就是從底向上分層次對(duì) TCP/IP 的各協(xié)議做介紹。
IP 地址
網(wǎng)絡(luò)上每一個(gè)節(jié)點(diǎn)都必須有一個(gè)獨(dú)立的 IP 地址,通常使用的 IP 地址是一個(gè) 32bit 的數(shù)字,被 . 分成 4 組,例如,255.255.255.255 就是一個(gè) IP 地址。有了 IP 地址,用戶的計(jì)算機(jī)就可以發(fā)現(xiàn)并連接互聯(lián)網(wǎng)中的另外一臺(tái)計(jì)算機(jī)。
域名
用 12 位數(shù)字組成的 IP 地址很難記憶,在實(shí)際應(yīng)用時(shí),用戶一般不需要記住 IP 地址,互聯(lián)網(wǎng)給每個(gè) IP 地址起了一個(gè)別名,習(xí)慣上稱作域名。
域名與計(jì)算機(jī)的 IP 地址相對(duì)應(yīng),并把這種對(duì)應(yīng)關(guān)系存儲(chǔ)在域名服務(wù)系統(tǒng) DNS(Domain Name System) 中,這樣用戶只需記住域名就可以與指定的計(jì)算機(jī)進(jìn)行通信了。
MAC 地址
MAC(Media Access Control)地址,或稱為物理地址、硬件地址,用來(lái)定義互聯(lián)網(wǎng)中設(shè)備的位置。
在 TCP/IP 層次模型中,網(wǎng)絡(luò)層管理 IP 地址,鏈路層則負(fù)責(zé) MAC 地址。因此每個(gè)網(wǎng)絡(luò)位置會(huì)有一個(gè)專屬于它的 IP 地址,而每個(gè)主機(jī)會(huì)有一個(gè)專屬于它 MAC 地址。
端口號(hào)
IP 地址是用來(lái)發(fā)現(xiàn)和查找網(wǎng)絡(luò)中的地址,但是不同程序如何互相通信呢?這就需要端口號(hào)來(lái)識(shí)別了。如果把 IP 地址比作一間房子 ,端口就是出入這間房子的門。真正的房子只有幾個(gè)門,但是端口采用 16 比特的端口號(hào)標(biāo)識(shí),一個(gè) IP 地址的端口可以有 65536(即:2^16)個(gè)之多!
常用協(xié)議對(duì)應(yīng)端口號(hào):
-
SSH 22
-
FTP 20 和 21
-
Telnet 23
-
SMTP 25
-
TFTP 69
-
HTTP 80
-
SNMP 161
-
Ping 使用ICMP,無(wú)具體端口號(hào)
封裝和分用
封裝:當(dāng)應(yīng)用程序發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)在協(xié)議層次當(dāng)中自頂向下通過每一層,每一層都會(huì)對(duì)數(shù)據(jù)增加一些首部或尾部信息,這樣的信息稱之為協(xié)議數(shù)據(jù)單元(Protocol Data Unit,縮寫為PDU),在分層協(xié)議系統(tǒng)里,在指定的協(xié)議層上傳送的數(shù)據(jù)單元,包含了該層的協(xié)議控制信息和用戶信息。如下圖所示:
-
物理層(一層)PDU指數(shù)據(jù)位(Bit)
-
數(shù)據(jù)鏈路層(二層)PDU指數(shù)據(jù)幀(Frame)
-
網(wǎng)絡(luò)層(三層)PDU指數(shù)據(jù)包(Packet)
-
傳輸層(四層)PDU指數(shù)據(jù)段(Segment)
-
第五層以上為數(shù)據(jù)(data)
RFC
RFC(Request for Comment)文檔是所有以太網(wǎng)協(xié)議的正式標(biāo)準(zhǔn),并在其官網(wǎng)上面公布,由 IETF 標(biāo)準(zhǔn)協(xié)會(huì)制定。大量的 RFC 并不是正式的標(biāo)準(zhǔn),出版的目的只是為了提供信息。RFC 的篇幅不一,從幾頁(yè)到幾百頁(yè)不等。每一種協(xié)議都用一個(gè)數(shù)字來(lái)標(biāo)識(shí),如 RFC 3720 是 iSCSI 協(xié)議的標(biāo)準(zhǔn),數(shù)字越大意味著 RFC 的內(nèi)容越新或者是對(duì)應(yīng)的協(xié)議(標(biāo)準(zhǔn))出現(xiàn)的比較晚。
其他知識(shí)點(diǎn)
-
鏈路層介紹
-
IP網(wǎng)際協(xié)議
-
網(wǎng)絡(luò)層其它協(xié)議
-
傳輸層:UDP協(xié)議
-
傳輸層:TCP協(xié)議
-
應(yīng)用層協(xié)議
完整的教程學(xué)習(xí)(完全免費(fèi)),請(qǐng)打開這里:
https://www.shiyanlou.com/courses/98
相關(guān)教程推薦:
GO語(yǔ)言模擬實(shí)現(xiàn)TCP/IP協(xié)議
https://www.shiyanlou.com/courses/1300
相關(guān)推薦
50個(gè)Python練手項(xiàng)目,拿去過冬吧!
10個(gè)不到500行代碼的超牛Python練手項(xiàng)目
10個(gè)精彩Python視頻教程整理,10種新技能輕松Get!
30本Python學(xué)習(xí)參考書,從入門到大師全了!
大牛推薦的10本學(xué)習(xí)Java必看書
如何開始使用Java機(jī)器學(xué)習(xí)
再別說找不到C++練手項(xiàng)目,這20個(gè)拿去不謝!
總結(jié)
以上是生活随笔為你收集整理的网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 昨天521表白失败,我想用Python分
- 下一篇: HTML5 蔡徐坤打篮球游戏 NMSL❤