# 網路
最簡單的網絡由一台電腦與一台電腦拉起一條數據線所構成(點對點拓扑)。
```
=========
| 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地址不會重複
網路地址一層一層分配下去的
如圖

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地址。

## 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指向,讓域名時時導向服務器,增加服務器安全性。

# FRP 內網穿透
過程是這樣的。

# 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) 拒絕服務攻擊
透過各種方式造成服務器服務失效,服務器主機崩潰等。泛指流量攻擊。