国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用

這篇具有很好參考價(jià)值的文章主要介紹了【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、認(rèn)識(shí)協(xié)議

1.概念

2.作用(為什么需要協(xié)議?)

二、協(xié)議分層

1.為什么需要?絡(luò)協(xié)議的分層?

2. 協(xié)議分層是什么

3.分層帶來的好處

三、TCP/IP五層(或四層)模型

(1)物理層

(2)數(shù)據(jù)鏈路層

(3)網(wǎng)絡(luò)層

(4)傳輸層

(5)應(yīng)用層

四、封裝和分用(協(xié)議的層和層之間是如何配合工作的?)

1.封裝(和Java面向?qū)ο蟮姆庋b,不是一個(gè)封裝)

2.分用


一、認(rèn)識(shí)協(xié)議

1.概念

簡單來說:就是一種通信雙方,對于通信規(guī)則的約定(標(biāo)準(zhǔn)),一定是通信雙方都認(rèn)可

但是這個(gè)協(xié)議不一定是認(rèn)可面非常廣的,即使是兩個(gè)人之間的也可叫做協(xié)議

就好???友,彼此協(xié)商胸?插?玫瑰花??,這就是?種提前的約定,也可以稱之為協(xié)議

2.作用(為什么需要協(xié)議?)

兩個(gè)用來通信的主機(jī)設(shè)備有著不同的硬件,不同的操作系統(tǒng),不同的應(yīng)用程序,有了協(xié)議,即使上述內(nèi)容不同,通信也能正常進(jìn)行

進(jìn)行網(wǎng)絡(luò)通信的時(shí)候,通信協(xié)議是非常關(guān)鍵的環(huán)節(jié)


二、協(xié)議分層

1.為什么需要?絡(luò)協(xié)議的分層?

網(wǎng)絡(luò)通信是一個(gè)非常復(fù)雜的事情,這個(gè)過程涉及到很多細(xì)節(jié)問題

如果你使用一個(gè)協(xié)議來約定上述所以的細(xì)節(jié),這個(gè)協(xié)議就會(huì)非常的龐大,非常的復(fù)雜

——>拆分:為了管理復(fù)雜程度,不要讓這個(gè)東西太復(fù)雜,每個(gè)部分負(fù)責(zé)一個(gè)功能

這樣一個(gè)功能復(fù)雜的協(xié)議,就拆分成多個(gè)功能更單一的協(xié)議了

但是拆出來的協(xié)議太多了,就要對這個(gè)協(xié)議進(jìn)行分類,甚至要“分層”

2. 協(xié)議分層是什么

協(xié)議分層:把很多的協(xié)議,按照功能分成不同的層級(jí),每個(gè)層級(jí)都有對應(yīng)的主線任務(wù)(目標(biāo)/要解決的問題),上層協(xié)議會(huì)調(diào)用下層協(xié)議的功能,下層協(xié)議會(huì)給上次協(xié)議提供服務(wù)

注意:不能“越級(jí)調(diào)用”

3.分層帶來的好處

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

好處主要有兩個(gè)方面:

(1)封裝的效果:某層協(xié)議,不必知道其他層協(xié)議的細(xì)節(jié),降低學(xué)習(xí)使用成本

eg:只要會(huì)說漢語,不需要理解電話的工作原理,就能打電話;

? ? ? ? 設(shè)計(jì)電話的人,可能是老外,不必懂漢語,也不妨礙他設(shè)計(jì)開發(fā)電話

(2)任意層次的協(xié)議,都是可以靈活替換的(也就是解耦合),這樣就給整個(gè)網(wǎng)絡(luò)體系,升級(jí)迭代,帶來了很大的便利

eg:將電話機(jī)協(xié)議改為無線電協(xié)議:站在使用者的角度,完全感知不到任何的區(qū)別,電話該咋打還是咋打;

????????將漢語協(xié)議改為英語協(xié)議:雖然語言變了,電話這一層,沒有任何影響,設(shè)計(jì)電話的人不需要針對“英語”做任何的改變和特殊處理


當(dāng)前網(wǎng)絡(luò)的現(xiàn)狀,就是有很多的協(xié)議,這些協(xié)議就是按照一定的分層規(guī)則組織起來的,業(yè)內(nèi)普遍的分層方式有兩種:

(1)OSI七層模型

只是存在于教科書上,實(shí)際客觀世界中并不存在,因?yàn)樗愕糜悬c(diǎn)復(fù)雜(這里就不作介紹了)

(2)TCP/IP五層(或四層)模型

可以認(rèn)為是OSI的簡化版本,就是真實(shí)世界采取的網(wǎng)絡(luò)分成模型,目前接觸到的網(wǎng)絡(luò),大部分都是TCP/IP模型的(電腦上網(wǎng)),當(dāng)然,也有不是的,eg:4G/5G通信,就是一套專門的模型協(xié)議(手機(jī)流量上網(wǎng))

三、TCP/IP五層(或四層)模型

(1)物理層

硬件層面上的相關(guān)約定,網(wǎng)線,網(wǎng)口

eg:金工實(shí)習(xí),8根銅線穿到一起,接上水晶頭,這樣的一些接線規(guī)則

下面(2)(3)(4)以快遞為例介紹?

(2)數(shù)據(jù)鏈路層

關(guān)注的是通信過程中,兩個(gè)相鄰節(jié)點(diǎn)之間的通信

eg:快遞具體運(yùn)輸?shù)?,這是快遞員自行進(jìn)行確定的

例如,當(dāng)前路線:
上海 -> 蘇州 -> 南京 -> 西安
上海 -> 蘇州大卡車 就運(yùn)過去,有一個(gè)開著打開車的快遞小哥
蘇州 ->南京輪船,沿著長江,一路逆流而上,有一個(gè)開著船的快遞小哥,
南京 ->西安 鐵路 裝上火車
西安 ->我家門口 電三輪

每個(gè)節(jié)點(diǎn)之間的運(yùn)輸方式,就相當(dāng)于數(shù)據(jù)鏈路層

(3)網(wǎng)絡(luò)層

關(guān)注的是通信中,通信路徑的規(guī)劃,規(guī)劃出的路徑就決定了,數(shù)據(jù)要經(jīng)過哪些節(jié)點(diǎn)“點(diǎn)到點(diǎn)的傳輸

eg:商家發(fā)貨,就會(huì)把快遞交給快遞小哥,就會(huì)拿到快遞公司,
快遞公司,就會(huì)對這些包衷,進(jìn)行分揀~~根據(jù)快遞的目的地,分配到不同的運(yùn)輸線路上
發(fā)貨地點(diǎn)是在 上海.如果收件地點(diǎn)是在西安
上海 -> 南京 ->西安
上海 -> 無錫 ->西安
上海 -> 徐州 ->西安
快遞公司,就會(huì)把路線規(guī)劃好,包裏就會(huì)按照這樣的既定路線進(jìn)行傳輸

(4)傳輸層

關(guān)注的是通信雙方的“起點(diǎn)”和“終點(diǎn)”,“端到端的傳輸

eg:我和商家,我們倆只關(guān)注,發(fā)件人信息,和收件人信息(也就相當(dāng)于起點(diǎn)和終點(diǎn))

(5)應(yīng)用層

和具體應(yīng)用程序直接相關(guān),傳輸?shù)臄?shù)據(jù)是干啥用的,如何用的,有啥意義

eg:我在淘寶上還是買了個(gè)東西,買了個(gè)床刷子~~
我拿著這個(gè)床刷子要干啥~~ 就是我需要關(guān)心的, 快遞公司/商家,都是不關(guān)心的~~當(dāng)我拿到刷子之后,用來刷床,還是用來刷沙發(fā), 還是用來打兒子~~就是我自己來決定了~

?也有人把上述通信協(xié)議分層的模型,稱為TCP/IP四層(沒算物理層)

站在程序員的角度,物理層是純硬件,其余的四層還是軟件

但是物理層又和數(shù)據(jù)鏈路層聯(lián)系緊密,所以有時(shí)也算五層

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

對于OSI模型:只是將TCP/IP模型中的應(yīng)用層細(xì)分為應(yīng)用層+表示層+會(huì)話層?

上圖中:網(wǎng)絡(luò)層==互聯(lián)網(wǎng)層 ;數(shù)據(jù)鏈路層==網(wǎng)卡層;物理層==(硬件)只是名稱不同而已

關(guān)注上圖的側(cè)面:分別涉及應(yīng)用程序,操作系統(tǒng)(內(nèi)核),設(shè)備驅(qū)動(dòng)程序與網(wǎng)絡(luò)接口

對于Java程序員,重點(diǎn)關(guān)注應(yīng)用層+傳輸層(應(yīng)用層是需要調(diào)用傳輸層提供的接口(api)來進(jìn)行一些功能實(shí)現(xiàn)的),這些和日常開發(fā)息息相關(guān),其他層簡單了解即可


筆試題(選擇題):

路由器是工作在上述協(xié)議中的哪一層

交換機(jī)是工作在上述協(xié)議中的哪一層

如果出現(xiàn):這里的”路由器"和”交換機(jī)“就是"經(jīng)典的路由器交換機(jī)"(課本上的)

路由器就是工作在網(wǎng)絡(luò)層(三層轉(zhuǎn)發(fā))

交換機(jī)就是工作在數(shù)據(jù)鏈路層(二層轉(zhuǎn)發(fā)) (稍后詳細(xì)介紹)

但是真實(shí)的情況:現(xiàn)在的路由器和交換機(jī)功能越來越多,界限越來越模糊

eg:有些路由器/交換機(jī)可以工作在應(yīng)用層,你通過wx發(fā)個(gè)信息,路由器/交換機(jī)就能感知到,你發(fā)的這個(gè)信息內(nèi)容是啥(信息內(nèi)容,屬于應(yīng)用層的范疇)


四、封裝和分用(協(xié)議的層和層之間是如何配合工作的?)

上層協(xié)議調(diào)用下層協(xié)議,下層協(xié)議給上層協(xié)議提供服務(wù)

下面以A通過QQ給B發(fā)送hello為例分別介紹封裝和分用

首先QQ里面就會(huì)有一個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議,這個(gè)協(xié)議約定了數(shù)據(jù)按照什么樣的格式來組織

這種數(shù)據(jù)的格式:本質(zhì)上是(二進(jìn)制的)字符串(更準(zhǔn)確的說是二進(jìn)制的bit流),因此要傳輸?shù)陌l(fā)送人,接收人,消息時(shí)間,消息內(nèi)容...就要組織到一個(gè)字符串中,組織的時(shí)候要按照一定的格式來

不同的協(xié)議,數(shù)據(jù)組織的格式是不同的

序列化和反序列化

序列化:把結(jié)構(gòu)化數(shù)據(jù)(包含很多屬性,很多字段) ——>字符串/二進(jìn)制字符串

反序列化: 把字符串/二進(jìn)制字符串——>結(jié)構(gòu)化數(shù)據(jù)

發(fā)送和接收的過程中就進(jìn)行了一個(gè)序列化和反序列化

1.封裝(和Java面向?qū)ο蟮姆庋b,不是一個(gè)封裝)

A的在聊天窗口里,輸入hello,點(diǎn)擊發(fā)送,那么QQ應(yīng)用程序就要負(fù)責(zé)實(shí)現(xiàn)上述邏輯,而這些邏輯都要通過網(wǎng)絡(luò)來傳輸

(1)QQ應(yīng)用程序首先就會(huì)把上述要傳遞的內(nèi)容,組織成“應(yīng)用層數(shù)據(jù)包”

假設(shè)QQ的應(yīng)用層協(xié)議是這樣的:發(fā)送人的qq號(hào),接收人的qq號(hào),發(fā)送時(shí)間,消息正文\n

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

(2)應(yīng)用層數(shù)據(jù)包已經(jīng)有了,QQ程序就要調(diào)用系統(tǒng)的api來進(jìn)行傳輸

QQ 程序,就要調(diào)用系統(tǒng)的 api, 來進(jìn)行傳輸.

應(yīng)用層接下來要把數(shù)據(jù)交給,傳輸層.

怎么交給傳輸層?傳輸層(操作系統(tǒng)內(nèi)核) 提供了 api,讓應(yīng)用程序去調(diào)用.

調(diào)用這樣的 api, 就會(huì)把剛才的應(yīng)用層數(shù)據(jù)交給傳輸層.(進(jìn)入到系統(tǒng)內(nèi)核了),稱為 socket api

傳輸層拿到應(yīng)用層數(shù)據(jù)包之后,就會(huì)把這個(gè)數(shù)據(jù)包進(jìn)行進(jìn)一步的封裝,構(gòu)造成 傳輸層數(shù)據(jù)包在傳輸層

典型協(xié)議有兩個(gè),TCP,UDP

此處假設(shè)使用 UDP 來作為傳輸層協(xié)議

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

整個(gè)是UDP數(shù)據(jù)包,前面是UDP報(bào)頭,后面是UDP數(shù)據(jù)包的載荷(payload)

報(bào)頭里放著一些UDP相關(guān)的屬性(比如發(fā)件人和收件人的端口號(hào)就在UDP報(bào)頭中)

傳輸層 構(gòu)造好數(shù)據(jù)包之后,就會(huì)繼續(xù)把數(shù)據(jù)包,交給網(wǎng)絡(luò)層,(傳輸層會(huì)調(diào)用網(wǎng)絡(luò)層提供的 api,這個(gè)調(diào)用的過程
都是系統(tǒng)內(nèi)核,自行負(fù)責(zé)了,咱們程序員感知不到

(3)網(wǎng)絡(luò)層 典型的協(xié)議IP協(xié)議【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

整個(gè)是IP數(shù)據(jù)包,前面是IP數(shù)據(jù)包的報(bào)頭,后面是IP數(shù)據(jù)包的載荷(IP協(xié)議不關(guān)心后面的載荷里頭是啥,只關(guān)心IP報(bào)頭里的數(shù)據(jù))

IP報(bào)頭中就包含收件人的IP地址和發(fā)件人的IP地址

又進(jìn)一步的調(diào)用數(shù)據(jù)鏈路層的 api, 把上述 IP 數(shù)據(jù)包,交給數(shù)據(jù)鏈路層的協(xié)議.

同樣也是系統(tǒng)內(nèi)核負(fù)責(zé)完成的.程序員感知不到了,

這里的 api 往往是 網(wǎng)卡 的驅(qū)動(dòng)程序提供的.

硬件廠商,發(fā)布硬件的時(shí)候,提供配套的軟件(驅(qū)動(dòng)程序)通過驅(qū)動(dòng)程序,可以讓操作系統(tǒng)實(shí)現(xiàn)對硬件的精細(xì)控制

(4)數(shù)據(jù)鏈路層 典型協(xié)議 以太網(wǎng)

以太在物理中是光在真空中傳輸?shù)慕橘|(zhì),此處傳輸網(wǎng)絡(luò)數(shù)據(jù),也需要介質(zhì)所以引入這個(gè)詞

電腦, 通過有線網(wǎng), 傳輸數(shù)據(jù), 走的就是"以太網(wǎng)"協(xié)議~~

咱們電腦上插的網(wǎng)線,也叫做"以太網(wǎng)線

以太網(wǎng),也有自己的數(shù)據(jù)包格式,就會(huì)拿到上述 IP 數(shù)據(jù)包,進(jìn)一步的封裝

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

上述數(shù)據(jù)已經(jīng)進(jìn)入到網(wǎng)卡驅(qū)動(dòng)中了,接下來就是要真正的發(fā)送出去了?

(5)物理層:上述的以太網(wǎng)數(shù)據(jù)幀,本質(zhì)上還是0101二進(jìn)制數(shù)據(jù)

硬件設(shè)備,要把上述的二進(jìn)制數(shù)據(jù),轉(zhuǎn)為光信號(hào)/電信號(hào)/電磁波才會(huì)真正的進(jìn)行發(fā)射

上述層層包裝數(shù)據(jù),不停的加數(shù)據(jù)報(bào)頭的過程,稱為”封裝“ ,類似包裝快遞

2.分用

上述數(shù)據(jù),并非直接到達(dá)B,而是要先到和A連接的交換機(jī)/路由器,數(shù)據(jù)經(jīng)過交換機(jī)/路由器的一系列轉(zhuǎn)發(fā)之后,最終到達(dá)B

當(dāng)數(shù)據(jù)到達(dá)B之后,又要做哪些事情呢? 就是上述過程的“逆過程”(拆快遞)

(1)物理層

收到一系列光電信號(hào),把這些信號(hào)轉(zhuǎn)為0101二進(jìn)制數(shù)據(jù),交給數(shù)據(jù)鏈路層

(2)數(shù)據(jù)鏈路層

按照以太網(wǎng)協(xié)議,對數(shù)據(jù)進(jìn)行解析(解析報(bào)頭中的關(guān)鍵信息,為后續(xù)的傳輸/轉(zhuǎn)發(fā)打下基礎(chǔ),還需要拿到載荷數(shù)據(jù))【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

解析出來的載荷數(shù)據(jù),是要交給上層(網(wǎng)絡(luò)層)

(3)網(wǎng)絡(luò)層 IP協(xié)議

IP協(xié)議拿到IP數(shù)據(jù)包,按照協(xié)議格式進(jìn)一步解析,解析報(bào)頭中的關(guān)鍵信息,取出載荷

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

把載荷再進(jìn)一步交給上層(傳輸層)

(4)傳輸層? UDP

拿著UDP數(shù)據(jù)包,按照UDP格式進(jìn)一步解析,解析出關(guān)鍵的信息(要交給哪個(gè)端口號(hào)對應(yīng)的進(jìn)程),以及解析成載荷數(shù)據(jù)

?【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

再把載荷交給對應(yīng)的應(yīng)用程序

(5)應(yīng)用層

QQ程序拿到了應(yīng)用數(shù)據(jù)包

【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用,JavaEE初階,網(wǎng)絡(luò),智能路由器,java-ee,tcp/ip,服務(wù)器

QQ按照自己的協(xié)議格式,進(jìn)行解析,拿到這里的結(jié)構(gòu)化數(shù)據(jù)(反序列化),顯示到界面上

這個(gè)過程就是分用,就相當(dāng)于拆快遞


中間的路由器,交換機(jī),也要進(jìn)行封裝分用,也是上述的過程

只不過,交換機(jī),封裝分用到數(shù)據(jù)鏈路層,即可知道下一步如何轉(zhuǎn)發(fā)(工作在數(shù)據(jù)鏈路層

路由器,封裝分用到,網(wǎng)絡(luò)層,即可知道下一步如何轉(zhuǎn)發(fā)(工作在網(wǎng)絡(luò)層文章來源地址http://www.zghlxwxcb.cn/news/detail-856372.html

到了這里,關(guān)于【JavaEE初階】網(wǎng)絡(luò)原理|認(rèn)識(shí)協(xié)議|協(xié)議分層|TCP/IP模型|封裝和分用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包