0712-網(wǎng)絡(luò)通信基礎(chǔ)
首先是四大層
應(yīng)用層 |
傳輸層 放端口 |
網(wǎng)際層 放IP |
鏈路層 放mac地址 |
? ? ? ? ? ? ?封包
正常程序都是經(jīng)過TCP,UDP等到達(dá)網(wǎng)際層,然后發(fā)送信息
注 TCP/IP協(xié)議簇就是在通信層的一大堆協(xié)議
但是有特殊的程序,可以通過原始套接字來直接跳到網(wǎng)際層
網(wǎng)絡(luò)通信、網(wǎng)絡(luò)掩碼
IP和子網(wǎng)掩碼這倆要換2進(jìn)制,然后按位與操作確定網(wǎng)絡(luò)號 幾乎是在一起的
IP:192.168.33.99
子網(wǎng)掩碼:255.255.255.0
192 --> 2(1100 0000) 255 --> 2(1111 1111)
168 --> 2(1010 1000) 255 --> 2(1111 1111)
33? -->? 2(0010 0001) 255 --> 2(1111 1111)
99? -->? 2(0110 0011) 0? ? ?--> 2(0000 0000)
按位與操作? 都為1,才為1 ; 只要有一個0,就為0
1100 0000 1010 1000 0010 0001 0000 0000
192 168 33 0
前三組是網(wǎng)絡(luò)號,最后組是主機(jī)號
三臺電腦間的通信:為什么不能直接把網(wǎng)線剪開仨接一起
因為他傳遞的是信號,不是電流
就像電報一樣,比如A給B發(fā)個數(shù)據(jù)100
換成2進(jìn)制是0110 0100?
舉個例子,可能在這根線里,每0.1秒是一個單位,1就有電,0就不給點
然后總數(shù)據(jù)就是0.8秒,那臺電腦通過把這些信號解析出來,就得到了0110 0100
所以三臺電腦間不能接線,那么怎么解決呢,誕生了一個東西 --> HUB 集線器
但是這個東西有個缺點,他收到數(shù)據(jù)后會以廣播(會發(fā)給所有人)的方式發(fā)出去
所以電腦一旦多了,網(wǎng)絡(luò)就很卡
后來有新的技術(shù)出現(xiàn)了 --> 交換機(jī)
這個東西能做到該廣播的時候廣播,該單播的時候單播
怎么實現(xiàn)單播的呢,就是通過mac地址
那么為什么你給別人發(fā)消息的時候從沒寫過mac地址呢
因為他是通過TCP/IP協(xié)議簇里有個arp協(xié)議
作用是找到你的IP地址對應(yīng)的Mac地址
首先通過arp廣播得到目標(biāo)IP對應(yīng)的mac地址
就是我先給你發(fā)個包
每個網(wǎng)卡默認(rèn)能接收一個mac地址,是通用mac地址FF:FF:FF:FF:FF:FF
那么鏈路層看到這個通用地址就會接收,傳到網(wǎng)際層
(可以cmd輸入指令arp -a來查看)
【擴(kuò)展:
一般的家用電腦如果關(guān)閉了防火墻而且沒有殺毒軟件之類的是可以通過廣播大量的通用mac地址的數(shù)據(jù)包來攻擊的
但是企業(yè)級的之類的防護(hù)措施好的服務(wù)器會有高級的防控機(jī)制,例如限制每個端口上的廣播包數(shù)量、啟用廣播風(fēng)暴抑制等
而且更有甚者,他們的終端干脆不會接收FF:FF:FF:FF:FF:FFmac地址的全網(wǎng)廣播信息】
好一點的交換機(jī)是會有操作日志的,能看到你是哪個IP和mac地址的,但是能改,但是不告訴你(
也可以定向,只要你知道對方的mac地址而且沒做任何防護(hù)措施,因為鏈路層只要Mac地址對的上就會接收
【arp攻擊(非常簡單的方法),就是A,B,C仨人,C給A發(fā)回送的Mac地址,
那么后續(xù)A就會認(rèn)為他本來要給B發(fā)的mac地址實際上是C的
同樣對B也進(jìn)行這樣的操作,那么A和B的通信信息都發(fā)到了C上
這時候C再把A的信息繼續(xù)給B,B的信息給A,就可以實現(xiàn)監(jiān)聽或篡改數(shù)據(jù)的效果】
但是現(xiàn)在一般不要想了,因為現(xiàn)在數(shù)據(jù)都會加密了,你獲取了解碼出來破解不了也沒用
這里開始,我們已經(jīng)直到了同一個子網(wǎng)內(nèi)機(jī)器怎么互相通信,但是,不是同一個子網(wǎng)呢
比如我和隔壁的哥們發(fā)信息,我倆不是同一個子網(wǎng),怎么辦呢
這個時候,默認(rèn)網(wǎng)關(guān)出現(xiàn)了,他可以把交換機(jī)里的IP和mac地址轉(zhuǎn)發(fā)給隔壁的網(wǎng)關(guān)
這個默認(rèn)網(wǎng)關(guān)其實就是路由器
這個玩意就相當(dāng)于有倆網(wǎng)卡,一個對接你,一個對接隔壁哥們
如果你發(fā)給隔壁哥們,檢測到你的目標(biāo)不在同一個子網(wǎng),那么他會默認(rèn)轉(zhuǎn)換為默認(rèn)網(wǎng)關(guān)的mac地址
就會發(fā)給你的路由器,然后路由器再發(fā)給隔壁路由器,隔壁路由器再把mac地址換成目標(biāo)IP的mac地址,然后再發(fā)過去被接收
這個是兩個子網(wǎng)內(nèi)通信,但是問題來了,更多子網(wǎng)間該怎么通信呢
其實和這個差不多,比如QQ
實際上你給你的好友發(fā)個信息,這個信息流先是被你的默認(rèn)網(wǎng)關(guān)接收到,然后QQ的服務(wù)器會介入
你的信息被QQ服務(wù)器收到了之后會進(jìn)行處理,然后QQ就會充當(dāng)一個燈塔的角色
指引你的信息流跳轉(zhuǎn)下一個路由器,然后就這么一直跳啊跳直到到達(dá)目標(biāo)的子網(wǎng)網(wǎng)關(guān)
后面的就是目標(biāo)的網(wǎng)關(guān)再把數(shù)據(jù)發(fā)給目標(biāo)計算機(jī),然后QQ客戶端進(jìn)行處理,最后你的好友就收到了
(順帶提一句,所以你認(rèn)為QQ的服務(wù)器真的不會審查你的數(shù)據(jù)嗎,實際上我記得互聯(lián)網(wǎng)通信這方面有個法律,
這種交流的信息會必須要求至少保留6個月還是12個月,像騰訊這樣的大廠一般可能3,5年,更長時間或者干脆就是永久
所以不是查不到,是不想查,因為數(shù)據(jù)流太多了,而且要管也很麻煩,要是哪天給你想整個罪名,一翻記錄翻出來條12年前你整的爛活拿出來定個罪也不是不可能)
然后就是國際間怎么通信了,實際上差不多,就是這些數(shù)據(jù)會經(jīng)過國家間的海底光纖啥的,
然后轉(zhuǎn)移到當(dāng)?shù)貒业腎SP網(wǎng)絡(luò),適配當(dāng)?shù)氐耐ㄐ艆f(xié)議啥的,最后轉(zhuǎn)接到目標(biāo)計算機(jī)上
以及路由器,你的計算機(jī)都是根據(jù)mac來接收信息的,所以路由器再轉(zhuǎn)換的時候IP不變,但是Mac會根據(jù)下一級的目標(biāo)變
所以在傳輸數(shù)據(jù)的時候,目的IP不變,但是mac地址會根據(jù)每兩級改變
域名解析:輸入網(wǎng)址的時候因為用戶很難記住那一串IP數(shù)字,所以誕生了域名
你輸入的網(wǎng)址,先到DNS域名解析服務(wù)器被解析,然后才傳回來告訴你服務(wù)器的IP在哪給你轉(zhuǎn)過去
以及因為這倆不是在一起的,所以可能你的數(shù)據(jù)流先到南方的DNS解析服務(wù)器,再到北方的WEB服務(wù)器
所以為了提高速度,百度啊什么的會有南北大區(qū)這些東西,就是南方我建一個,北方還有一個
# DNS域名解析服務(wù)器都是國家掌控的,如果黑客把域名服務(wù)器黑了,然后你做一個盜版的京東網(wǎng)站
# 那么這個時候,所有解析域名解析出來就都是你的盜版網(wǎng)站,用戶分不出來,就真的是末日了
# 所以這個東西是國家掌控,一旦出事就是大事,所以不允許個人或企業(yè)掌控