1. 程式人生 > 其它 >TCP/IP 學習筆記1 淺談TCP和UDP

TCP/IP 學習筆記1 淺談TCP和UDP

一. 通訊處理

  TCP/IP 的眾多應用協議大多以客戶端/服務端的形式執行. 客戶端類似於客戶的意思, 是請求的發起端. 而服務端在計算機網路中則意味著提高服務端程式或者計算機. 是請求的處理端.

在計算機中作為服務端的程式有必要提前啟動,準備接收客戶端的請求. 否則即使有客戶端端請求發過來, 也無法做到相應的處理. 這些服務端程式在UNIX系統當中叫做守護程序.

  比如HTTP端服務端程式是httpd(HTTP守護程序),而ssh的服務端程式是sshd(SSH守護程序). 在UNIX中並不需要將這些程序逐個啟動,而是啟動一個可以代表它們接收客戶端請求的inetd(網際網路守護程序)服務程式即可. 它是一種超級守護程序

. 該超級守護程序收到客戶端請求以後會建立(fork)新的程序並轉換(exec)為sshd等各個守護程序.

  確認一個請求究竟發給的是哪個服務端(守護程序),可以通過所收到資料包的目標埠號輕鬆識別. 當收到TCP建立連線請求時,如果目標埠為22,則轉給sshd, 如果是埠80,則轉給httpd. 然後這些守護程序會繼續對該連線上的通訊傳輸進行處理.

  傳輸協議TCP,UDP通過接收資料中的目標埠號識別目標處理程式. 傳輸協議的資料將根據傳輸埠的不同傳遞給HTTP,TELNET,FTP等應用層協議.

二. 兩種傳輸層協議TCP和UDP

  在TCP/IP中能夠實現傳輸層功能的,具有代表性的協議是TCP和UDP.

1. UDP 介紹

  UDP是user datagram protocol的簡寫,即使用者資料報協議. 它為什麼叫這個名字呢? 首先我們要知道, UDP是不具有可靠性的資料報傳輸協議, 並且它是面向無連線的,就是說不管傳送過程中資料報丟失,還是資料報傳送給對方未接收到,它都不會進行重傳, 也就是不能保證資料可靠的傳達. 從另一個角度說,它不對使用者傳送的資料進行處理,而僅僅是作為傳輸的功能, 也就是說使用者想要實現的細節都不會被處理,而直接被髮送,保證了使用者資料的高還原性. 使用者也就是處理程式的程式設計師, 從這個角度說, 這個協議完全為使用者資料傳輸服務, 所以是使用者資料報協議. 並且UDP協議不需要對資料進行處理和等待對方響應,因此傳輸資料具有高效的特點. 而與之相比由於TCP擁有各式各樣的控制機制,所以它在傳送資料時未必按照程式猿的程式設計思路進行.

2. TCP介紹

  TCP是Transmission Control Protocol ,即傳輸控制協議, 從字面意思上理解來說,就是傳輸過程可控的協議, 相比於UDP,它具有可靠傳輸資料的特點 . 它是一種面向連線的,可靠的流協議. TCP為提供可靠傳輸, 實行“順序控制”或“重發控制”機制. 此外,還具備“流控制(流量控制)”,“擁塞控制”,提高網路利用率等眾多功能.

  TCP充分實現了資料傳輸時的各種控制功能, 可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制. 而這些在UDP中都沒有. 此外,TCP作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費. 根據TCP的這些機制,在IP這種無連線的網路上也能夠實現高可靠性的通訊.

2. TCP和UDP的區分應用

  可能有人會認為,鑑於TCP是可靠的傳輸協議,那麼它一定優於TCP,其實不然. TCP和UDP的優缺點無法簡單的,絕對的去做比較. 應根據應用的目的按需使用.

  由於UDP面向無連線,它可以隨時傳送資料. 再加上UDP本身的處理既簡單又高效,因此經常用於以下幾個方面:

  • 包總量較少的通訊(DNS,SNMP等);
  • 視訊,音訊等多媒體通訊(即時通訊);
  • 限定於LAN等特定網路中的應用通訊;
  • 廣播通訊(廣播,多播)

不過在不同的應用上,為了既能夠使用到UDP的實時高效性,還能苟保證資料的有效性, 在UDP的基礎上增加了其他的用於保障資料可靠的協議, 如視訊流媒體中使用的RTP協議,還有用於控制的RTCP協議等. (後續的學習筆記進行展開)

(拓展: 套接字(Socket) 應用在使用TCP或者UDP時,會用到作業系統提供的類庫. 這種類庫一般被稱為API. 使用TCP或者UDP通訊時,又會廣泛使用到套接字的API. 應用程式利用套接字,可以實現

對端端IP地址,埠號,並實現資料的傳送與接收.)(關於套接字,後續的學習筆記進行展開)