激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

電腦之家 - 專業(yè)計(jì)算機(jī)基礎(chǔ)知識(shí)與電腦技術(shù)學(xué)習(xí)網(wǎng)站
分類導(dǎo)航

路由器|交換機(jī)|網(wǎng)絡(luò)協(xié)議|網(wǎng)絡(luò)知識(shí)|

10分鐘理解TCP、UDP 和端口號(hào)

2022-02-23 22:22張小吉 網(wǎng)絡(luò)協(xié)議

在我們開始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候,我們發(fā)現(xiàn)一些名詞出現(xiàn)的頻率極其高,比如 TCP/IP、UDP、OSI 七層網(wǎng)絡(luò)模型等。為了不讓文章顯得冗余,我們今天只談網(wǎng)絡(luò)中的 TCP、UDP 和端口。

在我們開始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候,我們發(fā)現(xiàn)一些名詞出現(xiàn)的頻率極其高,比如 TCP/IP、UDP、OSI 七層網(wǎng)絡(luò)模型等。這肯定不是偶然,因?yàn)樗鼈儤O其重要,才會(huì)被人反復(fù)提及。尤其在面試的時(shí)候,面試官喜歡把它們拿來,當(dāng)作考察面試者基礎(chǔ)功底的重要環(huán)節(jié)。為了不讓文章顯得冗余,我們今天只談網(wǎng)絡(luò)中的 TCP、UDP 和端口。

10分鐘理解TCP、UDP 和端口號(hào)

協(xié)議、TCP 和 UDP

在了解 TCP(Transmission Control Protocol 即傳輸控制協(xié)議) 和 UDP(User Datagram Protocol 即用戶數(shù)據(jù)包協(xié)議) 之前,我們先要知道一個(gè)名詞,即協(xié)議。它到底是什么?它其實(shí)就是一套約定成俗的規(guī)則。就像開會(huì)的時(shí)候,我們達(dá)成了一些共識(shí),先開發(fā)那個(gè)接口,項(xiàng)目什么時(shí)候上線等等。

可以毫不夸張地說計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)建與發(fā)展,奠基石就是各種網(wǎng)絡(luò)協(xié)議。它們定義了信息通訊的方式,以及如何收發(fā)信息等,比如:

  • IP 協(xié)議負(fù)責(zé)將多個(gè)包交換網(wǎng)絡(luò)連接起來,并管理通訊 IP 源地址和目標(biāo)地址的協(xié)議
  • TCP 和 UDP 協(xié)議則是位于應(yīng)用層和 IP 層之間,負(fù)責(zé)它們之間信息傳輸?shù)闹匾獏f(xié)議

既然是協(xié)議,大家都必須遵守,否則,今天張三定一個(gè)協(xié)議,李四不同意,他明天再定一個(gè)協(xié)議,這就亂了套。因此,不同的大廠和許多公司就聯(lián)合起來組成一個(gè)組織,將這些協(xié)議統(tǒng)一規(guī)范起來。你就必須得用這些規(guī)定好的協(xié)議,否則就無法通信。這才實(shí)現(xiàn)了“地球村”的夢(mèng)想。今天無論用什么設(shè)備,在世界的任何角落,用哪種國家的語言,都可以很方便地使用網(wǎng)絡(luò)進(jìn)行通信。

TCP 和 UDP 的特點(diǎn)

用一個(gè)不算嚴(yán)謹(jǐn)?shù)恼f法總結(jié) TCP 就是,女孩子如果遇到 TCP 這樣的男生,就嫁了吧。因?yàn)門CP的核心特點(diǎn)就是靠譜。他的特定包括,面向連接、可靠、基于字節(jié)流控制的傳輸,就像一個(gè)管道一樣將應(yīng)用層和 IP 層連接起來。

而與之相對(duì)應(yīng)的,UDP 就像二十多歲的浪子。他們不夠可靠,但卻充滿熱情。一切以效率為先,他們可以馬上答應(yīng)你很多事情,并且愿意立馬付出實(shí)踐。你這一秒說佛珠浪漫,他不管身處何處,立馬搭飛機(jī)給你去取,下一秒說想去聽周杰倫的演唱會(huì),他立馬給你訂票。當(dāng)然,人的精力和時(shí)間都有限,所以就可能出現(xiàn)不可控的意外,比如根本沒有足夠的錢買門票等。這和UDP相仿,它提供無連接通信,但不對(duì)傳送的數(shù)據(jù)包提供可靠性保證。

10分鐘理解TCP、UDP 和端口號(hào)

TCP 和 UDP 的特點(diǎn)總結(jié)

 

TCP 和 UDP 的使用場景

不同的人,因性格不同,做事的方式也不一樣,你不能說這樣就一定好,那樣就一定不好,對(duì)于 TCP 和 UDP 也是一樣,在不同的場景中,他們各有各的妙用。

比如在開發(fā)一個(gè)游戲的的程序是,對(duì)于玩家登陸賬號(hào),因?yàn)槲覀円_保不同的玩家能登陸到自己的賬號(hào),這個(gè)時(shí)候就要應(yīng)用 TCP 協(xié)議。而對(duì)于控制游戲中角色的移動(dòng),我們只需根據(jù)玩家鼠標(biāo)的點(diǎn)擊移動(dòng)角色,如果因?yàn)樾「怕实木W(wǎng)絡(luò)問題,對(duì)于玩家來說,再次進(jìn)行角色移動(dòng)操作即可,成本和風(fēng)險(xiǎn)在可控范圍內(nèi),因此就可以使用 UDP 協(xié)議。

我們從以上可以看出,如果是基礎(chǔ)服務(wù)功能,則***使用 TCP 協(xié)議,保證服務(wù)的可靠性。以確***程中,每一個(gè)網(wǎng)絡(luò)包能夠正確抵達(dá)目的地。而相較于 UDP ,程序員則需要自己去進(jìn)一步做丟包情況和字節(jié)傳輸順序的處理。

可不要因此就覺得 UDP 非常難用,正相反,其實(shí)有大量的服務(wù)是基于 UDP 協(xié)議的。比如 DNS 解析服務(wù)。每一臺(tái)電腦訪問外網(wǎng)網(wǎng)頁,都需要通過 DNS 服務(wù)解析域名,從中找到對(duì)應(yīng)的 IP 地址。這個(gè)時(shí)候如果 DNS 出了問題,我們其實(shí)只需要再一次進(jìn)行 DNS 尋址查詢即可。唯一的副作用,可能就是有一丁點(diǎn)兒延遲罷了。

10分鐘理解TCP、UDP 和端口號(hào)

另一個(gè) UDP 的應(yīng)用就是 IP 電話, 我們常把它稱作 VoIP(Voice over IP),它的原理可以簡化的理解為,把撥打電話從以往的電話通訊,轉(zhuǎn)移到網(wǎng)絡(luò)通訊上,類似于我們現(xiàn)在的微信通話。當(dāng)你和某人通話的時(shí)候,用的就是 UDP ,想象一下,其實(shí)我們這個(gè)時(shí)候需要的并不是可靠性,而是實(shí)時(shí)性。如果不幸中間有一點(diǎn)信息損失了,比如你媽說:“過年給我把對(duì)象帶回來,不然就別回來了”。由于信息損失一部分,像這樣——“過年給 把對(duì)象帶 來,不然 別回 了”,其實(shí)我們是可以理解一整句話的意思的。而如果用 TCP,我們可能說一句話,別人 30 秒之后才能聽到,這顯然是不能忍受的。

因此,我們明白了,在日常的開發(fā)過程中,我們應(yīng)該根據(jù)不同的應(yīng)用場景,選擇對(duì)應(yīng)的 TCP 或者 UDP 作為網(wǎng)絡(luò)傳輸協(xié)議,而不能因?yàn)槲覀儗?duì) UDP 不熟悉,就從心理上抗拒它。

端口及其特點(diǎn)

如果 IP 是用來定位街區(qū)的,那么端口就是對(duì)應(yīng)于該街區(qū)中每一戶的門牌號(hào)。在通訊過程中,數(shù)據(jù)通過各種通訊協(xié)議最終抵達(dá)設(shè)備(如計(jì)算機(jī))后,這里的設(shè)備就相當(dāng)于一個(gè)街區(qū),而在設(shè)備計(jì)算機(jī)內(nèi)部有很多程序在跑,數(shù)據(jù)進(jìn)來之后,必須要給它一個(gè)對(duì)應(yīng)的門牌號(hào)(即端口號(hào)),程序才方便進(jìn)行后續(xù)操作。

端口號(hào)屬于傳輸協(xié)議的一部分,因此我們可以說,數(shù)據(jù)通過 IP 地址發(fā)送對(duì)應(yīng)的數(shù)據(jù)到指定設(shè)備上,而通過端口號(hào)把數(shù)據(jù)發(fā)送到指定的服務(wù)或程序上。

 

程序一般不止是監(jiān)聽指定的端口號(hào),而且也會(huì)明確對(duì)應(yīng)的傳輸協(xié)議。所以我們?cè)谶M(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,既要指定對(duì)應(yīng)的端口號(hào),也要指定對(duì)應(yīng)的通訊協(xié)議,很多人僅僅會(huì)說:程序 A 監(jiān)聽著 33001 端口,這個(gè)是不正確的,至少是不完全正確的。相應(yīng)的,我們應(yīng)該這樣說:程序 A 使用 TCP 協(xié)議,監(jiān)聽 33001 端口,當(dāng)然你也可以說:程序 A 使用 UDP 協(xié)議,監(jiān)聽 33001 端口。

指定傳輸協(xié)議和端口,顯而易見的好處在于,當(dāng)我們進(jìn)行端口轉(zhuǎn)發(fā)或者構(gòu)建網(wǎng)絡(luò)防火墻的時(shí)候,我們可以很方便的通過協(xié)議和端口進(jìn)行隔離。以防止不可預(yù)見的意外發(fā)生。對(duì)于計(jì)算機(jī)來說,通過這種方式可以防止外網(wǎng)各種不必要的數(shù)據(jù),進(jìn)入本地局域網(wǎng)。

你可能會(huì)想,這么多端口號(hào),如果大家都用同一個(gè),那不是也有沖突。沒錯(cuò),這就需要一個(gè)專門的組織來管理它們,IANA( Internet Assigned Numbers Authority 即互聯(lián)網(wǎng)號(hào)碼分配局 ),它負(fù)責(zé)管理端口注冊(cè)。大多數(shù)主流的程序,都有一個(gè)明確的已注冊(cè)端口,比如常見的 FTP 監(jiān)聽 20、 21 端口,而 HTTP 服務(wù)監(jiān)聽 80 端口等。如果有一個(gè)程序想注冊(cè)某個(gè)端口,那么 IANA 會(huì)先去查一查這個(gè)端口是否已被注冊(cè),如果已經(jīng)被注冊(cè)了,它則會(huì)拒絕申請(qǐng)。

端口號(hào)根據(jù)范圍分為三種

1. Well-Known Ports(即公認(rèn)端口號(hào))

它是一些眾人皆知著名的端口號(hào),這些端口號(hào)固定分配給一些服務(wù),我們上面提到的 HTTP 服務(wù)、 FTP服務(wù)等都屬于這一類。知名端口號(hào)的范圍是:0-1023。

2. Registered Ports(即注冊(cè)端口)

它是不可以動(dòng)態(tài)調(diào)整的端口段,這些端口沒有明確定義服務(wù)哪些特定的對(duì)象。不同的程序可以根據(jù)自己的需要自己定義,注冊(cè)端口號(hào)的范圍是:1024-49151。

3. Dynamic, private or ephemeral ports(即動(dòng)態(tài)、私有或臨時(shí)端口號(hào))

顧名思義,這些端口號(hào)是不可以注冊(cè)的,這一段的端口被用作一些私人的或者定制化的服務(wù),當(dāng)然也可以用來做動(dòng)態(tài)端口服務(wù),這一段的范圍是:49152–65535。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女被免费网站在线软件 | 欧美一区黄色 | 日日草日日干 | 国产成人精品无人区一区 | 欧美黄色小视频 | 91网站在线观看视频 | 国产精品一二区 | 成人免费毛片网站 | 日本黄色不卡视频 | 青青草成人免费视频在线 | 欧美成人一级 | 视频国产一区二区 | 高清视频一区二区 | 7m视频成人精品分类 | 一级做受大片免费视频 | 日本a大片 | 日韩视频一区二区在线观看 | 国产精品av久久久久久网址 | 亚洲第一页中文字幕 | 欧美国产91 | 91精品国产91久久久久久丝袜 | 欧美1—12sexvideos | 91免费视频版 | 涩涩操 | 国产免费视频在线 | 99ri在线 | 999视频网 | 欧美成人三级视频 | 99re热精品视频 | 九九热在线视频免费观看 | 国产精品久久久久久久久粉嫩 | 亚洲精品a级 | 9丨九色丨国产 | 99ri精品| 国产精品一区视频 | 97青青| 成人福利视频在 | 欧美成人精品h版在线观看 在线2区 | 久久99国产精品免费网站 | 亚洲成人精品在线 | 久久久成人一区二区免费影院 |