圖解TCP/IP協議(六)傳輸層(TCP/UDP)

傳輸層最常見的兩種傳輸協議,分別是TCP和UDP協議。

一、TCP協議

tcp是面向有連接的流協議。流就是指不間斷的數據結構,可以把它想象成排水管道中的水流。TCP爲提供可靠傳輸,實行“順序控制”或“重發控制”機制。

TCP/IP的衆多應用大多以客戶端/服務端的形式運行。作爲服務端的程序需要提前啓動,準備接收客戶端的請求。

在這裏插入圖片描述

這些服務在UNIX系統中叫做守護進程。例如HTTP的服務端程序是httpd(HTTP的守護進程)。在UNIX中不需要將這些守護進程逐個啓動,而是啓動一個可以代表它們接收客戶端請求的inetd(互聯網守護進程)服務程序即可。它是一種超級守護進程。該超級守護進程收到客戶端請求以後會復刻(fork)新的進程並轉換(exec)爲sshd等各個守護進程。

端口號:確認一個請求究竟發給的是哪個服務端(守護進程),可以通過所接收到數據包的目標端口號來識別,例如上圖,如果目標端口爲22,則轉給sshd進程。

進程的端口號確定,有一些時標準規定的,例如:HTTP、TELNET、FTP所使用的端口號就是固定的。知名的進程端口一般被分配在0—1023之間。端口號大都分佈在1024—49151的數字之間。

TCP首部:

有關於首部中的校驗和介紹立即查看

在這裏插入圖片描述

二、UDP協議

UDP(User Datagram Protocol)是不具有可靠性的數據報協議,UDP可以確保發送消息的大小,卻不能保證消息一定會送達。UDP不提供複雜的控制機制,利用IP提供面向無連接的通信服務。UDP傳輸途中如果出現丟包,UDP也不負責重發。如果出現包到達順序亂掉時也沒有糾正的功能。關於包的細節控制,只能由應用程序來控制。

UDP是收到應用程序發來數據的那一刻,立即按照原樣發送到網絡上的一種機制。

UDP面向無連接,可以隨時發送數據。再加上UDP本身的處理既簡單又高效,經常被用於一下幾個方面:

  • 視頻、音頻等多媒體通信(即時通信)
  • 廣播通信(廣播、多播)

TCP雖然可靠,但是卻不一定處處優於UDP,UDP主要用於對高速傳輸和實時性要求較高的通信或廣播。例如:打電話,即使缺少了一小部分的數據,也不會影響信息的傳輸的。

UDP首部:

有關於首部中的校驗和介紹立即查看
在這裏插入圖片描述

三、套接字Socket

應用中如果使用了TCP或者UDP時,會用到操作系統提供的類庫。兩者都會廣泛使用到套接字(socket)的API。套接字原本是由BSD UNIX開發的,後來又被移植到了Windows以及嵌入式操作系統中。應用在使用套接字時,可以設置對端的IP地址、端口號,實現數據的發送與接收。

服務器識別多個請求的例子:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章