一、網(wǎng)絡(luò)模型分層
1练慕、OSI模型(開(kāi)放式系統(tǒng)互聯(lián)通信參考模型更胖,英語(yǔ):Open System Interconnection Reference Model,縮寫(xiě)為 OSI)姑原,
OSI定義了網(wǎng)絡(luò)互連的七層框架悬而,從高到低分別是:應(yīng)用層,表示層锭汛,會(huì)話層,傳輸層袭蝗,網(wǎng)絡(luò)層唤殴,數(shù)據(jù)鏈路層,物理層到腥。
物理層:為網(wǎng)絡(luò)數(shù)據(jù)傳輸提供物理?xiàng)l件,把通信介質(zhì)(雙絞線--電信號(hào)朵逝,光纖--光信號(hào),無(wú)線網(wǎng)卡--電磁波等..)轉(zhuǎn)化成數(shù)字信號(hào)
數(shù)據(jù)鏈路層:通過(guò)網(wǎng)卡MAC地址乡范,負(fù)責(zé)主機(jī)間數(shù)據(jù)的傳輸
網(wǎng)絡(luò)層: 通過(guò)IP尋址來(lái)建立兩個(gè)節(jié)點(diǎn)之間的連接
傳輸層:建立主機(jī)端到端的連接配名,該層向高層屏蔽了下層數(shù)據(jù)通信的細(xì)節(jié),使高層用戶看到的只是在兩個(gè)傳輸實(shí)體間的一條主機(jī)到主機(jī)的晋辆、可由用戶控制和設(shè)定的渠脉、可靠的數(shù)據(jù)通路。該層常見(jiàn)的協(xié)議有TCP,UDP,SCTP,DCCP等瓶佳。
會(huì)話層: 管理傳輸層的傳輸方式(TCP,UDP...)芋膘,建立會(huì)話(通過(guò)TCP建立會(huì)話時(shí)有3次握手)
表示層:負(fù)責(zé)數(shù)據(jù)的編碼解碼,加密解密,壓縮和解壓縮为朋。主要作用進(jìn)行格式兼容傳輸數(shù)據(jù)(確認(rèn)格式)
應(yīng)用層:該層負(fù)責(zé)為應(yīng)用軟件提供接口臂拓,使應(yīng)用程序能夠使用網(wǎng)絡(luò)服務(wù)。常見(jiàn)的應(yīng)用層協(xié)議:http(80)习寸、ftp(20/21)胶惰、smtp(25)、pop3(110)霞溪、telnet(23)孵滞、dns(53)等。
以下是模型圖示:
2威鹿、數(shù)據(jù)封裝剃斧,解封裝圖示:
在應(yīng)用層,數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制語(yǔ)言忽你。在傳輸層幼东,上層數(shù)據(jù)被分割成小的數(shù)據(jù)段,并為每個(gè)分段后的數(shù)據(jù)封裝 TCP 報(bào)文頭部科雳。 在 TCP 頭部有一個(gè)關(guān)鍵的字段信息——端口號(hào)根蟹,它用于標(biāo)識(shí)上層的協(xié)議或應(yīng)用程序,確保上層應(yīng)用數(shù)據(jù)的正常通信糟秘。在網(wǎng)絡(luò)層简逮,上層數(shù)據(jù)被封裝上新的報(bào)文頭部——IP 頭部。 在 IP 頭部中有一個(gè)關(guān)鍵的字段信息——IP 地址尿赚,它是由一組 32 位的二進(jìn)制數(shù)組成的散庶, 用于標(biāo)識(shí)網(wǎng)絡(luò)的邏輯地址。在數(shù)據(jù)鏈路層凌净,上層數(shù)據(jù)被封裝一個(gè) MAC 頭部悲龟,其內(nèi)部有一個(gè)關(guān)鍵的字段信息 ——MAC 地址,它由一組 48 位的二進(jìn)制數(shù)組成冰寻。在 MAC 頭部也同時(shí)封裝著目標(biāo) MAC 地址和源 MAC 地址须教。在物理層,將這些二進(jìn)制數(shù)字組成的比特流轉(zhuǎn)換成電信號(hào)在網(wǎng)絡(luò)中傳輸斩芭。
在物理層轻腺,首先將電信號(hào)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),并將數(shù)據(jù)送至數(shù)據(jù)鏈路層划乖。在數(shù)據(jù)鏈路層贬养, 將查看目標(biāo) MAC 地址,判斷其是否與自己的 MAC 地址吻合迁筛,并據(jù)此完成后續(xù)處理煤蚌。如果 數(shù)據(jù)報(bào)文的目標(biāo) MAC 地址就是自己的 MAC 地址耕挨,數(shù)據(jù)的 MAC 頭部將被“拆掉”,并將剩余 的數(shù)據(jù)送至上一層尉桩;如果目標(biāo) MAC 地址不是自己的 MAC 地址筒占,對(duì)于終端設(shè)備來(lái)說(shuō),它將 會(huì)丟棄數(shù)據(jù)蜘犁。在網(wǎng)絡(luò)層與在數(shù)據(jù)鏈路層類(lèi)似翰苫,目標(biāo) IP 地址將被核實(shí)是否與自己的 IP 地址相 同,從而確定是否送至上一層这橙;到了傳輸層奏窑,首先要根據(jù) TCP 頭部判斷數(shù)據(jù)段送往哪個(gè)應(yīng) 用層協(xié)議或應(yīng)用程序,然后將之前被分組的數(shù)據(jù)段重組屈扎,再送往應(yīng)用層埃唯;在應(yīng)用層,這些二 進(jìn)制數(shù)據(jù)將經(jīng)歷復(fù)雜的解碼過(guò)程鹰晨,以還原發(fā)送者所傳輸?shù)脑夹畔ⅰ?
二墨叛、交換機(jī)
1、交換機(jī)模蜡,是一個(gè)擴(kuò)大網(wǎng)絡(luò)的器材漠趁,能為子網(wǎng)絡(luò)提供更多的連接端口,以便連接更多的計(jì)算機(jī)(例如網(wǎng)吧)忍疾。它的功能是連接計(jì)算機(jī)闯传、服務(wù)器、網(wǎng)絡(luò)打印機(jī)卤妒、網(wǎng)絡(luò)攝像頭甥绿、IP電話等終端設(shè)備,并實(shí)現(xiàn)與其它交換機(jī)则披、無(wú)線接入點(diǎn)妹窖、路由器、網(wǎng)絡(luò)防火墻等網(wǎng)絡(luò)設(shè)備的互聯(lián)收叶,從而構(gòu)建局域網(wǎng)絡(luò),實(shí)現(xiàn)所有設(shè)備之間的通信共苛。交換機(jī)位于OSI參考模型中的第二層(數(shù)據(jù)鏈路層)判没,交換機(jī)的工作依賴于對(duì)MAC地址的識(shí)別(所有的網(wǎng)絡(luò)設(shè)備都有一個(gè)唯一的MAC地址,通常是由廠商直接錄進(jìn)網(wǎng)卡中)隅茎。
2澄峰、交換(擴(kuò)充網(wǎng)線插槽,讓更多的人辟犀,在同一個(gè)局域網(wǎng)共享上網(wǎng))
如下圖的交換機(jī)俏竞,一邊連接路由器,一邊連接個(gè)人PC(交換機(jī)提供很多接口,可以連接很多PC)魂毁。路由器(網(wǎng)關(guān)玻佩,網(wǎng)絡(luò)關(guān)口,連接不同網(wǎng)絡(luò))至少有2個(gè)口席楚,一個(gè)接公網(wǎng)IP咬崔,一個(gè)接內(nèi)網(wǎng)(該內(nèi)網(wǎng)ip下面連接交換機(jī)以至于拓展多個(gè)終端設(shè)備,使得大家可以在同一個(gè)局域網(wǎng)內(nèi)上網(wǎng))烦秩,內(nèi)外網(wǎng)轉(zhuǎn)換的技術(shù)是NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換垮斯,主要用于實(shí)現(xiàn)私有網(wǎng)絡(luò)訪問(wèn)公共網(wǎng)絡(luò)的功能,Network Address Translation)只祠,
例如兜蠕,運(yùn)營(yíng)商拉一條網(wǎng)線進(jìn)來(lái),通過(guò)交換機(jī)分給多個(gè)用戶家庭使用抛寝,用的都是同一個(gè)內(nèi)網(wǎng)IP熊杨,想要自己獨(dú)享一個(gè)公網(wǎng)ip就得向運(yùn)營(yíng)商申請(qǐng)。
例如自己家用路由器的默認(rèn)網(wǎng)關(guān)是10.198.1.1墩剖,和網(wǎng)上搜的本機(jī)IP不同猴凹,所以自己的網(wǎng)絡(luò)是一個(gè)內(nèi)網(wǎng)(其實(shí)家用路由器的默認(rèn)網(wǎng)關(guān)是10開(kāi)頭的就是內(nèi)網(wǎng)來(lái)的)
三、IP岭皂,Internet Protocol(網(wǎng)際互連協(xié)議)
1郊霎、IP地址(Internet Protocol Address)是指協(xié)議地址,又譯為網(wǎng)際協(xié)議地址爷绘。每個(gè)IP地址包括兩個(gè)標(biāo)識(shí)碼(ID)书劝,即網(wǎng)絡(luò)ID和主機(jī)ID。
IP地址是一個(gè)32位的二進(jìn)制數(shù)土至,通常被分割為4個(gè)“8位數(shù)”(也就是4個(gè)字節(jié))购对。IP地址通常用表示成(a.b.c.d)的形式,其中陶因,a,b,c,d都是0~255之間的十進(jìn)制整數(shù)(0.0.0.0 ~ 255.255.255.255)骡苞。例:點(diǎn)分十進(jìn)IP地址(100.4.5.6),實(shí)際上是32位二進(jìn)制數(shù)(01100100.00000100.00000101.00000110)楷扬。
2解幽、IPv4地址約43億個(gè),正常來(lái)說(shuō)是不夠所有終端使用的烘苹,所以有了IPv6和NAT(地址轉(zhuǎn)換)技術(shù)躲株,目前用的較多的是NAT。NAT是劃分出一部分地址作為私網(wǎng)地址镣衡,剩下的就是公網(wǎng)地址霜定。
私有IP地址范圍(私有地址屬于非注冊(cè)地址档悠,專(zhuān)門(mén)為組織機(jī)構(gòu)內(nèi)部使用。):
3望浩、無(wú)論是公網(wǎng)IP還是私網(wǎng)IP辖所,都分了以下幾大類(lèi):
注:
A類(lèi)IP地址 :
0-127,其中0代表任何地址曾雕,127為回環(huán)測(cè)試地址奴烙,因此,A類(lèi)ip地址的實(shí)際范圍是1-126.
B類(lèi)IP地址 :
一個(gè)B類(lèi)IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的主機(jī)地址組成剖张,網(wǎng)絡(luò)地址的最高位必須是“10”切诀,地址范圍從128.0.0.0到191.255.255.255∩ε可用的B類(lèi)網(wǎng)絡(luò)有16382個(gè)幅虑,每個(gè)網(wǎng)絡(luò)能容納6萬(wàn)多個(gè)主機(jī) 。
B:128-191顾犹,其中128.0.0.0和191.255.0.0為保留ip倒庵,實(shí)際范圍是128.1.0.0--191.254.0.0。
C類(lèi)IP地址 :
一個(gè)C類(lèi)IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成炫刷,網(wǎng)絡(luò)地址的最高位必須是“110”擎宝。范圍從192.0.0.0到223.255.255.255。C類(lèi)網(wǎng)絡(luò)可達(dá)209萬(wàn)余個(gè)浑玛,每個(gè)網(wǎng)絡(luò)能容納254個(gè)主機(jī)绍申。
C:192-223,其中192.0.0.0和223.255.255.0為保留ip顾彰,實(shí)際范圍是192.0.1.0--223.255.254.0
四极阅、子網(wǎng)掩碼
1、子網(wǎng)掩碼:用于識(shí)別IP地址中的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的位數(shù)涨享。將一個(gè)IP地址劃分成網(wǎng)絡(luò)地址和主機(jī)地址2個(gè)部分筋搏,它是不能單獨(dú)存在的,它必須和IP地址一起使用厕隧。子網(wǎng)掩碼中1的個(gè)數(shù)表示IP地址的有多少位表示網(wǎng)絡(luò)地址奔脐,0的個(gè)數(shù)表示IP地址有多少位表示主機(jī)地址。
A類(lèi)地址的默認(rèn)子網(wǎng)掩碼:255.0.0.0
B類(lèi)地址的默認(rèn)子網(wǎng)掩碼:255.255.0.0
C類(lèi)地址的默認(rèn)子網(wǎng)掩碼:255.255.255.0
例子1:假設(shè)有一個(gè)IP地址:192.168.0.1
子網(wǎng)掩碼為: 255.255.255.0
化為二進(jìn)制IP地址為: 11000000.10101000.00000000.00000001
子網(wǎng)掩碼: 11111111.11111111.11111111.00000000
將兩者做 ’ 與 ’ 運(yùn)算得: 11000000.10101000.00000000.00000000
將其化為十進(jìn)制得: 192.168.0.0
這便是上面 IP 的網(wǎng)絡(luò)地址(一個(gè) IP地址的網(wǎng)絡(luò)部分被稱(chēng)為網(wǎng)絡(luò)號(hào)或者網(wǎng)絡(luò)地址)吁讨,主機(jī)地址以此類(lèi)推帖族。
例子2:求子網(wǎng)地址(網(wǎng)絡(luò)地址)
個(gè)人理解:首先將IP地址和子網(wǎng)掩碼都轉(zhuǎn)換成二進(jìn)制,然后根據(jù)子網(wǎng)掩碼判斷出該IP地址的網(wǎng)絡(luò)位數(shù)和主機(jī)位數(shù)挡爵,最后將IP地址的主機(jī)位上的0或1全部轉(zhuǎn)成0(相當(dāng)于和子網(wǎng)掩碼進(jìn)行或運(yùn)算的結(jié)果),再轉(zhuǎn)成十進(jìn)制甚垦,這樣就是網(wǎng)絡(luò)地址茶鹃。
例子3:例如搞一個(gè)只有4臺(tái)主機(jī)的子網(wǎng)涣雕,確認(rèn)它的子網(wǎng)掩碼
2、作用:子網(wǎng)劃分
問(wèn)題一:
問(wèn)題二:
步驟1:
步驟2:
步驟3:
可用IP地址范圍在主機(jī)號(hào)全為0(網(wǎng)絡(luò)號(hào),或者網(wǎng)絡(luò)地址)和全為1(廣播地址)時(shí)不能用闭翩。
五挣郭、TCP/IP協(xié)議
1、TCP通信能實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)交互疗韵,通信的兩端兑障,要嚴(yán)格區(qū)分為客戶端(Client)與服務(wù)端(Server)
2、TCP三次握手
所謂三次握手即建立TCP連接蕉汪,就是指建立一個(gè)TCP連接時(shí)流译,需要客戶端和服務(wù)端總共發(fā)送3個(gè)包以確認(rèn)連接的建立。在socket編程中者疤,這一過(guò)程由客戶端執(zhí)行connect來(lái)觸發(fā)福澡,整個(gè)流程如下圖所示:
簡(jiǎn)單來(lái)說(shuō),就是
a驹马、建立連接時(shí)革砸,客戶端發(fā)送SYN包(SYN=i)到服務(wù)器,并進(jìn)入到SYN-SEND狀態(tài)糯累,等待服務(wù)器確認(rèn)
b算利、服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ack=i+1),同時(shí)自己也發(fā)送一個(gè)SYN包(SYN=k),即SYN+ACK包泳姐,此時(shí)服務(wù)器進(jìn)入SYN-RECV狀態(tài)
c效拭、客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)報(bào)ACK(ack=k+1),此包發(fā)送完畢仗岸,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)允耿,完成三次握手,客戶端與服務(wù)器開(kāi)始傳送數(shù)據(jù)扒怖。
在網(wǎng)上看到這樣的話较锡,三次握手可以這樣描述:
客戶端:hello,聽(tīng)得到嗎?
服務(wù)端:聽(tīng)得到盗痒,你聽(tīng)的到嗎蚂蕴?
客戶端:聽(tīng)得到,我們可以發(fā)送信息了
3俯邓、四次揮手
tcp是全雙工通信骡楼,服務(wù)端和客服端都能發(fā)送和接收數(shù)據(jù)。tcp在斷開(kāi)連接時(shí)稽鞭,需要服務(wù)端和客服端都確定對(duì)方將不再發(fā)送數(shù)據(jù)鸟整。
第1次揮手由客戶端向服務(wù)端發(fā)起,服務(wù)端收到信息后就能確定客戶端已經(jīng)停止發(fā)送數(shù)據(jù)朦蕴。
第2次揮手由服務(wù)端向客戶端發(fā)起篮条,客戶端收到消息后就能確定服務(wù)端已經(jīng)知道客戶端不會(huì)再發(fā)送數(shù)據(jù)弟头。
第3次握手由服務(wù)端向客戶端發(fā)起,客戶端收到消息后就能確定服務(wù)端已經(jīng)停止發(fā)送數(shù)據(jù)涉茧。
第4次揮手由客戶端向服務(wù)端發(fā)起赴恨,服務(wù)端收到信息后就能確定客戶端已經(jīng)知道服務(wù)端不會(huì)再發(fā)送數(shù)據(jù)。
4伴栓、TCP和UDP協(xié)議的區(qū)別
a:TCP提供面向連接的傳輸伦连,通信前要先建立連接(三次握手機(jī)制); UDP提供無(wú)連接的傳輸钳垮,通信前不需要建立連接惑淳。
b:TCP提供可靠的傳輸(有序,無(wú)差錯(cuò)扔枫,不丟失汛聚,不重復(fù)); UDP提供不可靠的傳輸短荐。
c:TCP面向字節(jié)流的傳輸倚舀,因此它能將信息分割成組,并在接收端將其重組忍宋; UDP是面向數(shù)據(jù)報(bào)的傳輸痕貌,沒(méi)有分組開(kāi)銷(xiāo)。
d:TCP提供擁塞控制和流量控制機(jī)制糠排; UDP不提供擁塞控制和流量控制機(jī)制舵稠。
e:TCP穩(wěn)定可靠(例如傳輸文件,瀏覽網(wǎng)頁(yè)等)入宦;UDP速度快但是可能產(chǎn)生丟包(例如語(yǔ)音通話哺徊,視頻直播,隧道網(wǎng)絡(luò)(VPN)等)
例如下圖:HTTP/1.1 和 HTTP/2 都是基于 TCP 傳輸協(xié)議的乾闰,而 HTTP/3 是基于 UDP 傳輸協(xié)議的落追。
六、HTTPS,SSL
HTTPS : 即HTTP Over TLS涯肩,運(yùn)行在TLS協(xié)議上的安全的HTTP協(xié)議轿钠。保證信息安全的唯一途徑:數(shù)據(jù)信息加密!!!
TLS是SSL的升級(jí)版,打開(kāi)F12病苗,可以看到簡(jiǎn)書(shū)使用的是TLS1.2疗垛,后面是加密算法:
從下面圖中可以看出,SSL就是負(fù)責(zé)加解密的硫朦,tcp通信前需要握手贷腕,ssl也是:
SLL握手(4次):
1、HTTPS和HTTP的區(qū)別
超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息。HTTP協(xié)議以明文方式發(fā)送內(nèi)容花履,不提供任何方式的數(shù)據(jù)加密芽世,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息诡壁,因此HTTP協(xié)議不適合傳輸一些敏感信息,比如信用卡號(hào)荠割、密碼等妹卿。
為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)蔑鹦。為了數(shù)據(jù)傳輸?shù)陌踩峥耍琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書(shū)來(lái)驗(yàn)證服務(wù)器的身份嚎朽,并為瀏覽器和服務(wù)器之間的通信加密铺纽。
HTTPS和HTTP的區(qū)別主要為以下四點(diǎn):
a: https協(xié)議需要到ca申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少哟忍,需要交費(fèi)狡门。
b: http是超文本傳輸協(xié)議信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議锅很。
c: http和https使用的是完全不同的連接方式其馏,用的端口也不一樣,前者是80爆安,后者是443叛复。
d: http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的扔仓;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸褐奥、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全翘簇。