# TCP/IP 學習筆記 電三甲 111010141 胡佳慧 ## 手動設定網路所需的資訊 1. IP 2. Network Mask 網路遮罩 + 判斷來源端與目的端是否為同網路 + 同網路直接傳送 + 不同網路需透過路由器(Router)傳送 3. Default Router IP >設定好上列三項 $\to$ ping8.8.8.8 成功 4. DNS Server IP ## 0.0.0.0 1. 電腦剛開機完全沒有任何IP時,代表尚未取得IP 2. 任意IP 3. 0.0.0.0/0 + Any source $\to$ 防火牆 ## 封包傳送 + directly直接傳送 $\to$ 目的地位址寫的是目的端網路卡卡號 + forward轉送 $\to$ 目的地位址寫的是路由器網路卡卡號 ## ARP位址解析協定(Address Resolution Protocol) + request : broadcase $\to$ 發廣播封包(廣播IP 255.255.255.255)到整個網路上 + reply : unicase $\to$ 被指定的IP回應 ## NAT(Network Address Translation)網路位址轉譯 ### SNAT(Source NAT) + 最簡單的轉換方式 + 缺點 : 只適用於小規模 + NAPT(Network Address Port Translation) + 不只轉換Address,也轉換Port(連接埠號) + 目前正在使用的方法,口語化縮寫NAT + 此技術歸類在SNAT ### DNAT(Destination NAT)=port forwarding + 只轉換Address,不轉換Port(連接埠號) ## 網際網路上正常使用時會用到的三種位址 1. Mac Address 實體位址(網路卡卡號) 2. IP Address (又稱邏輯位址、通訊位址) 3. 埠號 ## Loop Back Test(電腦不能運作時使用) 1. ping 127.0.0.1 $\to$ 確認作業系統的TCP/IP協定是否正常運作 2. ipconfig $\to$ 查詢自己的IP、內定路由器位址 + route print $\to$ 顯示機器上所有介面的卡號,也可查詢內定路由器位址 3. ping自己的IP位址 $\to$ 測試自己的網路卡 4. ping內定路由器的位址 $\to$ 確認網路卡、網路線是否正常 5. ping網際網路上知名的伺服器IP $\to$ 確認封包傳送是否正常 + ex. 8.8.8.8 6. ping DNS $\to$ 確認DNS設定 + ex. tw.yahoo.com ## 不同作業系統ping自己的IP比較 | |Windows|Linux| |:--:|:-----:|:---:| |byte|32|64| |ttl|255|128| ## RTT(Round Trip Time) + RTT = 送去目的端的時間 + 處理時間 + 送回傳送端的時間 + 數字越大代表傳送端與目的端距離越遠 + 平均每一秒量測一次 + 穩定的網路各數值間變化量不大 ## DHCP通訊協定(自動) + 採用客戶端伺服器端的模型(一般電腦為DHCP客戶端) + DHCP Server 提供IP,Network Mask,Default Router IP,DNS Server IP等必要資訊進行設定 + DORA 1. Discover $\to$ 發現DHCP Server,發送一個廣播去詢問整個網路誰可以提供相關資訊 2. Offer $\to$ DHCP Server收到廣播後,會回傳資料 + 誰先提供就用誰的 3. Request $\to$ 為Broadcase(廣播)封包,告知所有人選擇用誰的資料 4. Ack確認訊息 $\to$ 被選擇者確認訊息 + 建構在UDP通訊協定上 > UDP協定 >1. 快速、不講求資料安全性和完整性(傳送失敗就重傳) >2. 早期的通訊協定,沒有安全機制,不會進行雙方認證 >___ + DHCP uses UDP port 67 on the server side and UDP port 68 on the client side. + 特殊功能 : 大規模電腦自動安裝 ## DNS(Domain Name System) + 為了解決IP記憶不容易 + DNS轉換 + 正向解析 : Domain Name轉換成IP + 反向解析 : IP轉換成Domain Name + 使用UDP通訊協定, use port 53 + 本地端電腦裡叫hosts的資料夾 + 紀錄IP和DNS的對照 + 早期使用 + 查詢結果放在local cache裡 + 由ICANN負責統籌 ### DNS環境 + 客戶端(Client) : 提出名稱解析請求,稱為Resolver 伺服端(Server) : 接受要求的一方 + DNS為全球性的分散式資料庫 + 每個Domain至少有一台名稱伺服器 + Zone : DNS伺服器的管理區域 ### 查詢DNS Server 1. 查詢hosts裡有無對照表 2. 查詢loccal cache裡有無對照表 3. 最後都查不到再到DNS Server查 ```c ipconfig/displaydns //查詢 ipconfig/flushdns //clear DNS cache ``` ## DDNS(動態DNS) + 每次上網得到的IP不一樣,但希望能有固定的對應名稱 + 應用於家庭或小公司 ## FQDN完整網域名稱(Fully Qualified Domain Name) + 最後面還有一個 • (代表root) + 一階層方式組成,階層間以小數點區隔 + 最多五個階層 + 每一級名稱至少2個字元,最多不超過63個字元 + 分為3個部分 1. 主機名稱Host Name 2. 網域名稱Domain Name 3. 根網域Root Domain + 以 • 表示,實際上是個空標記 + 頂級網域TLD(Top-Level Domain):根網域的下面一層 ## IPv4 ![未命名的圖片](https://hackmd.io/_uploads/HJlsop8u6.png) ++真正的封包是由連續的位元依序排列在一起的++ ### IHL + IPv4標頭長度(header length)通常為20Bytes,>20Bytes時會有Options ### TOS(Type of Service)服務類型 ![未命名的圖片](https://hackmd.io/_uploads/BkD2S1Ku6.png) + Precedence 優先權 + 有8種不同的優先權值 + 7(111) $\to$ 最高優先權;控制傳送 + D延遲(Delay) + 0 $\to$ 一般延遲 + 1 $\to$ 低延遲 + T傳送流通量(Throoughput) + 0 $\to$ 一般傳送量 + 1 $\to$ 高傳送量 + R可靠度(Reliability) + 0 $\to$ 低可靠度傳送 + 1 $\to$ 高可靠度傳送 + C路徑成本(Cost) + 0 $\to$ 一般成本路徑 + 1 $\to$ 最小成本路徑 + 0 + 最後一個位元,未做定義 ### TL封包總長度(Total Length) + TL =IP Header Length + IP Payload Length + 以byte為單位 + 範圍為0~65535(2^16−1) ### ID識別代碼 + 由發送端對每個IP資料封包進行唯一辨識代碼的設定,以便接收端執行封包辨認工作 + 傳輸過程中因為MTU的限制,須將封包切割成幾個分片(Fragments)再傳輸,各分片需記錄原封包的辨識代碼,以便接收端進行封包重組 >### MTU(Maximum Transmission Unit) >+ MTU = IP Header + IP Payload >+ ethernet的MTU為1500bytes > > IP標準的MTU為65535bytes >+ Path MTU > + IPv6的機制 > + 在傳送封包前,會先了解傳送端到目的端之間最小的MTU,並將最小的MTU設為Path MTU >### 切割&重組(Fragmentating&Assembly)需要的三個資料欄位 >1. Identifier >2. Flags >3. Fragment Offset >+ IPv4可在網路的過程當中將大的封包切割成小的封包 > > IPv6只能允許在來源端做切割,只能允許在接收端做重組 ### Flags 旗幟識別 + 3byte + Flags = 0 + DF + MF + Don't Fragment(DF) More Fragment(MF) ### TTL存活時間(Time to Live) + 避免網路發生問題時占用資源 + IPv4稱TTL,IPv6稱hop count + 不同作業系統TTL的初始值會不一樣 ### Protocol 網路協定 + 指定下一個欄位或標頭 1. TCP $\to$ 6 2. UDP $\to$ 17 or 0x11 3. ICMP $\to$ 1 ### HC標頭檢查碼(Header Checksum) + protect IP Header,若有錯誤發生會告知 + 僅對IP標頭的部分執行運算,不含資料部分 + 運算方法 : 1補數演算法(1's Compllement Algorithm) ### SA來源端IP位址(Source IP Address) + 來源端主機的IP位址 ### DA目的端IP位址(Destination IP Address) + 目的端主機的IP位址 >+ ether $\to$ dst在前,src在後 >+ IP $\to$ src在前,dst在後 ### OPT選擇項(options) + 用作測試與除錯 1. Source Route來源端路徑 + Loose Source Routing 寬鬆源路行徑 + 對封包行經的每一個路徑進行規範 + 相鄰路徑節點間不得有其他節點存在 + 路徑次序不得更改 + Strict Source Routing 嚴謹源路行徑\ + 允許相鄰路徑節點間有其他節點 + 要點式行進路徑,並非提供完備的路徑 + 未描述的路徑由各路徑節點自行決定 2. Route Record路徑紀錄 3. Time Stamp時間標記 4. Security Label安全標誌 ```C //how to know the immediate routers between source and destination: traceroute , tracert, pathping traceroute //linux tracert //windows ``` ```C pathping //了解從src到dst會經過哪些 router ``` ### PAD填充(Padding) + 配合選擇項使用 + 使IP標頭總長度為32bits的整倍數 + 填補資料通常以0作為處理 ### IPv4位址不夠 (address insufficient)解決方法 + NAT + IPv6 ## IPv4 與 IPv6 + IPv4 32bits + IPv5 存在於實驗室,並未實際應用 + IPv6 (IPNg ; IP Next Generation ) 128bits $\to$ 標頭40bytes ### IPv4換到IPv6的原因 1. 位址不夠 address insufficient 2. 安全性 security 3. 效能 performance ### 資料傳送方式 ||IPv4|IPv6| |:-:|:---:|:--:| |1|Uicast|Uicast| |2|Multicas|Multicas| |3|Boadcast|Anycast | ## IPv6 + 128位元,分成8個區塊,每個區塊16個位元,以16進位法表示,區塊間以「:」區隔 「::」 ### 傳輸型態 1. Unicast單點傳播(一對一) 2. Multicast多點群波(一對多) 3. Anycast任點傳播(一對全部) $\to$ IPv6以多點群播位址架構來取代廣播傳播(Broadcase) >### 通訊方式 >1. Unicast 一對一 $\to$ 彼此都要有自己的識別碼 >2. Multicast一對多 >3. Broadcase一對全部(廣播) ![螢幕擷取畫面 2024-01-06 204804](https://hackmd.io/_uploads/S1dXhaIua.png) ### Traffic Class訊務等級 + 如IPv4標頭的TOS、DS欄位 + 前6個位元稱為DSCP(Differentiated Service Codepoint) 後2個位元作為ECN壅塞明確通知之用 >### ECN(Explicit Congestion Notification) >+ 網路壅塞時,對來源端進行壅塞通知 >+ 搭配ack從目的端回傳資料給傳送端 ### Flow Label流量標籤 + IPv6新增的欄位 $\to$ 用以對某些特定封包進行標示,配合相關協定進行封包分類傳送 + 相同封包群資料流必須擁有相同的流量標籤、來源端IPv6位址與目的端IPv6位址 ### Payload Length 承載資料長度 + 與IPv4的TotalLength位能相同,表示封包長度 + 同樣佔16位元 + 同樣以位元組為單位 + 只計算IPv6標頭後資料的長度 ### Next Header 下一個標頭 + 如Pv4的PROT欄位 + 可以是IPv4 PROT所列的項目,也可以是IPv6新增延伸標頭(Extension Header)項目 ### Hop Limit最大節點數 + 取代IPv4的TTL欄位 + 最大節點數欄位以經過節點數為單位 + 數值為0,封包便會被丟棄 ------------------------------------------ >### 佇列管理機制(queue management) >+ 當緩存快慢了或滿了時,要怎麼丟棄封包 >1. Drop Tail $\to$ 當佇列滿了新進來的都丟掉 >2. Drop Front $\to$ 當佇列滿了,新的封包進來時,把第一個丟掉,新的加進去 >3. Random Drop > + 佇列滿了以後,隨機挑一個丟棄 > + 為passive mode >### QoS(Quality of Service) >1. Integrated Service(IS)整合性服務 > + 較嚴謹,為參數型服務,會保留所需資源 > + 優:能滿足每種應用的需求,缺:維護與建立成本高,可擴充性(scalability)差 >2. Differentiated Service(DS) > + 較寬鬆 >+ IPv6提供的QoS較IPv4多 ------------------------------------------- ## FTP (File Transfer Protocol) + 優:傳檔案時,若中途斷線,重新連接後可繼續傳送,不用重傳 + 主要用來傳送大型檔案 + 早期的通訊協定,無加密 ## 網際網路上所用到的位址 1. 實體位址pyhsical address(網路卡卡號) 2. Logical address 3. Port number + Host address(http,位於應用層) $\to$ 用於多網站架構下,指名連到哪個網站 ## DoS(Denial of Service)阻斷式攻擊 + 讓機器不能服務新客戶 1. 消耗性能 2. 消耗記憶體 3. 消耗儲存空間 4. 消耗網路資源 ## 資訊安全的目標CIA 1. 機密性Confidentiality 2. 完整性Integrity 3. 可用性Availability ## ZT零信任架構(Zero Trust) + AAA $\to$ Authentication 認證(to prove identity), Authorization 授權(to give permission) ,and Accounting 稽查(to log an audit trail) + MFA(Multi-factor authentication) $\to$ 透過簡訊等,增加額外的驗證