運輸層的功能
0.1.簡介
- 運輸層為應用進程之間提供端到端的邏輯通信(網絡層是為主機之間提供邏輯通信)。
- 運輸層還要對收到的報文進行差錯檢測。
- 運輸層需要有兩種不同的運輸協議,即面向連接的 TCP 和無連接的 UDP。
0.2.兩種不同的運輸協議
- 運輸層向高層用戶屏蔽了下面網絡核心的細節(如網絡拓撲、所采用的路由選擇協議等),它使應用進程看見的就是好像在兩個運輸層實體之間有一條端到端的邏輯通信信道。
- 當運輸層采用面向連接的 TCP 協議時,盡管下面的網絡是不可靠的(只提供盡最大努力服務),但這種邏輯通信信道就相當於一條全雙工的可靠信道。
- 當運輸層采用無連接的 UDP 協議時,這種邏輯通信信道是一條不可靠信道。
一、運輸層的兩個主要協議
1.1.TCP/IP 的運輸層有兩個不同的協議:
- 用戶數據報協議 UDP (User Datagram Protocol);
- 傳輸控制協議 TCP (Transmission Control Protocol);
**TCP 與 UDP **
- 兩個對等運輸實體在通信時傳送的數據單位叫作運輸協議數據單元 TPDU (Transport Protocol Data Unit);
- TCP 傳送的數據單位協議是 TCP 報文段(segment),即分段傳輸;
- UDP 傳送的數據單位協議是 UDP 報文或用戶數據報,即整個數據包傳輸;
- TCP/IP 體系中的運輸層協議:
- UDP 在傳送數據之前不需要先建立連接。對方的運輸層在收到 UDP 報文后,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 是一種最有效的工作方式。
- TCP 則提供面向連接的服務。TCP 不提供廣播或多播服務。由於 TCP 要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷。這不僅使協議數據單元的首部增大很多,還要占用許多的處理機資源。
二、運輸層的端口
為了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須用統一的方法對 TCP/IP 體系的應用進程進行標志。
- 解決這個問題的方法就是在運輸層使用協議端口號(protocol port number),或通常簡稱為端口(port)。
- 雖然通信的終點是應用進程,但我們可以把端口想象是通信的終點,因為我們只要把要傳送的報文交到目的主機的某一個合適的目的端口,剩下的工作(即最后交付目的進程)就由 TCP 來完成。
- 硬件端口是不同硬件設備進行交互的接口,而軟件端口是應用層的各種協議進程與運輸實體進行層間交互的一種地址。
2.1.TCP 的端口
- 端口用一個 16 位端口號進行標志。
- 端口號只具有本地意義,即端口號只是為了標志本計算機應用層中的各進程。在因特網中不同計算機的相同端口號是沒有聯系的。
2.2.三類端口
-
熟知端口:數值一般為0~1023.
FTP:21;
TELNET:23;
SMTP:25;
DNS:53;
HTTP:80;
HTTPS:443;
RDP:3389;
...
-
登記端口號:數值為1024~49151。這是給沒有熟知端口號的應用程序使用的,使用這個范圍的端口號必須在 IANA 登記,以防止重復;
-
客戶端口號:或短暫端口號,數值為49152~65535。是留給客戶進程選擇暫時使用。當服務器進程收到客戶進程的報文時,就知道了客戶進程所使用的動態端口號。通信結束后,這個端口號可供其他客戶進程以后使用。
2.3.示例
在命令行窗口輸入:
netstat -n
查看計算機建立的會話。
可以看到沒打開一個進程就會建立一個會話,比如打開兩個網頁就會建立兩個會話,並且在本地地址中每個進程的端口號都是不重復的,其中外部地址中的“443”端口號表示HTTPS協議,“80”表示HTTP協議。