网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...
目錄
- 網(wǎng)絡(luò)架構(gòu)及其演變過(guò)程
- 單機(jī)架構(gòu)
- CS架構(gòu)
- BS架構(gòu)
- BS架構(gòu)和CS架構(gòu)的區(qū)別
- C/S架構(gòu)的優(yōu)缺點(diǎn):
- B/S架構(gòu)的優(yōu)缺點(diǎn):
- 互聯(lián)網(wǎng)與互聯(lián)網(wǎng)的組成
- 互聯(lián)網(wǎng)的組成(教科書(shū)版)
- 互聯(lián)網(wǎng)的組成(科普版)
- OSI七層協(xié)議
- 物理層
- 數(shù)據(jù)鏈路層
- 以太網(wǎng)協(xié)議
- Mac地址
- 廣播地址
- 網(wǎng)絡(luò)層
- 傳輸層
- 應(yīng)用層
- Socket抽象層
- Socket抽象層
網(wǎng)絡(luò)架構(gòu)及其演變過(guò)程
單機(jī)架構(gòu)
單機(jī):顧名思義,就是不需要進(jìn)行聯(lián)網(wǎng)操作
應(yīng)用領(lǐng)域
- 俄羅斯方塊
- 連連看
CS架構(gòu)
CS架構(gòu):
C--client--客戶端,用于安裝用戶軟件,有很多個(gè),如QQ,DNF
S--server--服務(wù)端,用于管理數(shù)據(jù)庫(kù)的主機(jī)中的軟件,兼顧還有處理業(yè)務(wù)邏輯,只需要一個(gè)就可以了
BS架構(gòu)
BS架構(gòu):
- B--browse--瀏覽器,安裝在用戶電腦瀏覽器上,訪問(wèn)同種類的網(wǎng)站,具體業(yè)務(wù)的處理根據(jù)相應(yīng)協(xié)議和標(biāo)準(zhǔn)提供通用的服務(wù)器程序,在不同的服務(wù)器處理,如淘寶、京東
BS架構(gòu)和CS架構(gòu)的區(qū)別
C/S架構(gòu)的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
客戶端因?yàn)槭仟?dú)立設(shè)計(jì),所以可以實(shí)現(xiàn)個(gè)性化
因?yàn)榭蛻舳耸切枰M(jìn)行安裝的,可以不需要重復(fù)安裝和加載
因?yàn)榭蛻舳耸仟?dú)立開(kāi)發(fā)的,所以有能力對(duì)客戶端進(jìn)行安全設(shè)計(jì)
如果遇到不同的操作系統(tǒng),需要為不同的操作系統(tǒng)各開(kāi)發(fā)一套客戶端
?
缺點(diǎn):
因?yàn)榭蛻舳耸遣恍枰貜?fù)安裝,所以用戶可以不更新與升級(jí),增加了維護(hù)成本。
因?yàn)樾枰_(kāi)發(fā)客戶端和服務(wù)器兩套程序,所以開(kāi)發(fā)成本會(huì)增加
B/S架構(gòu)的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
因?yàn)锽/S架構(gòu)具備通用性,所以開(kāi)發(fā)成本較低。
因?yàn)椴恍枰惭b客戶端,所以客戶端不需要進(jìn)行升級(jí),只需要更新后臺(tái)代碼即可實(shí)現(xiàn)所有客戶端的更新。
因?yàn)锽/S架構(gòu)多用WEB網(wǎng)頁(yè)進(jìn)行開(kāi)發(fā),所以增、刪功能也非常容易,只需要修改網(wǎng)頁(yè)即可完成
缺點(diǎn):
耗流量,每次都要加載全部的內(nèi)容(不過(guò)有緩存可以降低流量損耗)
因?yàn)闆](méi)有獨(dú)立的客戶端,所以無(wú)法實(shí)現(xiàn)個(gè)性化(通過(guò)賬號(hào)體系可以實(shí)現(xiàn))
因?yàn)闆](méi)有獨(dú)立設(shè)計(jì)客戶端,所以客戶端難以實(shí)現(xiàn)安全控制(HTTPS、控件)。
難以實(shí)現(xiàn)特殊的操作(刪本地文件),所以所有的殺毒軟件都是C/S架構(gòu)的。
?
B/S架構(gòu)更多的時(shí)候是使用了HTTP協(xié)議、而C/S架構(gòu)更多的時(shí)候使用的WinSocket協(xié)議(TCP、UDP)
互聯(lián)網(wǎng)與互聯(lián)網(wǎng)的組成
互聯(lián)網(wǎng)的組成(教科書(shū)版)
互聯(lián)網(wǎng)的拓?fù)浣Y(jié)構(gòu)按照工作方式劃分,可分為兩大部分:
邊緣部分:這部分就是由互聯(lián)網(wǎng)的主機(jī)(我們使用的計(jì)算機(jī),包括服務(wù)器)組成,這部分是用戶直接使用的,用來(lái)進(jìn)行通信和資源共享。
核心部分:由網(wǎng)絡(luò)和連接這些網(wǎng)絡(luò)的路由器組成,這部分用來(lái)為邊緣部分提供服務(wù)。
互聯(lián)網(wǎng)的組成(科普版)
互聯(lián)網(wǎng)一詞我們大家都不陌生,我們所說(shuō)的上網(wǎng)就是通過(guò)互聯(lián)網(wǎng)獲取數(shù)據(jù),然后再去閱讀數(shù)據(jù)
互聯(lián)網(wǎng)的組成主要是由硬件和軟件組成,就以我們打開(kāi)淘寶網(wǎng)頁(yè)進(jìn)行舉例:
OSI七層協(xié)議
互聯(lián)網(wǎng)的本質(zhì)就是一系列的網(wǎng)絡(luò)協(xié)議,這個(gè)協(xié)議就是OSI協(xié)議,按照不同的功能,分工不同,有的人把它人為的分為七層,有的人分為五層,甚至四層
每一層都運(yùn)行不同的協(xié)議,也就是不同的標(biāo)準(zhǔn)
七層劃分:應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層
五層劃分:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層
四層劃分:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層
物理層
物理層功能:主要是基于電器的特性發(fā)送高低電壓,也就是二進(jìn)制0和1
物理層就是物理傳輸,硬件,物理特性。兩個(gè)用戶之間的信息交流,就需要兩臺(tái)終端設(shè)備,物理層的連接(路由器,光纜,電纜,無(wú)線電波)這中間傳輸?shù)亩际?1011100...這些二進(jìn)制
數(shù)據(jù)鏈路層
上面?zhèn)鬏數(shù)囊幌盗?1011100...具有某種意義嗎?單純的一串二進(jìn)制,誰(shuí)也不知道代表的是什么,那怎樣能讓這些二進(jìn)制具有意義呢?
我們可以進(jìn)行人為的分組,規(guī)定多少位為一組,每一組又代表什么意思,這樣接收端收到數(shù)據(jù)也能夠按照那樣的分組解析二進(jìn)制,獲得發(fā)送方想要表達(dá)的信息
數(shù)據(jù)鏈路層的由來(lái):單純的電信號(hào)0和1完全沒(méi)有意義,必須規(guī)定多少位電信號(hào)為一組,每組什么意思
數(shù)據(jù)鏈路層的功能:定義的電信號(hào)的分組方式
以太網(wǎng)協(xié)議
早期的時(shí)候,數(shù)據(jù)鏈路層是來(lái)做信號(hào)分組的。以前每個(gè)公司都有自己的分組方式,后來(lái)形成了統(tǒng)一的標(biāo)準(zhǔn),即以太網(wǎng)協(xié)議ethernet
ethernet規(guī)定:一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)報(bào),叫做幀,每一數(shù)據(jù)幀分為:報(bào)頭head和數(shù)據(jù)data兩部分
- head包括:(固定18個(gè)字節(jié))
- 發(fā)送者/源地址:6個(gè)字節(jié)
- 接收者/目標(biāo)地址:6個(gè)字節(jié)
- 數(shù)據(jù)類型:6個(gè)字節(jié)
data包括:(最短46個(gè)字節(jié),最長(zhǎng)1500字節(jié))
數(shù)據(jù)報(bào)的具體內(nèi)容:head長(zhǎng)度+data長(zhǎng)度=最短64字節(jié),最長(zhǎng)1518字節(jié),超出最大限制就分片發(fā)送
Mac地址
head中包括源地址和目標(biāo)地址的由來(lái):ethernet規(guī)定internet的設(shè)備必須具備網(wǎng)卡,發(fā)送端和接收端的地址就是指網(wǎng)卡的地址,也就是Mac地址
- Mac地址:每塊網(wǎng)卡出廠時(shí),都被打上唯一的Mac地址,長(zhǎng)度為48位二進(jìn)制,通常由12位16進(jìn)制表示(前六位是廠商編號(hào),后六位是流水線號(hào))
廣播地址
有了Mac地址后,計(jì)算機(jī)就可以進(jìn)行通信了。
我們的計(jì)算機(jī)都是處在局域網(wǎng)中的,局域網(wǎng)中的計(jì)算機(jī)想要進(jìn)行通信,但是又不知道對(duì)方的具體位置,所以只能通過(guò)群發(fā)的方式把信息發(fā)出去,在發(fā)信息的時(shí)候,會(huì)把自己的Mac地址,對(duì)方的Mac地址,還有數(shù)據(jù)打包成數(shù)據(jù)幀
然后把數(shù)據(jù)幀封裝好后,到物理層轉(zhuǎn)換為二進(jìn)制,因?yàn)椴恢缹?duì)方的位置,所以就進(jìn)行群發(fā),這樣同一局域網(wǎng)的計(jì)算機(jī)都能接收到,這就是廣播
但是你群發(fā)出去以后,所有人都會(huì)接收到這個(gè)數(shù)據(jù)包,然后就會(huì)進(jìn)行拆包,如果解析到head頭里面的目標(biāo)地址不是自己的Mac地址,就會(huì)把數(shù)據(jù)丟棄掉,只有對(duì)應(yīng)的計(jì)算機(jī)才能接收到
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層的功能:引入一套新的地址用來(lái)區(qū)分不同的廣播域/子網(wǎng),這套地址就是網(wǎng)絡(luò)地址
網(wǎng)絡(luò)層的由來(lái):理論上來(lái)講,我們有了ethernet,Mac地址,廣播的方式,我們就能實(shí)現(xiàn)全世界通信了,但是世界范圍的互聯(lián)網(wǎng)是由一個(gè)個(gè)小的獨(dú)立的局域網(wǎng)組成的,如果都是通過(guò)廣播的方式進(jìn)行傳輸信息,自己腦補(bǔ)一下,咦~ 好可怕
為了解決上述問(wèn)題,網(wǎng)絡(luò)層定義了一個(gè)IP協(xié)議
IP就是我們的局域網(wǎng)地址,我們數(shù)據(jù)包往外發(fā)送時(shí),經(jīng)過(guò)網(wǎng)絡(luò)層時(shí),會(huì)再加上局域網(wǎng)地址(IP地址),這樣我們就能更快的傳輸信息
傳輸層
傳輸層的由來(lái):網(wǎng)絡(luò)層的IP幫我們區(qū)分子網(wǎng),以太網(wǎng)的Mac幫我們找到主機(jī),然后大家都是使用的應(yīng)用程序,一臺(tái)電腦上可能同時(shí)開(kāi)啟了好幾個(gè)應(yīng)用程序
當(dāng)我們通過(guò)IP和Mac找到獨(dú)一無(wú)二的主機(jī)時(shí),但又如何找到對(duì)應(yīng)的應(yīng)用程序呢?這就需要通過(guò)端口來(lái)解決了。端口就是應(yīng)用程序與網(wǎng)卡關(guān)聯(lián)的編號(hào)
傳輸層的功能:建立端口到端口的通信
有了Mac地址+IP地址+端口,我們就能找到獨(dú)一無(wú)二的一臺(tái)計(jì)算機(jī)上的應(yīng)用程序
應(yīng)用層
應(yīng)用層的由來(lái):用戶使用的都是應(yīng)用程序,均作用于應(yīng)用層,互聯(lián)網(wǎng)是開(kāi)放的,大家可以開(kāi)發(fā)自己的應(yīng)用程序,數(shù)據(jù)多種多樣,所以我們必須規(guī)定好數(shù)據(jù)的組織形式
應(yīng)用層功能:規(guī)定應(yīng)用程序的數(shù)據(jù)形式
Socket抽象層
Socket抽象層
我們知道兩個(gè)進(jìn)程需要進(jìn)行通訊最基本的一個(gè)前提就是能夠標(biāo)示一個(gè)進(jìn)程,在本地進(jìn)程通信中,我們可以使用PID來(lái)唯一標(biāo)示一個(gè)進(jìn)程,但PID只在本地唯一,網(wǎng)絡(luò)中的兩個(gè)進(jìn)程PID沖突幾率很大,這時(shí)候我們需要另辟它徑了,我們知道IP層的IP地址可以唯一標(biāo)示主機(jī),而TCP層協(xié)議和端口號(hào)可以唯一標(biāo)示主機(jī)的一個(gè)進(jìn)程,這樣我們可以利用IP地址+協(xié)議+端口號(hào)唯一標(biāo)示網(wǎng)絡(luò)中的一個(gè)進(jìn)程。
能夠唯一標(biāo)示網(wǎng)絡(luò)中的進(jìn)程后,它們就可以利用Socket進(jìn)行通信了,什么是Socket呢?我們經(jīng)常把Socket翻譯為套接字,Socket是在應(yīng)用層和傳輸層之間的一個(gè)抽象層,它把TCP/IP層復(fù)雜的操作抽象為幾個(gè)簡(jiǎn)單的接口供應(yīng)用層調(diào)用已實(shí)現(xiàn)進(jìn)程在網(wǎng)絡(luò)中通信。
Socket起源于UNIX,在Unix一切皆文件哲學(xué)的思想下,Socket是一種"打開(kāi)—讀/寫—關(guān)閉"模式的實(shí)現(xiàn),服務(wù)器和客戶端各自維護(hù)一個(gè)"文件",在建立連接打開(kāi)后,可以向自己文件寫入內(nèi)容供對(duì)方讀取或者讀取對(duì)方內(nèi)容,通訊結(jié)束時(shí)關(guān)閉文件。
轉(zhuǎn)載于:https://www.cnblogs.com/Hades123/p/11093410.html
總結(jié)
以上是生活随笔為你收集整理的网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: shell脚本编程测试类型下
- 下一篇: 72.Minimum Window Su