# 網路 最簡單的網絡由一台電腦與一台電腦拉起一條數據線所構成(點對點拓扑)。 ``` ========= | PC1 | ========= | | ========= | PC2 | ========= ``` ## 家庭區域網絡構成 ``` ISP | ========= /-----| 數據機 | -->將數據轉換 | ========= | | | ========= 這幾台設備可以整合成一個 |-----| 路由器 | -->向ISP撥號獲取IP(並做NAT轉換構成區域網絡外連) | ========= | | | | | PC TV =========== \-------------| wifi路由 | -->發出wifi信號使手機等倚靠wifi連接的設備可以連接 =========== | | | 手機 手錶 筆電 ``` # IP Internet Protocol網絡地址協議,公網IP在網絡中擁有唯一辨識性,目前主流IP為ipv4但因IP不足的緣故ipv6正逐漸興起。 ## IPv4 32bit 約43億個網路地址 (分配完畢) 格式為 ``` 000.000.000.000 ``` 分為 A~E 五類IP其中 A~C 為區網IP僅用於內網 A 類 10.0.0.0 ~ 10.255.255.255 B 類 172.16.0.0 ~ 172.31.255.255 C 類 192.168.0.0 ~ 192.168.255.255 D 類 1110xxxx 224.0.0.0 ~ 239.255.255.255 E 類 1111xxxx 240.0.0.0 ~ 255.255.255.255 保留實驗用途 #小知識 家庭內網IP通常為C類網路地址 網路IP分配方式: 由DHCP Server透過DHCP分配IP地址 ## IPv6 128bits 約 3.4 × 10³⁸ 個 格式為 ``` ****:****:****:****:****:****:****:**** ``` ## 為什麼公網IP地址不會重複 網路地址一層一層分配下去的 如圖 ![未命名2](https://hackmd.io/_uploads/BJw6cVf0xg.png) IANA 是全球管理 IP 地址的最高機構,IANA將IP分配給RIR(區域管理機構),RIR再將IP分配給ISP(網路提供商),最終ISP再將IP分配給User(用戶),所以理論上公網IP是不會重複的。 # IPv4 IP取得方式 ### DHCP 自動分配網路地址的協定,由主機與DHCP服務器構成。 主機 --向DHCP服務器申請IP--> DHCP服務器 --將IP分發給主機並記錄IP--> 主機 通常DHCP服務器是整合在數據機裡的。 # IPv6 IP取得方式 IPv6位址 = 網路前綴 (路由器提供) + 識別碼 (Interface ID) ## RS/RA+SLAAC 前面說到IPv4利用DHCP分配IP,那IPv6呢,難道IPv6沒有DHCP?? 裝置會向路由發送請求(請求RS回復RA)取得IP前綴,接著裝置會把這個前綴+自己的MAC地址組合起來成一個IPv6地址。 ![未命名3](https://hackmd.io/_uploads/BkeErUGRxe.png) ## DHCPv6 原理基本上與IPv4的DHCP無異,集中控管 IP 分配、DNS、租約時間等會使用。 ## NAT技術 因應IPv4分配不足而衍生出了NAT44 NAT46 使用者於一個NAT網絡環境中與外網進行通訊時,正常訪問外網,由路由器分配已獲得外網IP的端口並修改發送IP的位置(非目標地址)紀錄外網IP端口與內網IP的映射關係與訪問的外網IP。(NAT列表)當服務器反傳封包時路由器則會依照NAT列表中的映射關係轉船封包,使使用者即使使用內網IP也能夠與外網達成通信體感無異 ``` ========================== |內網IP 10.0.0.4 | 8.8.8.8 |外網IP 8.8.8.8 | | --------|映射於 114.34.161.62:1913| | | ========================== | | =========== | | Router |----/--------->外網IP 114.34.161.62 =========== | | | PC PC PC---->這台電腦訪問外網8.8.8.8 | \-->內網ip 10.0.0.3 ``` 優點顯而易見,因為是使用Router的外網IP所以如果外網設備想要攻擊位在內網中的設備直接訪問Router的IP封包會因在NAT列表中無映射關係而丟棄在導向層面保證了內網設備的安全性。但缺點也顯而易見,內網設備無法透過搭建服務器讓外網設備直接訪問,換句話說如果你開了一個MC服務器你透過what is my ip獲取到IP並將這個ip給朋友加入,朋友在加入時Router會因為不知道該將封包傳入哪台設備而將封包丟棄。 # 客戶端與服務器 服務器負責提供服務,常見的有網頁服務遊戲服務等。而客戶端就是作用於與服務器通信的媒介,好比說瀏覽器就是一個客戶端,負責與網頁服務器進行交互,使用的是HTTP(超文本傳輸協定)協定進行通信,再做個比喻Minecraft客戶端與Minecraft服務器(這非常明顯了) # MAC 實體硬體地址。其與IP地址不同,是寫入電腦硬件的名稱,因MAC地址透過特殊手段進行修改,所以在理論上來說絕對不會有相同的MAC地址但實際上是會出現的只不過只要出現都不正常,MAC地址僅用於內網通信。 ## 為什麼已經有MAC地址了還是需要IP地址 MAC地只好比如這台電腦的名稱,而IP地址好比這台電腦的位置,當主機向路由發送ARP請求時就會需要用到MAC實體地址來記錄。 # DNS | Domain | Name | Server/System | | -------- | -------- | -------- | | 域 | 名稱 | 服務器/系統 | 以字串代替IP地址。以colashavedice.win為例。 | 域名 | IP地址指向 | | -------- | -------- | | colashavedice.win | 114.34.161.62 | 域名還有區分級別,分為頂級,一級,二級域,域名註冊皆是以頂級域名作為基礎去註冊也稱為一級域名註冊,好比 .com .tw .us .uk .net .org .gov都是頂級域名,以blog.colashavedice.win為例。 | 二級域 | 一級域 | 頂級域 | | -------- | -------- | -------- | | blog | colashavedice | win | 每一級域名除頂級域名外都可以容納一個DNS導向,比如 ``` dev.colashavedice.win --> 114.34.161.67 blog.colashavedice.win --> 114.34.161.62 colashavedice.win --> 114.34.161.22 cola2.win --> 114.34.161.33 ``` 域名有X與Y映射關係,一個域名(以一級域名為例)僅能只向一個IP,而一個IP卻能指向多個域名。 此外,DNS除了能映射IP地址(A,AAA)還能映射域名(CNAME)等其他類型的地址指向。 ## DNS汙染 透過惡意修改本地DNS導向或DNServer之DNS導向來達到將域名導致錯誤網站,常用於網絡釣魚攻擊,隱蔽性高難以被察覺。 ## DDNS服務 因為浮動IP而出現的技術,透過本地定期與節點訪問來獲取IP狀態,一旦變更便更換域名IP指向,讓域名時時導向服務器,增加服務器安全性。 ![未命名](https://hackmd.io/_uploads/HkGhdEf0ll.png) # FRP 內網穿透 過程是這樣的。 ![未命名5](https://hackmd.io/_uploads/H1A_1PMRll.png) # VPN 虛擬私人網絡,具體實現可以透過在電腦上部屬虛擬網絡卡並設定VPN節點為router節點,抓取IP,達成後就可以預連接上VPN節點的設備透過VPN節點分發IP通信(星狀拓扑),VPN也可以透過開啟NAT服務並設定本地流量導向讓VPN擁有隱蔽IP的功能。 ``` PC PC PC \ | / \ | / ============== | VPN | -----> 路由器 ============== / | \ / | \ PC PC PC ``` # 二進制 看要換算的數字是二的幾次方(基數-1),基數 x # LAMP L : Linux A : Apache 網頁伺服器 M : MySQL MariaDB 資料庫 P : PHP 簡易LAMP網頁架設 `sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql` https://www.chirue.com/ubuntu-wordpress-web/ # CDN 分散式節點,透過緩存網頁靜態資源使使用者在瀏覽時自動向最近的CDN服務器獲取網頁資源來達到減少載入時間,增加下載速度,減少響應時間等。也可以用於掩蓋服務器真實地址阻擋流量攻擊,使用方式層出不窮 # DoS (Denial of Service) 拒絕服務攻擊 透過各種方式造成服務器服務失效,服務器主機崩潰等。泛指流量攻擊。