[電腦網路] TCP/UDP介紹

以OSI的model來看,TCP和UDP屬於傳送層(transport layer)。傳送層主要負責封包的管理與偵錯,包括像是封包大小、封包排序以及sender和receiver之間的傳送機制。

  • OSI model相對應的協定



先分辨一下UDP和TCP的不同。


UDP

UDP使用port multiplexing、有per-segment error checking和IP pseudo header,傳送封包時不具有可靠度。

UDP適用於即時傳送,因為發生packet loss 時,沒有時間等待packet,與其等待packet再度傳送,不如直接忽略,讓其餘packet繼續送過來,犧牲可容忍的品質以達到低延遲。

利用UDP協定傳送的常見應用有DNS、DHCP、SNMP、RIP等等。

  • DNS:查詢domain name相對應的IP,牽扯到root name server、local name server的運作方式,前者大多為iterative、後者為recursive。
  • DHCP:自動分配IP位置,每次分配到的IP可能為不同。如果Domain name對應到的是浮動IP,就需要dynamic DNS幫忙,每次主機端將當下使用的IP更新到DNS server上,讓其餘使用者能夠透過domain name找尋到對應的網址。
  • SNMP:可管理網路設備的狀況,透過遠端監控程式查詢設備的資訊。例如:設備是否正常運作、CPU使用率、CPU溫度是否過高、RAM使用率、風扇轉速等等。
  • RIP:intra-domain的routing的一種,使用distance vector routing,每30秒會和鄰近的router更新資訊,hop count最多設定為15,15以上設定為無窮大。原始的協定會有routing loop問題,後續有其他解法可解決此issue。

TCP
TCP使用port multiplexing、per-flow reliability、flow control,具有可靠度的傳輸。

利用TCP協定傳送的常見應用有SMTP、POP3、IMAP、Telnet、FTP、HTTP等等
  • SMTP:使用TCP port 25,負責host-to-host mail的傳送。Sender發信給Local mail server和remote mail server會使用SMTP協定。
  • POP3:Receiver向mail server下載信件。
  • IMAP:Receiver可直接對server端做設定,不需要下載mail。

TCP Connection Management
TCP連線採用三向交握(three-way handshake)、四向中斷(兩次two-way)
client為active、server端為passive
1. 需要建立連結時,client會送出SYN=X
2. Server接收到SYN,會回傳ACK=X+1, SYN=Y
3. Client接收到ACK+SYN後,會回傳ACK=Y+1
此時代表雙方已經成功連線。

TCP state轉換圖如下,server為紅線、client為黑線。


TCP具有以下特性:
1. Data Integrity - 確保被成功傳送的封包與傳送端相同。
2. Data Reliability - 每一個封包都被成功接收到,並且無被竄改。
3. Per-segment Integrity - 利用16 bits checksum當作檢驗機制。
4. Pre-flow Reliability - 利用Sequence和ACK當作可靠度指標。

TCP Tahoe Congestion Control
TCP中會使用Tahoe演算法進行流量控制,採用AIMD的方式。
1. 剛開始進入slow start階段:CWND每一次接收時+1,稱為additive increase。
2. 當CWND大於ssthresh,進入congestion avoidance階段:CWND每一次接收時+1/cwnd,等於說是接收完所有封包,CWND會+1
3. 當CWND大到會發生封包time out時,CWND降為1,ssthresh降為cwnd/2,稱為multiplicative decrease。






為了在封包遺失時,能夠迅速傳送遺失的封包並恢復原有的CWND,會採用TCP Reno演算法。
當封包遺失時,代表接收到超過3個duplicate ACK,此時進入fast transmit階段:cwnd=ssthresh+3,ssthresh=cwnd/2。
重送遺失的封包後,進入fast recovery,cwnd=ssthresh。



TCP/IP網路協定的介紹可以參考這個部落格 點我
裡面有詳細的解說

留言

手刀來看看