TCP 和 UDP

TCP/IP五層網絡結構模型

  • 物理層:物理層建立在物理通信介質的基礎上,作為系統和通信介質的接口,用來實現數據鏈路實體間透明的比特 (bit) 流傳輸。只有該層為真實物理通信,其它各層為虛擬通信

  • 數據鏈路層:在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,并進行各電路上的動作系列。數據的單位稱為幀(frame)

  • 網絡層:選擇合適的路由,使數據分組(packet)可以交付到目的主機

  • 傳輸層:負責主機中進程間的通信

  • 應用層:直接為用戶的應用程序提供服務

UDP詳解

以下內容來自wiki - 最英俊的百科全書

用戶數據報協議(英語:User Datagram Protocol,縮寫為UDP),又稱使用者資料包協定,是一個簡單的面向數據報的傳輸層協議,正式規范為RFC 768。
在TCP/IP模型中,UDP為網絡層以上和應用層以下提供了一個簡單的接口。UDP只提供數據的不可靠傳遞,它一旦把應用程序發給網絡層的數據發送出去,就不保留數據備份(所以UDP有時候也被認為是不可靠的數據報協議)。UDP在IP數據報的頭部僅僅加入了復用和數據校驗(字段)。

UDP的優點

  • 無需建立連接(減少延遲)
  • 實現簡單:無需維護連接狀態
  • 頭部開銷小(最小值為8byte)
  • 沒有擁塞控制:應用可以更好的控制發送時間和發送速率

UDP頭部:


UDP的頭部是由源端口號、目標端口號、包長和校驗4個部分組成,其中兩個是可選的。各16bit的來源端口和目的端口用來標記發送和接受的應用進程。因為UDP不需要應答,所以來源端口是可選的,如果來源端口不用,那么置為零。在目的端口后面是長度固定的以字節為單位的長度域,用來指定UDP數據報包括數據部分的長度,長度最小值為8byte。首部剩下地16bit是用來對首部和數據部分一起做校驗和(Checksum)的,checksum主要是用來檢測UDP段在傳輸中是否發生了錯誤。還有就是,校驗和計算中也需要計算UDP偽頭部,偽頭部包含IP頭部的一些字段。我們剛才介紹了識別一個通信需要5項信息,而UDP頭部只有端口號,余下的三項在IP頭部,所以引入了偽頭部的概念。(IPv6的IP頭部沒有校驗和字段)

基于UDP協議的有:

  • 域名系統(DNS)
  • 簡單網絡管理協議(SNMP)
  • 動態主機配置協議(DHCP)
  • 路由信息協議(RIP)
  • 自舉協議(BOOTP)
  • 簡單文件傳輸協議(TFTP)

TCP詳解

以下內容來自wiki - 最英俊的百科全書
傳輸控制協議(英語:Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,由IETF的RFC 793定義。
在因特網協議族(Internet protocol suite)中,TCP層是位于IP層之上,應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。
應用層向TCP層發送用于網間傳輸的、用8位字節表示的數據流,然后TCP把數據流分區成適當長度的報文段(通常受該計算機連接的網絡的數據鏈路層的最大傳輸單元(MTU)的限制)。之后TCP把結果包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。TCP為了保證不發生丟包,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的包發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據包就被假設為已丟失將會被進行重傳。TCP用一個校驗和函數來檢驗數據是否有錯誤;在發送和接收時都要計算校驗和

三次握手

TCP用三路握手(three-way handshake)過程創建一個連接。在連接創建過程中,很多參數要被初始化,例如序號被初始化以保證按序傳輸和連接的強壯性。

  • 客戶端通過向服務器端發送一個SYN來創建一個主動打開,作為三路握手的一部分。客戶端把這段連接的序號設定為隨機數A。
  • 服務器端應當為一個合法的SYN回送一個SYN/ACK。ACK的確認碼應為A+1,SYN/ACK包本身又有一個隨機序號B。
  • 最后,客戶端再發送一個ACK。當服務端受到這個ACK的時候,就完成了三路握手,并進入了連接創建狀態。此時包序號被設定為收到的確認號A+1,而響應則為B+1。

TCP狀態編碼

下表為TCP狀態碼列表,以S指代服務器,C指代客戶端,S&C表示兩者,S/C表示兩者之一:[1]

  • LISTEN S
    等待從任意遠程TCP端口的連接請求。偵聽狀態。
  • SYN-SENT C
    在發送連接請求后等待匹配的連接請求。通過connect()函數向服務器發出一個同步(SYNC)信號后進入此狀態。
  • SYN-RECEIVED S
    已經收到并發送同步(SYNC)信號之后等待確認(ACK)請求。
  • ESTABLISHED S&C
    連接已經打開,收到的數據可以發送給用戶。數據傳輸步驟的正常情況。此時連接兩端是平等的。
  • FIN-WAIT-1 S&C
    主動關閉端調用close()函數發出FIN請求包,表示本方的數據發送全部結束,等待TCP連接另一端的確認包或FIN請求包。
  • FIN-WAIT-2 S&C
    主動關閉端在FIN-WAIT-1狀態下收到確認包,進入等待遠程TCP的連接終止請求的半關閉狀態。這時可以接收數據,但不再發送數據。
  • CLOSE-WAIT S&C
    被動關閉端接到FIN后,就發出ACK以回應FIN請求,并進入等待本地用戶的連接終止請求的半關閉狀態。這時可以發送數據,但不再接收數據。
  • CLOSING S&C
    在發出FIN后,又收到對方發來的FIN后,進入等待對方對連接終止(FIN)的確認(ACK)的狀態。少見。
  • LAST-ACK S&C
    被動關閉端全部數據發送完成之后,向主動關閉端發送FIN,進入等待確認包的狀態。
  • TIME-WAIT S/C
    主動關閉端接收到FIN后,就發送ACK包,等待足夠時間以確保被動關閉端收到了終止請求的確認包。【按照RFC 793,一個連接可以在TIME-WAIT保證最大四分鐘,即最大分段壽命(maximum segment lifetime)的2倍】
  • CLOSED S&C
    完全沒有連接。

基于TCP實現的協議有

  • HTTP/HTTPS,
  • Telnet
  • FTP
  • SMTP

TCP(Transmission Control Protocol)和UDP(User DataGram Protocol)的區別

下面我們主要從連接性(Connectivity)、可靠性(Reliability)、有序性(Ordering)、有界性(Boundary)、擁塞控制(Congestion or Flow control)、傳輸速度(Speed)、量級(Heavy/Light weight)、頭部大小(Header size)等8個方面來對比它們:

  1. TCP是面向連接(Connection oriented)的協議,UDP是無連接(Connection less)協議;
    TCP用三次握手建立連接:1) Client向server發送SYN;2) Server接收到SYN,回復Client一個SYN-ACK;3) Client接收到SYN_ACK,回復Server一個ACK。到此,連接建成。UDP發送數據前不需要建立連接。
  2. TCP可靠,UDP不可靠;TCP丟包會自動重傳,UDP不會。
  3. TCP有序,UDP無序;消息在傳輸過程中可能會亂序,后發送的消息可能會先到達,TCP會對其進行重排序,UDP不會。
  4. TCP無界,UDP有界;TCP通過字節流傳輸,UDP中每一個包都是單獨的。
  5. TCP有流量控制(擁塞控制),UDP沒有;主要靠三次握手實現。
  6. TCP傳輸慢,UDP傳輸快;因為TCP需要建立連接、保證可靠性和有序性,所以比較耗時。這就是為什么視頻流、廣播電視、在線多媒體游戲等選擇使用UDP。
  7. TCP是重量級的,UDP是輕量級的;TCP要建立連接、保證可靠性和有序性,就會傳輸更多的信息,如TCP的包頭比較大。
  8. TCP的頭部比UDP大;TCP頭部需要20字節,UDP頭部只要8個字節

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sapmto生產模式配置及操作詳解_硬巖制砂線怎么設計?300t/h的生產流程與設備配置詳解...

點擊上方“藍字”關注我們說到硬巖,花崗巖、輝綠巖都不陌生,關于花崗巖的生產線配置小編曾介紹過,感興趣的可直接點閱:《硬質巖破碎很發愁?從原料到成品,看花崗巖的破碎制砂生產線配置》《年產300萬t花崗巖…

公交卡軟件測試思路,中國移動NFC專用SIM卡測試過程介紹

近期,通訊運營商在NFC的應用領域邁出了一大步,消費者在北京乘坐地鐵、公交以及其他支持市政一卡通消費的場所均可進行手機支付。接下來就從辦卡開始,為大家詳細介紹一下中國移動NFC手機錢包的實測過程。辦理手機NFC支付業務想要刷手機消費除了…

Java 集合系列目錄(Category)

Java 集合系列目錄(Category) 轉自:Java 集合系列目錄(Category) 01. Java 集合系列01之 總體框架 02. Java 集合系列02之 Collection架構 03. Java 集合系列03之 ArrayList詳細介紹(源碼解析)和使用示例 04. Java 集合系列04之 fail-fast總結(通過ArrayList來說明f…

spring的applicationContext.xml如何自動加載

一個web工程自動加載的配置文件只有web.xml&#xff0c;想要加載其他.xml必須在web.xml里面進行配置。 用spring的時候需要一個bean容器來管理所有的bean&#xff0c;所有bean默認是寫在applicationContext.xml里的&#xff0c;在web.xml里面是這么設置的&#xff0c; 1 <co…

青年教師大講堂 計算機,浙海大青年教師大講堂之船機學院“知識改變命運”...

原標題&#xff1a;浙海大青年教師大講堂之船機學院“知識改變命運”10月28日上午&#xff0c;由校團委主辦&#xff0c;船舶與機電工程學院團委承辦的青年博士教師大講堂系列活動之“知識改變命運”在長峙校區楊存國一號報告廳舉行。本次講座由船舶與機電工程學院青年博士石學…

ndwi是什么意思_NDWI是什么意思

1. Thus, this indicates that NDWI is a useful vegetation index for estimating forest fire potential in the Atlantic region.因此&#xff0c;這表明NDWI是在大西洋地區的潛在有用的森林火災指數。2. NDWI的翻譯2. Therefore, the NDWI is not suitable for enhancing a…

深入淺出分布式文件系統MogileFS集群

一&#xff0c;簡介 MogileFS是一款開源的分布式文件存儲系統&#xff0c;由LiveJournal旗下的Danga Interactive公司開發。Danga團隊開發了包括 Memcached、MogileFS、Perlbal 等多個知名的開源項目。目前MogileFS的日益成熟使用此解決方法的公司越來越多&#xff0c;例如日…

python并行計算numpy_【Nature文章摘錄】NumPy: 從單機到分布式并行計算

原標題&#xff1a;【Nature文章摘錄】NumPy: 從單機到分布式并行計算點擊上圖&#xff0c;查看詳情本公眾號的推送以互聯網大數據技術為主&#xff0c;是《互聯網大數據處理技術與應用》《Python爬蟲大數據采集與挖掘》等課程的配套號。內容涉及 大數據采集、存儲、分析挖掘的…

Aho-Corasick automaton 模板

typedef struct Node* node;const int MAXNs ;//模式串最大長度 const int MAXNS ;//文章&#xff08;待匹配串&#xff09;最大長度 struct Node{node next[26];node fail;//失配指針int sum;Node(){sum 0;fail NULL;memset(next,NULL,sizeof next);} };char s[MAXNs];//…

Ubuntu Server 14.04 下root無法ssh登陸

今天安裝了Ubuntu Server 14.04 在終端配置了root密碼后&#xff0c;使用SecureCRT和putty竟然不能ssh登陸&#xff0c;SecureCRT一直提示密碼不對&#xff0c;但是可以肯定輸入的密碼100%正確&#xff0c;用putty則一直報Access Denied&#xff0c;所以可以肯定系統限制了ro…

計算機的控制面板打不開,控制面板打不開,教您控制面板打不開怎么辦

最近有些不少的小伙伴向小編反映說&#xff0c;控制面板突然出現了打不開的情況&#xff0c;那么遇到這種情況該怎么辦呢&#xff1f;其實控制面板打不開很有可能是因為系統文件損壞造成的。今天&#xff0c;小編就來把打不開控制面板的解決方法分享給你們。其實控制面板是我們…

【算法題】Multiples of 3 and 5

Multiples of 3 and 5 原題 題意如下&#xff1a; 找出N以內的3和5的倍數的和。 思路 1、剛看到覺得好弱智&#xff0c;直接遍歷一遍不就OK了嗎&#xff1f;但是第2和第3個測試用例報了TLE&#xff0c;超時。 2、然后想不出來了&#xff0c;搜了一下&#xff0c;發現有一個類似…

PIL簡單圖片處理(上)

自己看了下python&#xff0c;本來想照教程上一點一點學的&#xff0c;學了一會發現好沒勁&#xff08;教程本身質量很好&#xff09;&#xff0c;學python就是為了好玩&#xff0c;為什么還這么按部就班勒&#xff1f;果斷google下python的爬蟲&#xff08;開始目的是這個&…

方舟服務器制作修改,ARK方舟:生存進化服務器禁止物品制造的修改方法

ARK方舟:生存進化服務器禁止物品制造的修改方法代碼對應的文件目錄:文件:Game.ini框架:[/script/shootergame.shootergamemode]例如禁用C4遙控器代碼為:ConfigOverrideItemCraftingCosts(ItemClassString"PrimalItem_WeaponC4_C",BaseCraftingResourceRequirements((…

Java中ArrayList的使用

ArrayList類是一個特殊的數組--動態數組。來自于System.Collections命名空間&#xff1b;通過添加和刪除元素&#xff0c;就可以動態改變數組的長度。 優點&#xff1a; 1、支持自動改變大小 2、可以靈活的插入元素 3、可以靈活的刪除元素 局限&#xff1a; 比一般的數組的速度…

mallco動態分配_malloc動態分配的內存的生存周期是多少?

曾經有一個朋友提過這樣一個問題&#xff0c;malloc動態分配的內存的生存周期是多少當時直接回答&#xff0c;當然是在調用free進行釋放之前阿!!但回頭我仔細想過這個問題&#xff0c;在free調用之前那段范圍內&#xff0c;但free只有一個指針參數&#xff0c;它是如何知道要釋…

中興中心管理服務器fxh3120,中興多媒體業務中心ZXMS80

運營支撐層&#xff1a; 提供面向視訊用戶的客服中心和面向管理員的業務中心、網管中心。客服中心提供會議預約、會議控制、帳單查詢、意見反饋等功能。業務中心分為業務受理中心、業務管理中心、認證計費中心。其中業務受理中心實現開戶、放號及收費等功能&#xff1b;業務管理…

隨機森林經典文

原文鏈接 轉載于:https://www.cnblogs.com/luoganttcc/p/10525324.html

python namespace unique_Python使用uuid庫生成唯一標識ID

uuid是128位的全局唯一標識符(univeral unique identifier)&#xff0c;通常用32位的一個字符串的形式來表現。有時也稱guid(globalunique identifier)。python中自帶了uuid模塊來進行uuid的生成和管理工作。python中的uuid模塊基于信息如MAC地址、時間戳、命名空間、隨機數、偽…

SQL Server 2008空間數據應用系列四:基礎空間對象與函數應用

SQL Server 2008空間數據應用系列四&#xff1a;基礎空間對象與函數應用 原文:SQL Server 2008空間數據應用系列四&#xff1a;基礎空間對象與函數應用友情提示&#xff0c;您閱讀本篇博文的先決條件如下&#xff1a; 1、本文示例基于Microsoft SQL Server 2008 R2調測。 2、具…