理解 TCP(一):端口

更好閱讀體驗(yàn):《理解 TCP 和 UDP》— By Gitbook

端口與進(jìn)程

TCP 的包是不包含 IP 地址信息的,那是 IP 層上的事,但是有源端口和目的端口。
就是說(shuō),端口這一東西,是屬于 TCP 知識(shí)范疇的。

我們知道兩個(gè)進(jìn)程,在計(jì)算機(jī)內(nèi)部進(jìn)行通信,可以有管道、內(nèi)存共享、信號(hào)量、消息隊(duì)列等方法。
而兩個(gè)進(jìn)程如果需要進(jìn)行通訊最基本的一個(gè)前提是能夠唯一的標(biāo)識(shí)一個(gè)進(jìn)程,在本地進(jìn)程通訊中我們可以使用 「PID(進(jìn)程標(biāo)識(shí)符)」 來(lái)唯一標(biāo)識(shí)一個(gè)進(jìn)程。
但 PID 只在本地唯一,如果把兩個(gè)進(jìn)程放到了不同的兩臺(tái)計(jì)算機(jī),然后他們要通信的話,PID 就不夠用了,這樣就需要另外一種手段了。

解決這個(gè)問(wèn)題的方法就是在運(yùn)輸層使用 「協(xié)議端口號(hào) (protocol port number)」,簡(jiǎn)稱 「端口 (port)」.
我們知道 IP 層的 ip 地址可以唯一標(biāo)識(shí)主機(jī),而 TCP 層協(xié)議和端口號(hào)可以唯一標(biāo)識(shí)主機(jī)的一個(gè)進(jìn)程,這樣我們可以利用:「ip地址+協(xié)議+端口號(hào)」唯一標(biāo)示網(wǎng)絡(luò)中的一個(gè)進(jìn)程。
在一些場(chǎng)合,也把這種唯一標(biāo)識(shí)的模式稱為「套接字 (Socket)」。

這就是說(shuō),雖然通信的重點(diǎn)是應(yīng)用進(jìn)程,但我們只要把要傳送的報(bào)文交到目的主機(jī)的某一個(gè)合適的端口,剩下的工作就由 TCP 來(lái)完成了。

認(rèn)識(shí)端口

TCP 用一個(gè) 16 位端口號(hào)來(lái)標(biāo)識(shí)一個(gè)端口,可允許有 65536 ( 2的16次方) 個(gè)不同的端口號(hào),范圍在 0 ~ 65535 之間。

端口號(hào)根據(jù)服務(wù)器使用還是客戶端使用,以及常見(jiàn)不常見(jiàn)的維度來(lái)區(qū)分,主要有以下類別:

  1. 服務(wù)器端使用的端口號(hào)
  • 熟知端口號(hào)
  • 登記端口號(hào)
  1. 客戶端使用的端口號(hào)

下面展開(kāi)來(lái)說(shuō)說(shuō)。

端口號(hào)的分類

服務(wù)器端使用的端口號(hào)

熟知端口號(hào)
取值范圍:0 ~ 1023。
可以在 www.iana.org 查到,服務(wù)器機(jī)器一接通電源,服務(wù)器程序就運(yùn)行起來(lái),為了讓因特網(wǎng)上所有的客戶程序都能找到服務(wù)器程序,服務(wù)器程序所使用的端口就必須是固定的,并且總所眾所周知的。

一些常見(jiàn)的端口號(hào):

|應(yīng)用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | HTTPS | SNMP |
| ---| --- | --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
|熟知端口號(hào)| 21 | 23 | 25 | 53 | 69 | 80 | 443 | 161 |

登記端口號(hào)
取值范圍:1024 ~ 49151。
這類端口沒(méi)有熟知的應(yīng)用程序使用,但是需要登記,以防重復(fù)

客戶端使用的端口號(hào)

取值范圍:49152 ~ 65535。
這類端口僅在客戶端進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)選擇。
又叫 短暫端口號(hào),表示這種端口的存在時(shí)間是短暫的,客戶進(jìn)程并不在意操作系統(tǒng)給它分配的是哪一個(gè)端口號(hào),因?yàn)榭蛻暨M(jìn)程之所以必須有一個(gè)端口號(hào),是為了讓傳輸層的實(shí)體能夠找到自己。

PS:在/etc/services文件中可以查看所有知名服務(wù)使用的端口。

參考

《后臺(tái)開(kāi)發(fā) 核心技術(shù)與應(yīng)用實(shí)踐》
《計(jì)算機(jī)網(wǎng)絡(luò)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 名詞延伸 通俗的說(shuō),域名就相當(dāng)于一個(gè)家庭的門(mén)牌號(hào)碼,別人通過(guò)這個(gè)號(hào)碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,815評(píng)論 2 56
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,595評(píng)論 19 139
  • 18.1 引言 TCP是一個(gè)面向連接的協(xié)議。無(wú)論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。本章將...
    張芳濤閱讀 3,529評(píng)論 0 13
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,441評(píng)論 6 13
  • Teredo 原理概述 http://www.ipv6bbs.cn/thread-144-1-1.html (出處...
    我是葉問(wèn)小盆友閱讀 2,360評(píng)論 0 1

友情鏈接更多精彩內(nèi)容