全名 Open System Interconnection Reference Model
OSI 模型是幹嘛用的?
難道你上網的時候都不會有疑問
- 為什麼我們可以打開瀏覽器輸入 google.com 就可以連到 google 的網頁?
- 電腦和電腦之間是怎麼溝通的?
- acer 的電腦和 asus 的電腦為什麼可以通?
- linux 和 windows 怎麼溝通?
- 我家網路是中華電信和我朋友家是遠傳,阿怎麼可以通?
所以那麼多的作業系統、硬體設備要進行網路溝通 就得要制訂共同遵守的標準才行
簡介
- 這個標準是由國際組織規範的,你的系統裡面只要提供可以加入該標準的程式碼, 那你就能夠透過這個標準與其他系統進行溝通
- OSI 定義了網路互聯的 7 層框架
- 實體層
- 資料連結層
- 網路層
- 傳輸層
- 會議層
- 表達層
- 應用層
應用層 Application Layer
- 定義應用程式是如何進入 OSI 模式
- 例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3 等
表達層 Presentation Layer
- 能為不同的用戶端提供資料語法的轉換,使系統能解讀正確的資料,同時亦提供加密/解密、壓縮/解壓縮的功能
- 格式轉換
- 如傳送端用 Unicode 碼,接收端用 EBCDIC 碼,傳送端就必須在表達層中將資料轉換成接收端可識別的格式
- 加密解密
- 為避免資料在傳送過程中被窺探,可在傳送端作加密的動作,待送達接收端時,再作解密的動作
- 壓縮解壓縮
- 壓縮可使資料在傳輸過程中更具有效率,所以同樣的,可在傳送端作壓縮的動作,送達接收端後,再作解壓縮的動作
- 格式轉換
會議層 Session Layer
- 定義了如何連接和掛斷連接﹐和在網路上面的數據如何交換
- 允許程式以電腦名稱註冊成為網路上唯一的位址
- 在電腦之間建立﹑監測﹑和結束虛擬電路 (Virtual Circuit)
- 負責電腦之間的信息同步﹐監測資料溝通狀態﹐並對錯誤信息做出處理
- 負責建立、管理、終止兩個通訊主機間的連線對話(會議)
- 對話控制
- 判斷兩個通訊主機當下所扮演的角色
- 當下誰是 Server、誰是 Client
- 判斷使用
全雙工
還是半雙工
- 全雙工 (雙向同時對話)
- 會議層幾乎不干涉對話,讓兩台電腦的其他層來管理
- 半雙工 (雙向交互通訊)
- 需使用會議層資料記號,讓主機輪流傳送訊息
- 全雙工 (雙向同時對話)
- 判斷兩個通訊主機當下所扮演的角色
傳輸層 Transport Layer
- 傳送資料單位稱為段
Segment
- 提供 port 到 port 可靠的、透明的數據傳輸服務
- 傳輸層會將
Data
orMessage
切割成Segment
並加上編號,以利接收端重組區段Segment
- 流量控制:網路壅塞時,會停止資料傳送
- 偵錯處理:當接收端收到 Segment 時,會檢查區段編號,若有遺失,就會發出錯誤訊息告知,或要求重送
- 例如:TCP、UDP
TCP
可靠,在進行通訊時,彼此會互傳確認訊息,同時進行資料處理,確保資料完整無遺漏,像是網頁、信箱、檔案共享UDP
即時,像是網路電話,速度優於一切
網路層 Network Layer
- 傳送資料單位稱為封包
Packet
- 定義了和相同或不同網路設備連線時,如何將封包送達目的地的路由
- 邏輯定址
- 將
Segment
加上傳輸雙方的 IP 位址
,以產生Packet
- 將
- 路徑選擇
- 考慮網路的壅塞程度、發送的優先權等,以規劃
Packet
最佳傳輸路徑
- 考慮網路的壅塞程度、發送的優先權等,以規劃
- 邏輯定址
- 例如:IP、路由器
IP 地址
是作業系統所設定的邏輯位置
MAC 地址
是燒錄在電腦網卡中的實體位置
資料連結層 Data Link Layer
- 傳送資料單位稱為幀
Frame
- 這層的主要作用是通過校驗、確認和反饋重發等手段,將不可靠的物理鏈路轉換成對網絡層來說無差錯的數據鏈路
- 分為兩個子層進行資料的轉換動作
- 邏輯鏈路控制(logical link control,LLC)
- 偏軟體
- 主要是將上層的
Packet
轉成Frame
- 訊息交換
- 將
Packet
加上傳輸雙方的實體位址 (MAC 位址)
,以產生frame
- 將
- 偵錯處理
- 為資料加上錯誤檢查碼,例如:漢明碼、CRC 碼,讓接收端檢查是否正確。若錯誤就會選擇丟棄或重送
- 訊息交換
- 媒介存取控制(Medium access control,MAC)
- 偏硬體
- 主要是將
Frame
轉成可被實體所接受的bit
- 邏輯鏈路控制(logical link control,LLC)
-
例如:乙太網路、記號環網路、橋接器
- 每一張網卡都有一個獨一無二的卡號
MAC Address
- 硬體位址最小由
00:00:00:00:00:00
到FF:FF:FF:FF:FF:FF
(16 進位法) - 這 6 bytes 當中,前 3 bytes 為網卡廠商的代碼,後 3 bytes 則是該廠商自行設定的裝置碼了
- 硬體位址最小由
實體層 Physical Layer
- 傳送資料單位稱為
bit
,只有 0 和 1 - 定義了網路線的材質、連接器的類型及 Pin 腳排列方式等所有的實體網路器材
- 例如:針腳、電壓、線纜規範、集線器、中繼器、網卡、主機介面卡等
各個封包的相關性
結論
OSI 七層協定只是一個參考的模型 (model),目前的網路社會並沒有什麼很知名的作業系統在使用 OSI 七層協定的聯網程式碼。那…講這麼多幹嘛?這是因為 OSI 所定義出來的七層協定在解釋網路傳輸的情況來說,可以解釋的非常棒,因此大家都拿 OSI 七層協定來做為網路的教學與概念的理解。至於實際的程式碼,那就交給 TCP/IP 這個東東
那 TCP/IP 是如何運作的呢?舉例常常連上的 Yahoo 入口網站來做個說明好了,整個連線的狀態可以這樣看:
- 應用程式階段
- 打開瀏覽器,在瀏覽器上面輸入網址,按下
Enter
。此時網址與相關資料會被瀏覽器包成一個資料,並向下傳給TCP/IP
的應用層
- 打開瀏覽器,在瀏覽器上面輸入網址,按下
- 應用層
- 由應用層提供的
HTTP
通訊協定,將來自瀏覽器的資料包起來,並給予一個應用層表頭,再向傳送層丟去
- 由應用層提供的
- 傳送層
- 由於
HTTP
為可靠連線,因此將該資料丟入TCP
封包內,並給予一個TCP
封包的表頭,向網路層丟去
- 由於
- 網路層
- 將
TCP
包裹包進IP
封包內,再給予一個IP
表頭 (主要就是來源與目標的IP
),向鏈結層丟去
- 將
- 鏈結層
- 如果使用乙太網路時,此時
IP
會依據CSMA/CD
的標準,包裹到MAC
訊框中,並給予MAC
表頭,再轉成位元串後, 利用傳輸媒體傳送到遠端主機上。
- 如果使用乙太網路時,此時