加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 端口號
    • UDP
    • TCP
    • 三次握手
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-網(wǎng)絡(luò)編程示例之網(wǎng)絡(luò)基礎(chǔ)知識

11/11 17:31
625
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

TCP/IP 中有兩個具有代表性的傳輸層協(xié)議,分別是 TCP 和 UDP

TCP 是面向連接的、可靠的流協(xié)議。流就是指不間斷的數(shù)據(jù)結(jié)構(gòu),當(dāng)應(yīng)用程序采用 TCP 發(fā)送消息時,雖然可以保證發(fā)送的順序,但還是猶如沒有任何間隔的數(shù)據(jù)流發(fā)送給接收端。TCP 為提供可靠性傳輸,實行“順序控制”或“重發(fā)控制”機制。此外還具備“流控制(流量控制)”、“擁塞控制”、提高網(wǎng)絡(luò)利用率等眾多功能。

UDP 是不具有可靠性的數(shù)據(jù)報協(xié)議。細(xì)微的處理它會交給上層的應(yīng)用去完成。在 UDP 的情況下,雖然可以確保發(fā)送消息的大小,卻不能保證消息一定會到達。因此,應(yīng)用有時會根據(jù)自己的需要進行重發(fā)處理。

TCP 和 UDP 的優(yōu)缺點無法簡單地、絕對地去做比較:TCP 用于在傳輸層有必要實現(xiàn)可靠傳輸?shù)那闆r;而在一方面,UDP 主要用于那些對高速傳輸和實時性有較高要求的通信或廣播通信。TCP 和 UDP 應(yīng)該根據(jù)應(yīng)用的目的按需使用。

端口號

數(shù)據(jù)鏈路和 IP 中的地址,分別指的是 MAC 地址和 IP 地址。前者用來識別同一鏈路中不同的計算機,后者用來識別 TCP/IP 網(wǎng)絡(luò)中互連的主機和路由器。在傳輸層也有這種類似于地址的概念,那就是端口號。端口號用來識別同一臺計算機中進行通信的不同應(yīng)用程序。因此,它也被稱為程序地址。

根據(jù)端口號識別應(yīng)用

一臺計算機上同時可以運行多個程序。傳輸層協(xié)議正是利用這些端口號識別本機中正在進行通信的應(yīng)用程序,并準(zhǔn)確地將數(shù)據(jù)傳輸。

通過IP地址、端口號、協(xié)議號進行通信識別

僅憑目標(biāo)端口號識別某一個通信是遠遠不夠的。

通過端口號、IP地址、協(xié)議號進行通信識別

?① 和 ② 的通信是在兩臺計算機上進行的。它們的目標(biāo)端口號相同,都是80。這里可以根據(jù)源端口號加以區(qū)分。③和 ① 的目標(biāo)端口號和源端口號完全相同,但它們各自的源 IP 地址不同。此外,當(dāng) IP 地址和端口號全都一樣時,我們還可以通過協(xié)議號來區(qū)分(TCP 和 UDP)。

端口號的確定

標(biāo)準(zhǔn)既定的端口號:這種方法也叫靜態(tài)方法。它是指每個應(yīng)用程序都有其指定的端口號。但并不是說可以隨意使用任何一個端口號。例如 HTTP、FTP、TELNET 等廣為使用的應(yīng)用協(xié)議中所使用的端口號就是固定的。這些端口號被稱為知名端口號,分布在 0~1023 之間;除知名端口號之外,還有一些端口號被正式注冊,它們分布在 1024~49151 之間,不過這些端口號可用于任何通信用途。

時序分配法:服務(wù)器有必要確定監(jiān)聽端口號,但是接受服務(wù)的客戶端沒必要確定端口號。在這種方法下,客戶端應(yīng)用程序完全可以不用自己設(shè)置端口號,而全權(quán)交給操作系統(tǒng)進行分配。動態(tài)分配的端口號范圍在 49152~65535 之間。

端口號與協(xié)議

端口號由其使用的傳輸層協(xié)議決定。因此,不同的傳輸層協(xié)議可以使用相同的端口號。此外,那些知名端口號與傳輸層協(xié)議并無關(guān)系。只要端口一致都將分配同一種應(yīng)用程序進行處理。

UDP

(1)UDP 不提供復(fù)雜的控制機制,利用 IP 提供面向無連接的通信服務(wù)。

(2)并且它是將應(yīng)用程序發(fā)來的數(shù)據(jù)在收到的那一刻,立即按照原樣發(fā)送到網(wǎng)絡(luò)上的一種機制。即使是出現(xiàn)網(wǎng)絡(luò)擁堵的情況,UDP 也無法進行流量控制等避免網(wǎng)絡(luò)擁塞行為。

(3)此外,傳輸途中出現(xiàn)丟包,UDP 也不負(fù)責(zé)重發(fā)。

(4)甚至當(dāng)包的到達順序出現(xiàn)亂序時也沒有糾正的功能。

(5)如果需要以上的細(xì)節(jié)控制,不得不交由采用 UDP 的應(yīng)用程序去處理。

(6)UDP 常用于一下幾個方面:1.包總量較少的通信(DNS、SNMP等);2.視頻、音頻等多媒體通信(即時通信);3.限定于 LAN 等特定網(wǎng)絡(luò)中的應(yīng)用通信;4.廣播通信(廣播、多播)。

TCP

(1)TCP 與 UDP 的區(qū)別相當(dāng)大。它充分地實現(xiàn)了數(shù)據(jù)傳輸時各種控制功能,可以進行丟包時的重發(fā)控制,還可以對次序亂掉的分包進行順序控制。而這些在 UDP 中都沒有。

(2)此外,TCP 作為一種面向有連接的協(xié)議,只有在確認(rèn)通信對端存在時才會發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費。

(3)根據(jù) TCP 的這些機制,在 IP 這種無連接的網(wǎng)絡(luò)上也能夠?qū)崿F(xiàn)高可靠性的通信( 主要通過檢驗和、序列號、確認(rèn)應(yīng)答、重發(fā)控制、連接管理以及窗口控制等機制實現(xiàn))。

三次握手

TCP 提供面向有連接的通信傳輸。面向有連接是指在數(shù)據(jù)通信開始之前先做好兩端之間的準(zhǔn)備工作。所謂三次握手是指建立一個 TCP 連接時需要客戶端和服務(wù)器端總共發(fā)送三個包以確認(rèn)連接的建立。在socket編程中,這一過程由客戶端執(zhí)行connect來觸發(fā)。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜