# OSI model: 7 layers ![image](https://hackmd.io/_uploads/rkG0rdD5p.png) 引用: https://tournasdimitrios1.wordpress.com/2011/01/19/the-basics-of-network-packets/ ### TCP/IP各階層資料名稱 應用程式的資料會在每個階層進行特殊處理並加上表頭(或表尾),可能是出於避免混淆或是其他原因,每個階層的資料名稱都是不一樣的。 * 應用層:訊息(Message) * 傳輸層:區段(Segment)或資料包(Datagram) 使用TCP 協議時稱為區段 使用UDP 協議時稱為資料包 * 網路層:封包(Packet) * 網路存取層:訊框(Frame) 引用:https://ithelp.ithome.com.tw/m/articles/10321958 ## Application layer [應用層協定例子](https://zh.wikipedia.org/zh-tw/%E5%BA%94%E7%94%A8%E5%B1%82) 應用層主要功能是處理應用程式,進而提供使用者網路應用服務。這一層的協定也很多。使用者常見的通訊協定,有DHCP(Dynamic Host Configuration Protocol)、FTP(File Transfer Protocol)、HTTP(HyperText Transfer Protocol)及POP3(Post Office Protocol-Version 3)等,依據不同的網路服務方式,這些協定能定義各自的功能及使用規範等細部規則。 應用層是最接近web app的,此層的協定包含常見 - Http - 提供向瀏覽器發出request & transfer - SMTP - 提供transferemail訊息 - FTP - 提供檔案的傳輸協定 - DNS - 提供轉換網址到network address 屬於第七層的應用軟體,像是網路瀏覽器(IE、Firefox)、電子郵件、線上遊戲、即時通訊(MSN Messenger、ICQ)等。上述軟體均透過單一或多種通訊協定,提供各類網路應用服務,像是網路瀏覽器藉由HTTP的溝通,即可呈現圖文並茂的網頁。 ## Presentation layer ## Session layer ## Transport layer #### **確保端到端的通信,提供可靠的數據傳輸。** * 協定: 1. TCP: 提供一連串偵錯、重送、資料順序、流量控管等實作,提供連線的可靠性。 2. UDP: 專注於資料的傳遞,幾乎不管資料是否正確送達,需要應用層自行處理。 * 基本功能: 分割與重組數據 -> 按連線埠號定址 -> 連線管理 -> 差錯控制和流量控制,糾錯的功能 -> * 服務類型: 傳輸層提供的服務可分為傳輸連線服務和數據傳輸服務 1. 傳輸連線服務:通常,對會話層要求的每個傳輸連線,傳輸層都要在網路層上建立相應的連線。 2. 數據傳輸服務:強調提供面向連線的可靠服務,並提供流量控制、差錯控制和序列控制,以實現兩個終端系統間傳輸的報文無差錯、無丟失、無重複、無亂序。 ## Network layer **網路層(Network Layer)** 是OSI模型中的第三層,提供**路由**和**尋址**的功能,使兩終端系統能夠互連且決定最佳路徑,並具有一定的擁塞控制和流量控制的能力。相當於傳送郵件時需要位址一般重要。由於TCP/IP協定體系中的網路層功能由IP協定規定和實現,故又稱IP層。 #### 定址 對網路層而言使用IP位址來唯一標識網際網路上的各個定址,網路層依靠IP位址進行相互通訊(類似於MAC位址),詳細的編址方案參見IPv4和IPv6。 #### 路由(routing) 在同一個網路中的內部通訊並不需要網路層裝置,僅僅靠資料連結層就可以完成相互通訊,對於不同的網路之間相互通訊則必須藉助路由器等三層裝置。 #### 具有網路層功能的裝置 * 路由器(Router) 路由器是將運算裝置(例如電腦)及網路連線至其他網路的聯網裝置。路由器有三個主要功能,分別是: 1.確定路徑:路由器可以決定從來源到目的地所採用的路徑,這個作業稱為路由。 2.資料轉傳:路由器會將資料轉傳至所選路徑的下一個裝置,重複這個過程,最終資料可以抵達目的地。運算裝置和路由器可能位於相同的網路或不同的網路。 3.負載平衡:路由器有時會用多個不同路徑,傳送相同資料封包副本。其目的是為了減少因資料遺失而造成錯誤、並建立備援及管理流量。 比較技術性的解釋是路由器是種電信網路裝置,提供路由與轉送兩種重要機制,可以決定封包由來源端到目的端所經過的路徑(host到host之間的傳輸路徑),這個過程稱為路由;將路由器輸入端的封包移送至適當的路由器輸出端(在路由器內部進行),這稱為轉送。路由工作在OSI模型的第三層——即網路層,例如網際網路協定(IP)。 IP路由器之中最常見的類型是家用和小型辦公路由器,它只在家庭電腦和網際網路之間轉發IP封包,例如,使用者的cable路由器或DSL路由器,這些路由器通過網際網路服務提供商(ISP)連接到網際網路。而像是企業級路由器等更複雜的路由器,則會將大型企業或ISP的網路與強大的核心路由器連接起來,沿著網際網路主幹網的光纖線路高速轉發數據。 #### 網路層協定 * IP (V4、V6) > ![image](https://hackmd.io/_uploads/BJGrXKw9p.png) > > Private IP 網段: > - 10.0.0.0/8 > - 172.16.0.0/12 > - 192.168.0.0/16 > > ![image](https://hackmd.io/_uploads/HkcB7KPqT.png) > > 引用 https://community.fs.com/hk/article/ipv4-vs-ipv6-whats-the-difference.html * IPX * X.25 * RARP * ICMP(V4、V6) * IGMP * IPsec * RIP * OSPF #### 封包 封包(英語:Data packet),又稱數據包,是在封包交換網路中傳輸的格式化數據單位。 一個封包(packet)分成兩個部份,包括控制資訊,也就是表頭資料(header),和資料本身,也就是負載(payload)。 我們可以將一個封包比作為一封信,表頭資料相當於信封,而封包的資料部分則相當於信的內容。和信不同的是,有時候一個大封包可以分成多個小封包。 #### 子網路遮罩 IP 位址可以分為二個部份,一個是由 IANA 或 TWNIC 或 ISP 所分派的固定部份,稱之為 Network ID,以及可以自行運用的部份,稱之為 Host ID。例如,以 140.115.x.x 為例,140.115 就是 Network ID。然而,為了讓電腦可以判斷出 IP 位址的 Network ID 及 Host ID,必須靠子網路遮罩 (Subnet Mask) 的幫忙。 因為每個網路都可以再切割為更小的子網路,例如,中央大學的網路是 140.115.x.x,而中央企管可以使用 140.115.75.x 這個子網路。以整個中央大學而言,它的 Network ID 是 140.115,而中央企管的 Network ID 是 140.115.75。因為中大的前二個位元組是 Network ID,所以子網路遮罩的前二個位元組要設成 255,而最後二個位元組為 Host ID,則子網路遮罩設為 0。因此,IP 位址為 140.115.x.x 的子網路遮罩為 255.255.0.0,而 140.115.75.x 的子網路遮罩為 255.255.255.0。 簡而言之,子網路遮罩就是將所有和 Network ID 同一個欄位的位元都設成 1,所有和 Host ID 同欄位的位元都設成 0。 | 二進位的子網路遮罩 | 子網路遮罩 | | - | :- | | 11111111 00000000 00000000 00000000 | 255.0.0.0 | | 11111111 11111111 00000000 00000000 | 255.255.0.0 | | 11111111 11111111 11111111 00000000 |255.255.255.0 | 當我們在表示一個子網路時,我們可以使用 140.115.0.0/255.255.0.0 來表示。然而,我們也常看到另一種表示方式:140.115.0.0/16。16 的意思是子網路遮罩中,高位元的部份有 16 個 1。以上表中各個子網路遮罩為例,我們可以表示為: | 二進位的子網路遮罩 | 子網路遮罩 | | - | :-: | | 11111111 00000000 00000000 00000000 | /8 | | 11111111 11111111 00000000 00000000 | /16 | | 11111111 11111111 11111111 00000000 | /24 | 那麼電腦又是如何從一個 IP 及子網路遮罩判斷出 Network ID 的呢?電腦會將 IP 和 Netmask 做 AND 運算,運算結果就是 Network ID,如下表中所示: | IP (140.115.75.5) | 10001100 01110011 01001011 00000101 | |-|-| | Netmask (255.255.255.0) | 11111111 11111111 00000000 00000000 | | Network ID (140.115.0.0) | 10001100 01110011 00000000 00000000 | ## Data link layer ![image](https://hackmd.io/_uploads/ByOCOdDq6.png) MAC ( Media Access Control) 媒體存取控制層: 為資料鏈結層與實體層互相介接的部分,主要提供傳輸媒介存取方式的控制, 使得LLC層的存取方式不受傳輸媒介影響, 因此上層(網路層 )的通訊協定和實體層的傳輸媒介是互相獨立的。 L L C (Logical Link Control) 邏輯連接控制層: 網路層和資料鏈結層的整合介面,將網路層送來的封包依照不同的MAC層轉換成相對應的資料框型態後再送至實體層。若實體層收到MAC層送來的資料封包, 亦會根據封包訊息判斷所屬之通訊協定,再傳送至網路層進行處理。 ## Physical layer (物理層) * 功能:在物理媒介上傳輸原始位元,處理電壓、電流、光信號等。 1. 乙太網線(Ethernet Cable): 傳輸的是電流信號。 使用銅線(通常是銅導體)作為物理傳輸介質。 主要應用在局域網(LAN)中,如家庭、辦公室等。 2. 光纖(Fiber Optic): 傳輸的是光信號。 使用光纖(通常是玻璃或塑料纖維)作為物理傳輸介質。 光纖的主要特點是高帶寬、低損耗、抗電磁干擾,適用於長距離通信。 應用於長距離通信網絡、數據中心互連、高速寬帶接入等。 3. 無線電波(Wireless Radio Waves): 傳輸的是無線電波信號。 使用空氣中的電磁波作為傳輸介質,不需要物理電纜連接。 主要應用在無線通信,包括無線局域網(WLAN)、行動通信(如4G、5G)、藍牙、Wi-Fi等。 ## 額外探討 ### netstat指令說明 @StanShih ```bash! $ netstat -an 使用中連線 協定 本機位址 外部位址 狀態 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 127.0.0.1:31072 127.0.0.1:37411 ESTABLISHED TCP 172.20.10.4:39231 20.189.173.6:443 TIME_WAIT TCP 172.20.10.4:39236 192.168.2.152:445 SYN_SENT TCP [::]:445 [::]:0 LISTENING UDP 0.0.0.0:64551 *:* UDP 172.19.96.1:138 *:* ``` | TCP狀態 | 說明 | | :---------: | -------- | | LISTENING | 該連接埠處於正在傾聽的狀態,提供服務 | | ESTABLISHED | 已建立好連線,正在彼此傳送資料 | | CLOSE_WAIT | 對方主動關閉連線或網路異常發生中斷,此時須執行close | | TIME_WAIT | 執行close斷開連線後,則會進入此狀態 | | SYN_SENT | 正在請求連線 | #### TCP狀態機 ![image](https://hackmd.io/_uploads/H1F9KdvqT.png) 引用https://www.cs.uni.edu/~diesburg/courses/cs3470_fa19/projects/p4-tcp.html ## TCP/IP VS OSI Model ![image](https://hackmd.io/_uploads/BJ8_9OP56.png) ## Transmit vs Receive ![image](https://hackmd.io/_uploads/SJkd0dwca.png) 引用https://insights.profitap.com/osi-7-layers-explained-the-easy-way ## three-way-handshake 三向交握 確保連線可以正常建立 ![image](https://hackmd.io/_uploads/SJ9qrtP56.png) ## Whois 查詢公眾IP https://www.whois365.com/tw/