?個(gè)人主頁:bit me??
?當(dāng)前專欄:Java EE初階??
一. 網(wǎng)絡(luò)發(fā)展史
獨(dú)立模式:計(jì)算機(jī)之間相互獨(dú)立
網(wǎng)絡(luò)互連:
隨著時(shí)代的發(fā)展,越來越需要計(jì)算機(jī)之間互相通信,共享軟件和數(shù)據(jù),即以多個(gè)計(jì)算機(jī)協(xié)同工作來完成業(yè)務(wù),就有了網(wǎng)絡(luò)互連。
?
網(wǎng)絡(luò)互連:將多臺(tái)計(jì)算機(jī)連接在一起,完成數(shù)據(jù)共享。
?
數(shù)據(jù)共享本質(zhì)是網(wǎng)絡(luò)數(shù)據(jù)傳輸,即計(jì)算機(jī)之間通過網(wǎng)絡(luò)來傳輸數(shù)據(jù),也稱為網(wǎng)絡(luò)通信。
?
根據(jù)網(wǎng)絡(luò)互連的規(guī)模不同,可以劃分為局域網(wǎng)和廣域網(wǎng)。
局域網(wǎng)LAN:
局域網(wǎng),即 Local Area Network,簡稱LAN。
?
Local 即標(biāo)識(shí)了局域網(wǎng)是本地,局部組建的一種私有網(wǎng)絡(luò)。
?
局域網(wǎng)內(nèi)的主機(jī)之間能方便的進(jìn)行網(wǎng)絡(luò)通信,又稱為內(nèi)網(wǎng);局域網(wǎng)和局域網(wǎng)之間在沒有連接的情況下,是無法通信的。
局域網(wǎng)組建網(wǎng)絡(luò)的方式有很多種:
- 基于網(wǎng)線直連
- 基于交換機(jī)組建
- 基于交換機(jī)和路由器組建
- 交換機(jī):把多個(gè)機(jī)器連接到一個(gè)局域網(wǎng)中
- 路由器:連接多個(gè)局域網(wǎng)
- 其實(shí)還有集線器,但是集線器比較特殊,它的功能非常有限,所以現(xiàn)在組網(wǎng)的時(shí)候很少看到了。
在交換機(jī)和路由器反復(fù)連接之下,就可以把很多很多的設(shè)備都連接在一起,使他們可以直接通信。當(dāng)機(jī)器足夠多的時(shí)候,就可以成為 " 廣域網(wǎng) "。廣域網(wǎng)和局域網(wǎng)之間沒有明確的界限。
廣域網(wǎng)WAN
廣域網(wǎng),即 Wide Area Network,簡稱WAN。
通過路由器,將多個(gè)局域網(wǎng)連接起來,在物理上組成很大范圍的網(wǎng)絡(luò),就形成了廣域網(wǎng)。廣域網(wǎng)內(nèi)部的局域網(wǎng)都屬于其子網(wǎng)。
二. 網(wǎng)絡(luò)通信基礎(chǔ)
網(wǎng)絡(luò)互連的目的是進(jìn)行網(wǎng)絡(luò)通信,也即是網(wǎng)絡(luò)數(shù)據(jù)傳輸,更具體一點(diǎn),是網(wǎng)絡(luò)主機(jī)中的不同進(jìn)程間,基于網(wǎng)絡(luò)傳輸數(shù)據(jù)。
那么,在組建的網(wǎng)絡(luò)中,如何判斷到底是從哪臺(tái)主機(jī),將數(shù)據(jù)傳輸?shù)侥桥_(tái)主機(jī)呢?這就需要使用IP地址來標(biāo)識(shí)。
1. IP地址
IP地址主要用于標(biāo)識(shí)網(wǎng)絡(luò)主機(jī)、其他網(wǎng)絡(luò)設(shè)備(如路由器)的網(wǎng)絡(luò)地址。簡單說,IP地址用于定位主機(jī)的網(wǎng)絡(luò)地址。
就像我們發(fā)送快遞一樣,需要知道對(duì)方的收貨地址,快遞員才能將包裹送到目的地。
格式:
IP地址是一個(gè)32位的二進(jìn)制數(shù),通常被分割為4個(gè)“8位二進(jìn)制數(shù)”(也就是4個(gè)字節(jié)),如:
01100100.00000100.00000101.00000110。
通常用“點(diǎn)分十進(jìn)制”的方式來表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之間的十進(jìn)制整數(shù))。如:100.4.5.6。
特殊IP:
127.*的IP地址用于本機(jī)環(huán)回(loop back)測(cè)試,通常是127.0.0.1
本機(jī)環(huán)回主要用于本機(jī)到本機(jī)的網(wǎng)絡(luò)通信(系統(tǒng)內(nèi)部為了性能,不會(huì)走網(wǎng)絡(luò)的方式傳輸),對(duì)于
開發(fā)網(wǎng)絡(luò)通信的程序(即網(wǎng)絡(luò)編程)而言,常見的開發(fā)方式都是本機(jī)到本機(jī)的網(wǎng)絡(luò)通信。
IP地址解決了網(wǎng)絡(luò)通信時(shí),定位網(wǎng)絡(luò)主機(jī)的問題,但是還存在一個(gè)問題,傳輸?shù)侥康闹鳈C(jī)后,由哪個(gè)進(jìn)程來接收這個(gè)數(shù)據(jù)呢?這就需要端口號(hào)來標(biāo)識(shí)。
2. 端口號(hào)
概念:
在網(wǎng)絡(luò)通信中,IP地址用于標(biāo)識(shí)主機(jī)網(wǎng)絡(luò)地址,端口號(hào)可以標(biāo)識(shí)主機(jī)中發(fā)送數(shù)據(jù)、接收數(shù)據(jù)的進(jìn)程。簡單說:端口號(hào)用于定位主機(jī)中的進(jìn)程。
類似發(fā)送快遞時(shí),不光需要指定收貨地址(IP地址),還需要指定收貨人(端口號(hào))
格式:
端口號(hào)是0~65535范圍的數(shù)字,在網(wǎng)絡(luò)通信中,進(jìn)程可以通過綁定一個(gè)端口號(hào),來發(fā)送及接收網(wǎng)絡(luò)數(shù)據(jù)。
注意事項(xiàng):
兩個(gè)不同的進(jìn)程,不能綁定同一個(gè)端口號(hào),但一個(gè)進(jìn)程可以綁定多個(gè)端口號(hào)。
問題:
有了IP地址和端口號(hào),可以定位到網(wǎng)絡(luò)中唯一的一個(gè)進(jìn)程,但還存在一個(gè)問題,網(wǎng)絡(luò)通信是基于二進(jìn)制0/1數(shù)據(jù)來傳輸,如何告訴對(duì)方發(fā)送的數(shù)據(jù)是什么樣的呢?
?
網(wǎng)絡(luò)通信傳輸?shù)臄?shù)據(jù)類型可能有多種:圖片,視頻,文本等。同一個(gè)類型的數(shù)據(jù),格式可能也不同,如
發(fā)送一個(gè)文本字符串“你好!”:如何標(biāo)識(shí)發(fā)送的數(shù)據(jù)是文本類型,及文本的編碼格式呢?
?
基于網(wǎng)絡(luò)數(shù)據(jù)傳輸,需要使用協(xié)議來規(guī)定雙方的數(shù)據(jù)格式。
3. 認(rèn)識(shí)協(xié)議(核心概念)
協(xié)議,網(wǎng)絡(luò)協(xié)議的簡稱,網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)通信(即網(wǎng)絡(luò)數(shù)據(jù)傳輸)經(jīng)過的所有網(wǎng)絡(luò)設(shè)備都必須共同遵從的一組約定、規(guī)則。如怎么樣建立連接、怎么樣互相識(shí)別等。只有遵守這個(gè)約定,計(jì)算機(jī)之間才能相互通信交流。
由三要素組成:
- 語法:即數(shù)據(jù)與控制信息的結(jié)構(gòu)或格式;
類似打電話時(shí),雙方要使用同樣的語言:普通話
- 語義:即需要發(fā)出何種控制信息,完成何種動(dòng)作以及做出何種響應(yīng);
語義主要用來說明通信雙方應(yīng)當(dāng)怎么做。用于協(xié)調(diào)與差錯(cuò)處理的控制信息。
類似打電話時(shí),說話的內(nèi)容。一方道:你瞅啥?另一方就得有對(duì)應(yīng)的響應(yīng):瞅你咋的!
- 時(shí)序,即事件實(shí)現(xiàn)順序的詳細(xì)說明。
時(shí)序定義了何時(shí)進(jìn)行通信,先講什么,后講什么,講話的速度等。比如是采用同步傳輸還是
異步傳輸。
女生和男生的通話,總是由男生主動(dòng)發(fā)起通話,而總是在男生戀戀不舍的時(shí)候,由女生要求
結(jié)束通話。
協(xié)議(protocol)最終體現(xiàn)為在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包的格式。
為什么需要協(xié)議?
好比相親,彼此協(xié)商胸口插支玫瑰花見面,這就是一種提前的約定,也可以稱之為協(xié)議。
計(jì)算機(jī)之間的傳輸媒介是光信號(hào)和電信號(hào)。通過 “頻率” 和 “強(qiáng)弱” 來表示 0 和 1 這樣的信息。要想傳遞各種不同的信息,就需要約定好雙方的數(shù)據(jù)格式。
- 計(jì)算機(jī)生產(chǎn)廠商有很多;
- 計(jì)算機(jī)操作系統(tǒng),也有很多;
- 計(jì)算機(jī)網(wǎng)絡(luò)硬件設(shè)備,還是有很多;
?
如何讓這些不同廠商之間生產(chǎn)的計(jì)算機(jī)能夠相互順暢的通信? 就需要有人站出來,約定一個(gè)
共同的標(biāo)準(zhǔn),大家都來遵守,這就是 網(wǎng)絡(luò)協(xié)議;
知名協(xié)議的默認(rèn)端口
系統(tǒng)端口號(hào)范圍為 0 ~ 65535,其中:0 ~ 1023 為知名端口號(hào),這些端口預(yù)留給服務(wù)端程序綁定廣泛使用的應(yīng)用層協(xié)議,如:
- 22端口:預(yù)留給SSH服務(wù)器綁定SSH協(xié)議
- 21端口:預(yù)留給FTP服務(wù)器綁定FTP協(xié)議
- 23端口:預(yù)留給Telnet服務(wù)器綁定Telnet協(xié)議
- 80端口:預(yù)留給HTTP服務(wù)器綁定HTTP協(xié)議
- 443端口:預(yù)留給HTTPS服務(wù)器綁定HTTPS協(xié)議
需要補(bǔ)充的是:
以上只是說明 0 ~ 1023 范圍的知名端口號(hào)用于綁定知名協(xié)議,但某個(gè)服務(wù)器也可以使用其他 1024 ~ 65535 范圍內(nèi)的端口來綁定知名協(xié)議。
餐廳的VIP包房是給會(huì)員使用,但會(huì)員也可以不坐包房,坐其他普通座位。
4. 五元組
在TCP/IP協(xié)議中,用五元組來標(biāo)識(shí)一個(gè)網(wǎng)絡(luò)通信:
- 源IP:標(biāo)識(shí)源主機(jī)
- 源端口號(hào):標(biāo)識(shí)源主機(jī)中該次通信發(fā)送數(shù)據(jù)的進(jìn)程
- 目的IP:標(biāo)識(shí)目的主機(jī)
- 目的端口號(hào):標(biāo)識(shí)目的主機(jī)中該次通信接收數(shù)據(jù)的進(jìn)程
- 協(xié)議號(hào):標(biāo)識(shí)發(fā)送進(jìn)程和接收進(jìn)程雙方約定的數(shù)據(jù)格式
用發(fā)送快遞來講就是:
- 源IP:寄件人地址
- 源端口號(hào):寄件人
- 目的IP:收件人地址
- 目的端口號(hào):收件人
- 協(xié)議:順豐快遞
5. 協(xié)議分層
網(wǎng)絡(luò)通信,是一個(gè)非常復(fù)雜的過程,有很多的問題,很多的細(xì)節(jié)要處理,如果就用一個(gè)協(xié)議,把所有的問題都解決,就會(huì)造成這個(gè)協(xié)議復(fù)雜無比。
于是在這里就有了協(xié)議拆分,把協(xié)議拆分成多個(gè)協(xié)議,但是在后續(xù)的發(fā)展中發(fā)現(xiàn)拆分出來的協(xié)議解決的問題差不多,因此就再把這些協(xié)議分成很多類,就是協(xié)議分層。(每一層里都有很多協(xié)議,這些協(xié)議做的工作都差不多)
當(dāng)前我們看到的網(wǎng)絡(luò)結(jié)構(gòu)就是協(xié)議分層之后的產(chǎn)物。
網(wǎng)絡(luò)協(xié)議拆分,并分層之后,有啥好處呢?
?
下層協(xié)議給上層提供服務(wù),上層調(diào)用下層協(xié)議。(封裝)
?
實(shí)現(xiàn)上層協(xié)議的人,不必考慮下層協(xié)議的細(xì)節(jié)解耦合:可以把同一層協(xié)議替換成其他協(xié)議,對(duì)于其他層次的協(xié)議來說,基本是無感知的
?
類似于打電話我們只需要有語言協(xié)議即可,并不需要了解電話協(xié)議,也互不影響
當(dāng)前有兩種分層方式:
-
OSI七層網(wǎng)絡(luò)模型
(理論上存在,實(shí)際上沒有這么實(shí)現(xiàn)的) TCP/IP五層(或四層)模型
OSI七層網(wǎng)絡(luò)模型:
TCP/IP五層(或四層)模型:
上面三層統(tǒng)稱為應(yīng)用層
- 應(yīng)用層:負(fù)責(zé)應(yīng)用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。我們的網(wǎng)絡(luò)編程主要就是針對(duì)應(yīng)用層。(數(shù)據(jù)傳輸過去之后,具體怎么使用)
- 傳輸層:負(fù)責(zé)兩臺(tái)主機(jī)之間的數(shù)據(jù)傳輸。如傳輸控制協(xié)議 (TCP),能夠確保數(shù)據(jù)可靠的從源主機(jī)發(fā)送到目標(biāo)主機(jī)。(兩個(gè)點(diǎn)之間的通信,不考慮路徑規(guī)劃)
- 網(wǎng)絡(luò)層:負(fù)責(zé)地址管理和路由選擇。例如在IP協(xié)議中,通過IP地址來標(biāo)識(shí)一臺(tái)主機(jī),并通過路由表的方式規(guī)劃出兩臺(tái)主機(jī)之間的數(shù)據(jù)傳輸?shù)木€路(路由)。路由器(Router)工作在網(wǎng)路層。(兩個(gè)點(diǎn)之間的路徑規(guī)劃)
- 數(shù)據(jù)鏈路層:負(fù)責(zé)設(shè)備之間的數(shù)據(jù)幀的傳送和識(shí)別。例如網(wǎng)卡設(shè)備的驅(qū)動(dòng)、幀同步(就是說從網(wǎng)線上檢測(cè)到什么信號(hào)算作新幀的開始)、沖突檢測(cè)(如果檢測(cè)到?jīng)_突就自動(dòng)重發(fā))、數(shù)據(jù)差錯(cuò)校驗(yàn)等工作。有以太網(wǎng)、令牌環(huán)網(wǎng),無線LAN等標(biāo)準(zhǔn)。交換機(jī)(Switch)工作在數(shù)據(jù)鏈路層。(兩個(gè)相鄰節(jié)點(diǎn)之間如何傳輸)
- 物理層:負(fù)責(zé)光/電信號(hào)的傳遞方式。比如現(xiàn)在以太網(wǎng)通用的網(wǎng)線(雙絞 線)、早期以太網(wǎng)采用的的同軸電纜(現(xiàn)在主要用于有線電視)、光纖,現(xiàn)在的wifi無線網(wǎng)使用電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)工作在物理層。(網(wǎng)絡(luò)通行基礎(chǔ))
只有應(yīng)用層是程序可以寫代碼處理的,其他的都是由操作系統(tǒng)和硬件設(shè)備來處理的
網(wǎng)絡(luò)編程的主要工作就是寫應(yīng)用層代碼,來處理應(yīng)用層的協(xié)議數(shù)據(jù)
物理層我們考慮的比較少。因此很多時(shí)候也可以稱為 TCP/IP四層模型。
網(wǎng)絡(luò)設(shè)備所在分層:
- 對(duì)于一臺(tái)主機(jī),它的操作系統(tǒng)內(nèi)核實(shí)現(xiàn)了從傳輸層到物理層的內(nèi)容,也即是TCP/IP五層模型的下四層;
- 對(duì)于一臺(tái)路由器,它實(shí)現(xiàn)了從網(wǎng)絡(luò)層到物理層,也即是TCP/IP五層模型的下三層;
- 對(duì)于一臺(tái)交換機(jī),它實(shí)現(xiàn)了從數(shù)據(jù)鏈路層到物理層,也即是TCP/IP五層模型的下兩層;
- 對(duì)于集線器,它只實(shí)現(xiàn)了物理層;
注意我們這里說的是傳統(tǒng)意義上的交換機(jī)和路由器,也稱為二層交換機(jī)(工作在TCP/IP五層模型的下兩層)、三層路由器(工作在TCP/IP五層模型的下三層)。
面試拓展:
交換機(jī)和路由器功能都是用來組建局域網(wǎng)
?交換機(jī)是工作在數(shù)據(jù)鏈路層;路由器是工作在網(wǎng)絡(luò)層;
實(shí)際上路由器和交換機(jī)都越來越強(qiáng)大,彼此之間有許多功能的重疊
6. 封裝和分用
封裝描述了網(wǎng)絡(luò)是如何傳輸數(shù)據(jù)的
例如我們使用 QQ 傳輸消息,主機(jī) A 發(fā)送消息
-
應(yīng)用層,QQ 應(yīng)用程序,把用戶輸入的數(shù)據(jù)整理成應(yīng)用層數(shù)據(jù)報(bào)(相當(dāng)類似于 “字符串拼接” 的方式,構(gòu)成更完整,信息更多的數(shù)據(jù),再傳輸)
接下來就需要把這個(gè)報(bào)交給傳輸層(操作系統(tǒng)內(nèi)核) -
傳輸層,會(huì)根據(jù)當(dāng)前使用的傳輸層協(xié)議,給應(yīng)用層數(shù)據(jù)報(bào)進(jìn)行進(jìn)一步組裝
繼續(xù)把這個(gè)數(shù)據(jù)報(bào)交給網(wǎng)絡(luò)層 -
網(wǎng)絡(luò)層,主要使用的是 IP 協(xié)議,再進(jìn)行進(jìn)一步組裝
數(shù)據(jù)組合好了之后,再交給數(shù)據(jù)鏈路層 -
數(shù)據(jù)鏈路層,比如使用以太網(wǎng)協(xié)議,再進(jìn)一步組裝
構(gòu)造成了一個(gè)以太網(wǎng)數(shù)據(jù)幀,再把這個(gè)數(shù)據(jù)交給了物理層 -
物理層,拿到數(shù)據(jù)之后,把這里的這些二進(jìn)制序列,轉(zhuǎn)換成 光信號(hào)/電信號(hào),把光電信號(hào)發(fā)送出去即可
上述從上到下依次添加報(bào)頭的過程,就稱為封裝
當(dāng)主機(jī) B 收到上述數(shù)據(jù)的時(shí)候,就是封裝的 “逆過程” ,稱為 “分用”,每一層協(xié)議把對(duì)應(yīng)的協(xié)議報(bào)頭給解析出來,并且去掉報(bào)頭。
-
物理層,把光電信號(hào)轉(zhuǎn)換回二進(jìn)制的數(shù)據(jù),得到以太網(wǎng)數(shù)據(jù)幀,交給數(shù)據(jù)鏈路層
-
數(shù)據(jù)鏈路層,去掉幀頭幀尾,把載荷部分取出來,交給網(wǎng)絡(luò)層
-
網(wǎng)絡(luò)層,IP 協(xié)議解析出 IP 報(bào)頭,并去掉,把載荷取出來,交給傳輸層
-
傳輸層,UDP 協(xié)議再進(jìn)行解析,解析出 UDP 報(bào)頭,把載荷取出來,交給應(yīng)用程序
-
應(yīng)用層,qq這個(gè)程序,qq再解析這里的信息,顯示到界面上
上述過程中也就體現(xiàn)出網(wǎng)絡(luò)通信中各個(gè)協(xié)議是如何配合工作的文章來源:http://www.zghlxwxcb.cn/news/detail-408788.html
封裝分用不僅僅出現(xiàn)在主機(jī)上,也出現(xiàn)在傳輸過程中,包括在交換機(jī)和路由器上。文章來源地址http://www.zghlxwxcb.cn/news/detail-408788.html
- 經(jīng)典路由器,是封裝分用到網(wǎng)絡(luò)層
- 經(jīng)典交換機(jī),是封裝分用到數(shù)據(jù)鏈路層
到了這里,關(guān)于【網(wǎng)絡(luò)原理】網(wǎng)絡(luò)通信與協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!