TCP之基本概念

一、TCP

  傳輸控制協議(Transmission Control Protocol),提供面向鏈接、可靠的傳送服務。TCP是面向字節流的,「流」指的是流入到進程或從進程流出的字節序列,發送方的TCP將應用程序交下來的報文看作是一連串無結構的字節流,不保證應用程序所收到的數據塊和應用程序所發出的數據塊具備對應的大小關係,但接收方應用程序收到的字節流必須和發送方應用程序發送的字節流同樣。網絡

1.一、TCP最主要的特色

  • TCP是面向鏈接的傳輸層協議;
  • 每一條TCP鏈接只能有兩個端點(endpoint),每一條TCP鏈接只能是點對點的(一對一);
  • TCP提供可靠交付的服務;
  • TCP提供全雙工通訊;
  • 面向字節流:
    • TCP的「流」(stream)指的是流入或流出進程的字節序列;
    • 「面向字節流」的含義是:雖然應用程序和TCP的交互是一次一個數據塊,但TCP把應用程序交下來的數據當作是一連串無結構的字節流。

1.二、TCP面向流的概念

  • TCP不保證應用程序所收到的數據塊和應用程序所發出的數據塊具備對應的大小關係;
  • 但接收方應用程序收到的字節流必須和發送方應用程序發送的字節流同樣。

二、UDP

  用戶數據報協議(User Datagram Protocol),提供無鏈接、不可靠的傳輸服務。無鏈接即發送以前不須要創建連接,所以減小了開銷和發送數據以前的時延,可是在數據傳輸過程當中會致使差錯丟失。UDP是面向報文的,發送方UDP對應用程序交下來的報文,在簡單添加首部以後就直接交付給網絡層。socket

2.一、UDP的主要特色

  • UDP是無鏈接的,發送數據以前不須要創建鏈接,所以減小了開銷和發送數據以前的時延;
  • UDP使用盡最大努力交付,即不保證可靠交付,所以主機不須要維持複雜的鏈接狀態表;
  • UDP是面向報文的。UDP對應用程序交下來的報文,即不合並,也不拆分,而是保留這些報文的邊界。UDP一次交付一個完整的報文;
  • UDP沒有擁塞控制,所以網絡出現擁塞時不會使源主機的發送速率下降。這對某些實時應用很重要,很適合多媒體通訊的要求;
  • UDP支持一對1、一對多、多對一和多對的的交互通訊;
  • UDP的首部開銷小,只有8個字節,比TCP的20個字節首部要短。

2.二、面向報文的UDP

  • 發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付IP層。 UDP對應用層交下來的報文,即不合並,也不拆分,而是保留這些報文的邊界;
  • 應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文;
  • 接收方UDP對IP層交上來的UDP數據報,在去除首付後就原封不動的交付上層的應用程序,一次交付一個完整的報文;
  • 應用程序必須選擇一個合適大小的數據報:
    • 若報文太長,UDP把它交給IP層後,IP層在進行傳輸時可能進行分片,這會下降IP層的效率;
    • 若報文過短,UDP把它交給IP層後,會使IP數據報的首部的相對長度過大,這也會下降IP層的效率。

三、TCP和UDP的區別

  • TCP是面向鏈接的,須要事先創建鏈接(三次握手,釋放須要四次揮手),而UDP是無鏈接的;
  • TCP有多種手段來保證傳輸質量(流量控制、差錯檢驗、擁塞控制、對數據報排序等),通常用於對數據準確性要求高的FTP、HTTP、郵件系統的POP3,SMTP、遠程登陸等。UDP不對數據進行排序,沒有擁塞控制,通常用於準確度不高的語音、視頻通訊;
  • UDP傳送數據較TCP快速,由於系統開銷也少,無需各項保質控制(TCP在轉移數據時必須建立(並保持)一個鏈接。這個鏈接給通訊進程增長了開銷,讓它比UDP速度要慢);
  • TCP通訊是一對一的,而UDP是一對1、一對多、多對一和多對多的交互通訊;
  • TCP面向字節流,其實是TCP把數據當作一連串無結構的字節流;UDP是面向報文的。

四、端口

  在網絡技術中,端口(Port)大體有兩種意思:一是物理意義上的端口,好比,ADSL Modem、集線器、交換機、路由器用於鏈接其餘網絡設備的接口,如RJ-45端口、SC端口等等;二是邏輯意義上的端口,通常是指TCP/IP協議中的端口,端口號的範圍從0到65535,好比用於瀏覽網頁服務的80端口,用於FTP服務的21端口等等。    ----百度百科spa

  • 每一個TCP報文頭部都包含源端口號(source port)和目的端口號(destination port),用於標識和區分源端設備和目的端設備的應用進程。
  • 在TCP/IP協議棧中,源端口號和目的端口號分別與源IP地址和目的IP地址組成套接字(socket),惟一的肯定一條TCP鏈接。
  • 相對於TCP報文,UDP報文只有少許的字段:源端口號、目的端口號、長度、校驗和等,各個字段功能和TCP報文相應字段同樣。
相關文章
相關標籤/搜索