從網絡層協議來看,通信的兩端是兩臺主機,ip 數據報首部就標明了這兩臺主機的 IP 地址。但是從傳輸層來看,是發送方主機中的一個進程與接收方主機中的一個進程在交換數據,因此,嚴格地講,通信雙方不是主機,而是主機中的進程。
主機中常常有多個應用進程同時在與外部通信(比如你的瀏覽器和 QQ 在同時運行),下圖中,A 主機的 AP1 進程在于 B 主機的 AP3 進程通信,同時主機 A 的 AP2 進程也在與 B 主機的 AP4 進程通信。
兩個主機的傳輸層之間有一個灰色雙向箭頭,寫著“傳輸層提供應用進程間的邏輯通信”。 邏輯通信:看起來是數據似乎是沿著雙向箭頭在傳輸層水平傳輸的,但實際上是沿圖中的虛線經多個協議層次而傳輸。
TCP/IP 協議棧傳輸層有兩個重要協議——UDP 和 TCP,不同的應用進程在傳輸層使用 TCP 或 UDP 之一:
端口的作用體現在傳輸層。
剛才的圖中,AP1 與 AP3 的通信與 AP2 與 AP4 的通信可以使用同一個傳輸層協議來傳輸(TCP 或 UDP),根據 IP 地址或 MAC 地址都只能是把數據傳到正確的主機,但具體需要傳到哪一個進程,是通過端口來辨認的。比如同時使用瀏覽器和 QQ,瀏覽器占用 80 端口,而 QQ 占用 4000 端口,那么發送過來的 QQ 消息便會通過 4000 端口顯示在 QQ 客戶端,而不會錯誤地顯示在瀏覽器上。
端口號有 0~65535 的編號,其中:
編號 0~1023 為 系統端口號 ,這些端口號可以在網址 www.iana.org 查詢到,它們被指派給了 TCP/IP編號 1024~49151 為 登記端口號 ,為沒有系統端口號的應用程序使用,使用這類端口號必須在 IANA 按規定手續登記,以防止重復。編號 49152~65535 為 短暫端口號 ,是留給客戶進程選擇暫時使用的,使用結束后,這類端口號會被放開以供其它程序使用。最重要的一些應用程序,以下是一些常見的系統端口號:
應用層協議: | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
系統端口號: | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
UDP(User Datagram PRotocol)用戶數據報協議,它只在 IP 數據報服務之上增加了很少一點功能,它的主要特點有:
UDP 是無連接的,發送數據之前不需要建立連接(而 TCP 需要),減少了開銷和時延。UDP盡最大努力交付,不保證交付可靠性。UDP 是面向報文的,對于從網絡層交付下來的 IP 數據報,只做很簡單的封裝(8 字節 UDP 報頭),首部開銷小。UDP 沒有擁塞控制,出現網絡擁塞時發送方也不會降低發送速率。這種特性對某些實時應用是很重要的,比如 IP電話,視頻會議等,它們允許擁塞時丟失一些數據,因為如果不拋棄這些數據,極可能造成時延的累積。UDP 支持一對一、一對多、多對一和多對多的交互通信。從應用層到傳輸層,再到網絡層的各層次封裝:
UDP 數據報可分為兩部分:UDP 報頭和數據部分。其中數據部分是應用層交付下來的數據。UDP 報頭總共 8 字節,而這 8 字節又分為 4 個字段:
tcpdump 抓取 UDP 報文C程序:
程序作用是向 指定 IP 地址 的 指定端口 發送一個 指定內容 的 UDP 數據報 編譯后,安裝抓包工具 tcpdump ,并運行,最小化當前終端,另開啟一個終端,運行剛才編譯好的 C 程序
新聞熱點
疑難解答