發新話題
打印

【EP1】MOD-4 Transport Layer(傳輸層應用)

【EP1】MOD-4 Transport Layer(傳輸層應用)



主要功能:

1. 資料分段(Segmentation) -> TCP/UDP
2. 加上來源及目的地的Port號碼 -> TCP/UDP
3. 加上序號(Seq) -> TCP
4. 加上錯誤檢查號 -> TCP/UDP

接收端:

1. Segment(區塊)重組 -> TCP
2. 依據目的地Port識別目的地的應用軟體 -> TCP/UDP
3. 錯誤檢查號碼若發現有錯誤,就會重新傳輸這個區塊 -> TCP/UDP

※送出去的Port通常就是目的地的接收Port,而它的Port來源都是隨機提供,不能猜測

----------------------

TCP、UDP協定特色比較:



TCP:
1. 連接導向
2. 傳輸消耗大,約 20 Bytes
3. 是最可靠的傳輸方式
4. 以Segment為傳輸單元
5. 有window(這可不是作業系統)識別
6. 每段Segment有標上序號,資料亂序到達目的地可作重組

UDP:
1. 非連接導向
2. 傳輸消耗低,僅 8 Bytes
3. 最不可靠的傳輸方式
4. 以Datagrams為傳輸單元
5. 無window識別
6. 沒有序號,資料亂序

兩者都有Port號碼的列表,提供的服務與Port大多不相同

0~1023 為已知(Well known)Port,這部份給應用軟體和服務

1024~49151 為註冊(Registered)Port,這部份是使用者的應用軟體程序,伺服器不用到這些Port

※但是這範圍會被隨機選用為來源Port

49152~65535 為私有(Private)Port通常在連線時動態指定給客戶端應用軟體。很少會被服務的 Port 設定

※但是部分P2P 會設定在此範圍(如FOXY,所以它特別難被抓...XD)


UDP快,但是不可靠;TCP慢,但是資料組成可靠

那麼,有沒有可能同時使用兩者的優點呢?

當然可以,部分軟體 UDP 被DNS 所使用以快速服務許多用戶端,但是在送出需求時會使用 TCP 。

如FLASHGET和Net Transport就是採用此種方式達到快速存取

應用層軟體使用 UDP 的包括:

Domain Name System (DNS)

Simple Network Management Protocol (SNMP)

Dynamic Host Configuration Protocol (DHCP)

Routing Information Protocol (RIP)

Trivial File Transfer Protocol (TFTP)

Online games(OLG)

UDP 僅依據收到的順序組裝資料並轉給應用軟體

如果資料順序對應用軟體很重要,應用軟體自己會想辦法辨別順序,決定如何處理

所以並不代表UDP完全無用,只是種低消耗的傳輸方式,剩下則由應用軟體決定

---------------------

識別網路存取:

請大家再做個LAB

開始>執行>cmd打開DOS

輸入:netstat後按下Enter



發現什麼了嗎?

你正在使用的服務會出現Port號碼以及你正在與哪些TCP服務連線

這些服務有可能是MSN之類的通訊軟體

也有可能是你正在開啟的網頁

更有可能是你被人家連線中,若你不能識別是何種來源,可以視為安全威脅的一種

網路不通時擔心是否中毒,不妨使用此指令檢查看看...˙ˇ˙

--------------------

TCP建立連線,主機會執行一個稱為三方握手( three-way handshake)的動作

目的是:

(1)確定目的地裝置是在網路上(對來源來說)

(2)核對目的地裝置的服務是活著(alive),且在目的地 Port 號上是接受用戶端使用連線的需求(對來源來說)

(3)通知目的地裝置,來源用戶端試圖在 Port 號上建立通訊的連線(對目的地來說)

建立的步驟:



1. 送出一 Segment 包含初始序號(Send Syn)

2. 伺服器回應用戶端一個segment 其包含了 ACK 號為收到的 SEQ序號加 1,及自己的 SEQ 序號

3. 用戶端會把收到的 ACK 數字當作SEQ,把收到的SEQ 加 1 後當作ACK,送回 ACK segment 給伺服器


流量控制Window Size:



Window Size 是 TCP 表頭的一個欄位,可以用來進行「遺失資料管理的」及「流量控制」

一次傳輸一個區段(segment)然後進行確認(ACK),稱為 Windowsize=1

這樣的傳輸會造成網路的浪費(overhead),可以將 Windows size 設定成較大

EX:序號由 2000 開始,每個區段 1000 個 bytes ,一次連續傳 10個區段,才進行一個確認(ACK)

因此傳回到來源端的 ACK 號為 12001 = (2000+10*1000+1)

TOP

發新話題