TCP/IP 麋鹿
何謂通訊協定 簡單的說就是種標準和規則 如果要將節點A的東西傳到節點B,他們必須有相同的協 定才能傳輸。 節點:連接在網路上的每個電腦設備都稱之為節點,都有屬於自己的位址跟名字可以供判別。EX:個人電腦、工作站、伺服器。
TCP/IP的由來 TCP/IP是冷戰時期的產物,是應美國國防部的戰爭考量而開發的。為配合ARPANET (Advanced Research Projects Agency Network) .來處理不同硬體間的連線問題。其實TCP/IP所指的是一套龐大的通訊協定家族,其中以Transmission Control Protocol(TCP) 及 Internet Protocol (IP) 這兩套協定最具代表性 ,IP工作於網路層,提供一套標準讓有不同的網路有規則可循,前提是您想使用 IP 從一個網路將封包路由到另一個網路 。設計上可用來在LAN-LAN與PC-PC間進行傳輸。IP可視為遊戲規則,TCP用來詮釋這些規則。
IP IP 是 Internet Protocol 的縮寫 ,他的功能有點像門牌號碼,主要要在網路層( Layer 3 )的功能。 IP 是一種資料封包的格式,這個 IP 資料封包最大可以到達 65535 bytes 為了讓 IP 封包可以適用在所有的網路媒體訊框當中,因此, IP 封包是可以被『重組的』!
網域的概念與 IP 的分級 IP 的組成當中,除了以 32 bits 的組成方式來說明外,還具有所謂的『網域』的概念存在 事實上在 IP 的 32 bits 資料中,主要分為 HOST_ID 與 Net_ID 兩部份 同一個 Net_ID 內,不能具有相同的 Host_ID ,否則就會發生 IP 衝突,可能會造成兩部主機都沒有辦法使用網路的問題!
192.168.0.0~192.168.0.255 這個 C Class 的說明: 11000000.10101000.00000000.00000000 11000000.10101000.00000000.11111111 |------------Net_ID----------|-host--| 在 C Class 的範例當中,前面三組數字 (192.168.0) 稱為網域號碼 (Net_ID) ,最後面一組數字則稱為 主機號碼 (Host_ID)。同一個網域當中的定義是『在同一個網段內,主機的 IP 具有相同的 Net_ID ,並且具有獨特的 Host_ID』,那麼這些 IP 群就是同一個網域內的 IP 網段 。
在同一個網段內,Net_ID 是不變的,而 Host_ID 則是不可重複,此外, Host_ID 在二進位的表示法當中,不可同時為 0 也不可同時為 1 ,例如上面的例子當中, 192.168.0.0 ( Host_ID 全部為 0 )以及 192.168.0.255 ( Host_ID 全部為 1 ) 不可用來作為網段內主機的 IP 設定,也就是說,這個網段內可用來設定主機的 IP 是由 192.168.0.1 到 192.168.0.254; 在同一個網域之內,每一部主機都可以透過 MAC 訊框的格式傳遞資料, 並透過 ARP 協定與廣播封包 (broadcast) 取得 MAC 與 IP 的對應後,直接利用 MAC 訊框傳遞資料。 在同一個物理網段之內,如果兩部主機設定成不同的 IP 網段,則兩部主機無法直接以 MAC 訊框格式進行資料的傳遞,因為廣播封包無法查詢到 MAC 與 IP 的對應。 當 Host_ID 所佔用的位元越大,亦即 Host_ID 數量越多時,表示同一個網域內可用以設定主機的 IP 數量越多。
IP的分級 A Class : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> Net_ID 的開頭是 0 |--net--|---------host------------| A Class : 0.xx.xx.xx ~ 126.xx.xx.xx B Class : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> Net_ID 的開頭是 10 |------net-------|------host------| B Class : 128.xx.xx.xx ~ 191.xx.xx.xx C Class : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==> Net_ID 的開頭是 110 |-----------net-----------|-host--| C Class : 192.xx.xx.xx ~ 223.xx.xx.xx
消失的127.xx.xx.xx 因為這個網段被拿去給作業系統做為內部迴圈網路 ( loopback ) 之用了!在各個作業系統當中,不管該主機的硬體有沒有網路卡, 為了讓作業確認自己的網路沒有問題,所以將 127.xx.xx.xx 這個 A Class 的網段拿到作業系統當中,來做為內部的回路測試!所以啦,這個 127.0.0.1 就不可以用來做為其他網路卡的網路網域之設定喔。
Netmask 的用途 判斷目的地電腦IP位址是否與自己電腦在同在一網域內如果發現目的地電腦IP位址不在內部網域,則電腦會將該資料封包傳送至閘道器 (Gateway) ,再由路由器 (Router)將該資料封包傳至目的地電腦。
比較容易記憶的方法 : Netmask 是用來定義出網域的最重要的一個參數 以 192.168.0.0~192.168.0.255 這個網域為範例好了,如下所示,這個 IP 網段可以分為 Net_ID 與 Host_ID,既然 Net_ID 是不可變的,那就假設他所佔據的 bits 已經被用光了 ( 全部為 1 ),而 Host_ID 是可變的,就將他想成是保留著 ( 全部為 0 ),所以, Netmask 的表示就成為: 192.168.0.0~192.168.0.255 這個 C Class 的 Netmask 說明 11000000.10101000.00000000.00000000 11000000.10101000.00000000.11111111 |----------Net_ID---------|-host--| 11111111.11111111.11111111.00000000 <== Netmask 二進位 255 . 255 . 255 . 0 <== Netmask 十進位
Class A, B, C 三個等級的 Netmask 表示方式: A Class : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0 B Class : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0 C Class : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0 剛剛提到了當 Host_ID 全部為 0 以及全部為 1 的時後該 IP 是不可以使用的,因為 Host_ID 全部為 0 的時後,表示 IP 是該網段的 Network ,至於全部為 1 的時後就表示該網段最後一個 IP ,也稱為 Broadcast ,所以說,在 192.168.0.0 ~ 192.168.0.255 這個 IP 網段裡面的相關網路參數就有: Netmask: 255.255.255.0 <==網域定義中,最重要的參數 Network: 192.168.0.0 <==第一個 IP Broadcast: 192.168.0.255 <==最後一個 IP 可用以設定成為主機的 IP 數: 192.168.0.1 ~ 192.168.0.254
一般來說,如果我們知道了 Network 以及 Netmask 之後,就可以定義出該網域的所有 IP 了!因為由 Netmask 就可以推算出來 Broadcast 的 IP 啊!因此,我們常常會以 Network 以及 Netmask 來表示一個網域 EX: Network/Netmask 192.168.0.0/255.255.255.0 192.168.0.0/24 <==因為 Net_ID 共有 24 個 bits
簡單的問題 請試著計算出 172.16.0.0/23 這個網域的 Netmask, Network, Broadcast 等參數
子網路的切分 在共享媒體上面, 每當任何一部主機想要使用該網路媒體時,就得要利用 CSMA/CD 的方式去進行網路監聽的工作,此時對於這麼大的一個網路架構來說,每部主機要發出 MAC 訊框前要進行的這個 CSMA/CD 實在會造成系統上面很嚴重的停頓問題! 記得一個網域內不要超過 30 部以上的主機數量,那樣網路的效能就會比較好一點
更加細分的方法 C Class 的 Net_ID 佔了 24 bits ,而其實我們還可以將這樣的網域切的更細,就是讓第一個 Host_ID 被拿來作為 Net_ID ,所以,整個 Net_ID 就有 25 bits ,至於 Host_ID 則減少為 7 bits 。在這樣的情況下,原來的一個 C Class 的網域就可以被切分為兩個子網域,而每個子網域就有『 256/2 - 2 = 126 』個可用的 IP 了!這樣一來,在這個網域當中的主機在進行邏輯廣播時,回應的主機數量就少了一半, 當然對於網路的效能多多少少有點好處的啦。
原本的 C Class 的 Net_ID 與 Host_ID 的分別 11000000. 10101000. 00000000 原本的 C Class 的 Net_ID 與 Host_ID 的分別 11000000.10101000.00000000.00000000 Network: 192.168.0.0 11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255 |----------Net_ID---------|-host--| 切成兩個子網路之後的 Net_ID 與 Host_ID 為何? 11000000.10101000.00000000.0 0000000 多了一個 Net_ID 了, 為0 11000000.10101000.00000000.1 0000000 多了一個 Net_ID 了, 為1 |----------Net_ID-----------|-host--| 第一個子網路 Network: 11000000.10101000.00000000.0 0000000 192.168.0.0 Broadcast: 11000000.10101000.00000000.0 1111111 192.168.0.127 |----------Net_ID-----------|-host-| Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128 所有 IP 與網域表示式: 192.168.0.0/25 或 192.168.0.0/255.255.255.128 第二個子網路 Network: 11000000.10101000.00000000.1 0000000 192.168.0.128 Broadcast: 11000000.10101000.00000000.1 1111111 192.168.0.255 所有 IP 與網域表示式: 192.168.0.128/25 或 192.168.0.128/255.255.255.128
IP 的種類 Public IP : 公共 IP ,經由 INTERNIC 所統一規劃的 IP, 有這種 IP 才可以連上 Internet ; Privat IP : 私有 IP 或保留 IP,不能直接連上 Internet 的 IP , 主要用於區域網路內的主機連線規劃。 私有 IP 也分別在 A, B, C 三個 Class 當中各保留一段作為私有 IP 網段,那就是: A Class:10.0.0.0 - 10.255.255.255 B Class:172.16.0.0 - 172.31.255.255 C Class:192.168.0.0 - 192.168.255.255
IP的取得方式 目前連上網路的電腦 IP 取得的方式有兩種,一種是固定式的,就是永遠固定這個 IP位置,大部份是使用在專線用戶,就是像一般的公司行號,會向 Hinet 或 SeedNet 去申請一條專線,讓全公司的人可以上網,在申請專線的同時,受理的 ISP(如 Hinet 或 SeedNet)就會分給這家公司幾組 IP,而在公司內部的人,因為一直處於 網路連線狀態,因此大部份的MIS 會以固定 IP 的方式處理,這樣清楚又容易管理。
另一種取得 IP 的方式是隨機取得的,這種情況大部份是發生在撥接用戶(就是要利 用數據機 + 電話線 + 貴死人的連線費用才能上網的那種),這種使用者因為不是一 直處於網路連線狀態,所以當他以電話線撥接上 ISP 時,ISP 為隨機的從現有無人用 的 IP 中傳給用戶一組 IP,這樣這台電腦才能順利上網。在現實生活中,我們都會以 身份證字號來辨別一個人,在網路世界中則是用 IP 來辨別一部電腦,因此如果你是 專線用戶,有空還是把自己的 IP 記一下,免得下回重新安裝電腦時,又要找很久才 能上網了.
在上面的圖示中有個地方要注意,那就是『每一行所佔用的位元數為 32 bits』, 也就是說, IP 封包的表頭資料是 32 bits 的倍數喔!那各個表頭的內容分別介紹如下:
Version(版本) 宣告這個 IP 封包的版本,例如目前慣用的還是 IPv4 這個版本,在這裡宣告的。 IHL(Internet Header Length, IP表頭的長度) 告知這個 IP 封包的表頭長度,單位為位元組(bytes)。 此 IHL 長度的範圍為 5~15。 Type of Service(服務類型) 這個項目的內容為『PPPDTRUU』,表示這個 IP 封包的服務類型,主要分為: PPP:表示此 IP 封包的優先度; D:若為 0 表示一般延遲(delay),若為 1 表示為低延遲; T:若為 0 表示為一般傳輸量 (throughput),若為 1 表示為高傳輸量; R:若為 0 表示為一般可靠度(reliability),若為 1 表示高可靠度。 UU:保留尚未被使用。 我們前面談到 gigabit 乙太網路時曾提到 Jumbo frame 對吧!可以提高 MTU, 由於 gigabit 乙太網路的種種相關規格可以讓這個 IP 封包加速且降低延遲, 某些特殊的標誌就是在這裡說明的。
Total Length(總長度) 指這個 IP 封包的總容量,包括表頭與內容 (Data) 部分。最大可達 65535 bytes。 Identification(辨別碼) 我們前面提到 IP 袋子必須要放在 MAC 袋子當中。不過,如果 IP 袋子太大的話, 就得先要將 IP 再重組成較小的袋子然後再放到 MAC 當中。而當 IP 被重組時, 每個來自同一筆資料的小 IP 就得要有個識別碼以告知接收端這些小 IP 其實是來自同一個封包才行。 也就是說,假如 IP 封包其實是 65536 那麼大 (前一個 Total Length 有規定), 那麼這個 IP 就得要再被分成更小的 IP 分段後才能塞進 MAC 訊框中。那麼每個小 IP 分段是否來自同一個 IP 資料,呵呵!這裡就是那個識別碼啦! Flags(特殊旗標) 這個地方的內容為『0DM』,其意義為: D:若為 0 表示可以分段,若為 1 表示不可分段 M:若為 0 表示此 IP 為最後分段,若為 1 表示非最後分段
Fragment Offset(分段偏移) 表示目前這個 IP 分段在原始的 IP 封包中所佔的位置。 就有點像是序號啦,有這個序號才能將所有的小 IP 分段組合成為原本的 IP 封包大小嘛! 透過 Total Length, Identification, Flags 以及這個 Fragment Offset 就能夠將小 IP 分段在收受端組合起來囉! Time To Live(TTL, 存活時間) 表示這個 IP 封包的存活時間,範圍為 0-255。當這個 IP 封包通過一個路由器時, TTL 就會減一,當 TTL 為 0 時,這個封包將會被直接丟棄。說實在的,要讓 IP 封包通過 255 個路由器,還挺難的~ ^_^ Protocol Number(協定代碼) 由於網路上面的封包協定太多了,每個協定都是裝在 IP 當中的, 所以 IP 當然就得在表頭上面告知收受端,這個 IP 內含有的資料是什麼協定才行。 Header Checksum(表頭檢查碼) 用來檢查這個 IP 表頭的錯誤檢驗之用
Source Address 來源的 IP 位址。 Destination Address 有來源還需要有目標才能傳送,這裡就是目標的 IP 位址。 Options (其他參數) 這個是額外的功能,提供包括安全處理機制、路由紀錄、時間戳記、 嚴格與寬鬆之來源路由等。 Padding(補齊項目) 由於 Options 的內容不一定有多大,但是我們知道 IP 每個資料都必須要是 32 bits, 所以,若 Options 的資料不足 32 bits 時,則由 padding 主動補齊
TCP IP 與路由僅能將資料封包傳送到正確的目標而已, 但是這個目的地是否真的能夠收下來這個封包?那可就不一定了。要確認該資料能否正確的被目的端所接收, 就必須要在資料封包上面多加一些參數來判斷才行 。 TCP協定會根據所傳送出去封包的狀態,來判斷該封包是否要重新傳送 (retransmit),當網路發生問題,在一定的時間內無法到達接收端,此時TCP也會告訴傳送者 “封包逾時” (time-out) 的訊息,它還能做到流量管制 (flow control) 的工作,確保傳送端所送出的封包,能夠適切的由接收端接受。
在網路層的 IP 之上則是傳送層,而傳送層的資料打包成什麼? 最常見的就是 TCP 封包了。這個 TCP 封包資料必須要能夠放到 IP 的資料袋當中才行喔! 所以,我們可以將 MAC, IP 與 TCP 的封包資料這樣看: 所以說,IP 除了表頭之外的 Data 內容其實就是 TCP 封包的表頭與內容;而 MAC 的 Data 內容, 就是一個完整的 IP 封包資料!,最終還是得以 MAC 能夠支援的最大容許容量, 才能夠決定 IP 與 TCP 封包是否需要再進行分段的工作
TCP 封包的表頭資料
Source Port & Destination Port ( 來源埠口 & 目標埠口 ) 什麼是埠口(port)?我們知道 IP 封包的傳送主要是藉由 IP 位址連接兩端, 但是到底這個連線的通道是連接到哪裡去呢?沒錯!就是連接到 port 上頭啦! 舉例來說,鳥站 (http://linux.vbird.org) 有開放 WWW 伺服器, 這表示鳥站的主機必須要啟動一個可以讓 client 端連接的端口,這個端口就是 port , 中文翻譯成為埠口。同樣的,用戶端想要連接到鳥哥的鳥站時,就必須要在 client 主機上面啟動一個 port ,這樣這兩個主機才能夠利用這條『通道』來傳遞封包資料喔! 這個目標與來源 port 的紀錄,可以說是 TCP 封包上最重要的參數了! 下個小單元我們還會繼續介紹。 Sequence Number ( 封包序號 ) 由於 TCP 封包必須要帶入 IP 封包當中,所以如果 TCP 資料太大時(大於 IP 封包的容許程度), 就得要進行分段。這個 Sequence Number 就是記錄每個封包的序號, 可以讓收受端重新將 TCP 的資料組合起來。
Acknowledge Number ( 回應序號 ) 為了確認主機端確實有收到我們 client 端所送出的封包資料,我們 client 端當然希望能夠收到主機方面的回應,那就是這個 Acknowledge Number 的用途了。 當 client 端收到這個確認碼時,就能夠確定之前傳遞的封包已經被正確的收下了。 Data Offset (資料補償) 在圖十二倒數第二行有個 Options 欄位對吧!那個 Options 的欄位長度是非固定的, 而為了要確認整個 TCP 封包的大小,就需要這個標誌來說明整個封包區段的起始位置。 Reserved (保留) 未使用的保留欄位。 Code (Control Flag, 控制標誌碼) 當我們在進行網路連線的時候,必須要說明這個連線的狀態,好讓接收端瞭解這個封包的主要動作。 這可是一個非常重要的控制碼喔!這個欄位共有 6 個 bits ,分別代表 6 個控制碼,若為 1 則為啟動。分別說明如下:
URG(Urgent):若為 1 則代表該封包為緊急封包, 接收端應該要緊急處理,且圖十二當中的 Urgent Pointer 欄位也會被啟用。 ACK(Acknowledge):若為 1 代表這個封包為回應封包, 則與上面提到的 Acknowledge Number 有關。 PSH(Push function):若為 1 時, 代表要求對方立即傳送緩衝區內的其他對應封包,而無須等待緩衝區滿了才送。 RST(Reset):如果 RST 為 1 的時候, 表示連線會被馬上結束,而無需等待終止確認手續。這也就是說,這是個強制結束的連線, 且發送端已斷線。 SYN(Synchronous):若為 1 , 表示發送端希望雙方建立同步處理,也就是要求建立連線。通常帶有 SYN 標誌的封包表示『主動』要連接到對方的意思。 FIN(Finish):若為 1 ,表示傳送結束, 所以通知對方資料傳畢,是否同意斷線,只是發送者還在等待對方的回應而已。
Window (滑動視窗) 主要是用來控制封包的流量的,可以告知對方目前本身有的緩衝器容量(Receive Buffer) 還可以接收封包。當 Window=0 時,代表緩衝器已經額滿,所以應該要暫停傳輸資料。 Window 的單位是 byte。 Checksum(確認檢查碼) 當資料要由發送端送出前,會進行一個檢驗的動作,並將該動作的檢驗值標注在這個欄位上; 而接收者收到這個封包之後,會再次的對封包進行驗證,並且比對原發送的 Checksum 值是否相符,如果相符就接受,若不符就會假設該封包已經損毀,進而要求對方重新發送此封包! Urgent Pointer(緊急資料) 這個欄位是在 Code 欄位內的 URG = 1 時才會產生作用。可以告知緊急資料所在的位置。 Options(任意資料) 目前此欄位僅應用於表示接收端可以接收的最大資料區段容量,若此欄位不使用, 表示可以使用任意資料區段的大小。這個欄位較少使用。 Padding(補足欄位) 如同 IP 封包需要有固定的 32bits 表頭一樣, Options 由於欄位為非固定, 所以也需要 Padding 欄位來加以補齊才行。同樣也是 32 bits 的整數。
封包的傳送 在右邊的封包連接模 式當中,在建立連線 之前都必須要通過三 個確認的動作, 所以 這種連線方式也就被 稱為三向交握(Three-way handshake)。 那麼我們將整個流程依據上面的 A, B, C, D 四個階段來說明一下:
A:封包發起 當用戶端想要對伺服器端連線時,就必須要送出一個要求連線的封包, 此時用戶端必須隨機取用一個大於 1024 以上的埠口來做為程式溝通的介面。 然後在 TCP 的表頭當中,必須要帶有 SYN 的主動連線(SYN=1),並且記下發送出連線封包給伺服器端的序號 (Sequence number = 10001 ) 。 B:封包接收與確認封包傳送 當伺服器接到這個封包,並且確定要接收這個封包後,就會開始製作一個同時帶有 SYN=1, ACK=1 的封包, 其中那個 acknowledge 的號碼是要給 client 端確認用的,所以該數字會比(A 步驟)裡面的 Sequence 號碼多一號 (ack = 10001+1 = 10002), 那我們伺服器也必須要確認用戶端確實可以接收我們的封包才行,所以也會發送出一個 Sequence (seq=20001) 給用戶端,並且開始等待用戶端給我們伺服器端的回應喔! C:回送確認封包 當用戶端收到來自伺服器端的 ACK 數字後 (10002) 就能夠確認之前那個要求封包被正確的收受了, 接下來如果用戶端也同意與伺服器端建立連線時,就會再次的發送一個確認封包 (ACK=1) 給伺服器,亦即是 acknowledge = 20001+1 = 20002 囉。 D:取得最後確認 若一切都順利,在伺服器端收到帶有 ACK=1 且 ack=20002 序號的封包後,就能夠建立起這次的連線了。
UDP 是一種在IP網路上廣泛使用的通訊協定,這個協定使用的是非連接導向的,所以不會檢查傳送出去的資料是否到達使用者端,所以其速度較TCP (傳輸控制協定) 為快,但也不保證能夠安全的送達(因為在傳送時並不需要預先建立連線)。 一個UDP資料封包因為不必傳回它傳送的結果,所以其資料格式也較TCP簡單許多
FINAL作業 在網路上找篇UDP應用的文章,簡述其內容,從其中比較與TCP的不同!PO在網管版!!如果有複製貼上者,我就!!!!!!!!!
放學回家!!
補充區
當蘇聯發射第一顆人造衛星時,美國國防部立刻成立了先進研究計畫署(Advanced Research Projects Agency, ARPA),希望能以先進的科技運用在戰略上。經過了幾年的努力, ARPA 以分封交換 (packet switching) 技術發展出一套通訊網路理論,1969 年九月美國國防部開始佈署 ARPANET (NET 等於 network),第一個節點 (node) 設立在 UCLA (Univ. of California at Los Angeles)。ARPANET 剛開始僅有四個節點,分別設在幾個大學研究中心,其最主要的想法就是設計一個沒有控制中心的網路系統,讓每台電腦的功能都一樣重要,傳送資料時可以經由任何一台電腦、任何一條可用路線,如此國家防衛系統就可永不斷線(參見 ARPANET 的歷史,Hobbes's Internet Timeline)。 BACK
OSI七層協定
在網路的世界,標準化的速度永遠比不上技術革新的速度,從使用國際標準OSI協定的網路,到現在使用業界標準TCP/IP的網路已經佔了大半。 階層化與實體 在眾多業者的電腦環境下,具備複雜而且多 樣的功能是必要的,而為了讓電腦間能夠互 相連接,因此制定協定就必須更為單純化。 因此數台電腦藉由網路連接到分散的系統上 ,利用OSI把功能作階層化的整理。而利用 其中之一的階層進行資料的傳輸功能模型就 稱為實體。藉由導入此概念,通訊協定的規 定就單純化為同一系統內上下的實體間的關 係(上對下的關係),以及其對等系統的同一 階層(Layer)的實體間的關係(各種系統的同階 層平行關係)這兩項關係。
Layer 7應用層 完全與程式有關,包括定義出檔案的讀取、複製、開啟、關閉等等, 常見的程式包括有瀏覽器、資料庫處理系統與電子郵件系統等等。
Layer 6表現層 我們在應用程式上面所製作出來的資料格式不一定符合網路傳輸的標準編碼格式的! 所以,在這個層級當中,主要的動作就是:將來自本地端應用程式的資料格式轉換(或者是重新編碼)成為網路的標準格式, 然後再交給底下傳送層等的協定來進行處理。所以,在這個層級上面主要定義的是網路服務(或程式)之間的資料格式的轉換, 包括資料的加解密也是在這個分層上面處理。
Layer 5會談層 在這個層級當中主要定義了兩個位址之間的連線通道之連接與掛斷,此外,亦可建立應用程式之對談、 提供其他加強型服務如網路管理、簽到簽退、對談之控制等等。如果說傳送層是在判斷資料封包是否可以正確的到達目標, 那麼會談層則是在確定網路服務建立連線的確認。 以上稱之為 上位階層。
Layer 4傳送層 這一個分層定義了發送端與接收端的連線技術(如 TCP 技術), 同時包括該技術的封包格式,資料封包的傳送、流程的控制、傳輸過程的偵測檢查與復原重新傳送等等, 以確保各個資料封包可以正確無誤的到達目的端 。
Layer 3網路層 IP (Internet Protocol) 就是在這一層定義的 , 因此這個層級當中最重要的除了 IP 之外,就是封包能否到達目的地的路由 (route) 概念了! 此外,這一個網路層可以涵蓋實體層與資料連結層,通常我們不需要設定硬體與相關 MAC 的資料, 就是因為網路層已經 (有點類似) 隱藏了底下兩層 。
Layer 2資料連接層 由於傳送資料的網路媒體是以是電子訊號進行傳送,所以我們的資料要使用這樣的訊號傳送時, 就需要制訂各種網路型態的訊框 (frame) 了,才能確保資料可以在不同的網路媒體進行傳送的動作 ,這層可制定frame的格式以及通過網路的方式。有一個 Binary synchronous communications 協定,會判定出一個封包如果在丟失的情況下,要等待多久會被重新發送,這個協定也是在這層裡面定義。
Layer 1 實體層 這層內主要定義最基礎的往例硬體標準,比如說各種網路線、各種無線連線方式、各種設備規範、各種接頭,還有傳輸的電壓等等。也就是要定義出在終端和網絡之間要使用的設備
傳輸方向
MAC MAC (Media Access Control, 媒體存取控制 ) 其實就是一個訊框( frame ), 你可以把他想成是一個在網路線上面傳遞的包裹, 而這個包裹是整個網路硬體上面傳送資料的最小單位了。 也就是說,網路線可想成是一條『一次僅可通過一個人』的獨木橋, 而 MAC 就是在這個獨木橋上面動的人。
在這個 MAC 當中,最重要的就是那個 6 Bytes 的目的與來源位址了 ,這個位址是硬體位址( hardware address ), 共有 6 bytes ,分別由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF, 這 6 bytes 當中,前 3bytes 為廠商的代碼,後 3bytes 則是該廠商自行設定的裝置碼了。由於 MAC 主要是與網路卡卡號有關,所以我們也常常將 MAC 作為網路卡卡號的代稱。
例如上面的圖示,我的資料要由電腦 A 通過 B 後才送達 C ,而 B 電腦有兩塊網路卡, 其中 MAC-2 與 A 電腦的 MAC-1 互通,至於 MAC-3 則與 C 電腦的 MAC-4 互通。 但是 MAC-1 不能與 MAC-3 與 MAC-4 互通,為啥?
想一想 昨天老師問的問題,如何藉由MAC碼來追蹤其IP實際位址!! 參考網址http://www.cc.ncu.edu.tw/~w3meng/utp_new.shtml
找方法 查詢現在用的電腦的MAC碼,與其製造廠商(有難度)!!
因為 MAC-1 這塊網路卡並沒有與 MAC-3 及 MAC-4 使用同樣的 switch/hub 相接嘛!所以,資料的流通會變成: 先由 MAC-1 傳送到 MAC-2 ,此時來源是 MAC-1 而目的地是 MAC-2; B 電腦接收後,察看該訊框,發現目標其實是 C 電腦,而為了與 C 電腦溝通, 所以他會將訊框內的來源 MAC 改為 MAC-3 ,而目的改為 MAC-4 ,如此就可以直接傳送到 C 電腦了。 也就是說,只要透過 B (就是路由器) 才將封包送到另一個網域去的時候, 那麼訊框內的硬體位址就會被改變,然後才能夠在同一個網域裡面直接進行 frame 的流通啊! Back
路由器 路由器是用來將網路的資訊在電腦之間傳送的基本設備,路由器的工作在於 OSI 模式第三層 (網路層),用來決定資料傳遞的路徑的設備。我們使用的IP協定就是藉由路由器將不同的IP位址連接在一起。網路上的資料分成一段一段的封包packet,而這些封包要指向何處便是由路由器來決定的,路由器會根據資料的目的地,指示正確的方向,計算評估最便捷有效率的路徑來傳輸資料,也就是說路由器要為封包做最佳化的工作,找出最適當的路徑。 Back
ARP工作原理 Back ARP是Address Resolution Protocol 的縮寫 1. 首先﹐每一台主機都會在 ARP 快取緩衝區 (ARP Cache)中建立一個 ARP 表格﹐用來記錄 IP 位址和實體位址的對應關係。 2. 當發送主機有一個封包要傳送給目的主機的時候﹐並且獲得目的主機的 IP 位址﹔那發送主機會先檢查自己的 ARP 表格中有沒有該 IP 位址的實體位址對應。如果有﹐就直接使用此位址來傳送框包﹔如果沒有﹐則向網路發出一個 ARP Request 廣播封包﹐查詢目的主機的實體位址。這個封包會包含發送端的 IP 位址和實體位址資料。 3. 這時﹐網路上所有的主機都會收到這個廣播封包﹐會檢查封包的 IP 欄位是否和自己的 IP 位址一致。如果不是則忽略﹔如果是則會先將發送端的實體位址和 IP 資料更新到自己的 ARP 表格去﹐如果已經有該 IP 的對應﹐則用新資料覆蓋原來的﹔然後再回應一個 ARP Reply 封包給對方﹐告知發送主機關於自己的實體位址﹔ 4. 當發送端接到 ARP Reply 之後﹐也會更新自己的 ARP 表格﹔然後就可以用此紀錄進行傳送了。 5. 如果發送端沒有得到 ARP Reply ﹐則宣告查詢失敗。 Back
CSMA/CD CSMA/CD (Carrier-Sense Multiple Access with Collision Detection) 的技術。 這種技術的特點就是當節點想要在網路媒體上面傳輸資料時, 會先偵測該媒體上面是否有其他的節點正在使用,確定沒有其他節點在使用該媒體時,該節點才會開始傳送資料。 並且,當節點開始傳送資料時,節點也能夠同時偵測是否有發生碰撞的現象。 (註:任何一個具有 MAC 的網路媒體接在該網路上面,就稱為一個節點"node", 所以,一部主機就是一個 node !) 不過,事實上在這樣的共享媒體環境下,當網路相當忙碌時, 資料的碰撞 (collision) 還是會發生的! Back
ISP ISP網際網路服務提供者就是為位用戶提供街入Internet和Internet訊息服務的公司或機構 這些公司投資大量資金建立機房連線設備 並租用大量線路與頻寬 再分給一般用戶 提供的服務 撥接服務 專線服務 WWW 網站服務 FTP 服務 E-Mail 服務 網頁設計 硬體設備服務 軟體工具服務 顧客技術服務諮詢
Gateway Gateway主要功能是用來"連接兩個不同的網段"。 也就是說,如果系統判定目的端為不同網段,就會將封包丟給Gateway來做轉送, 反之,如果判定為相同網段,即直接傳到目的端,不會經由Gateway. 以下我們假設一個環境來說明,您可能會較清楚:
IP分享器IP: 192. 168. 1. 1 / 255. 255. 255. 0 (經由ADSL) A電腦IP: 192. 168. 1 IP分享器IP: 192.168.1.1 / 255.255.255.0 (經由ADSL) A電腦IP: 192.168.1.11 / 255.255.255.0 Gateway 192.168.1.1 B電腦IP: 192.168.1.21 / 255.255.255.0 Gateway (空白) 1.A電腦連至B電腦: 相同網段 (不經由Gateway,直接連線) 2.A電腦連至Internet: 不同網段 (封包由Gateway來轉送,經由ADSL連至Internet) 3.B電腦連至A電腦: 相同網段 (不經由Gateway,直接連線) 4.B電腦連至Internet: 不同網段 (封包由Gateway轉送,但因Gateway留空,故無法上網) Back