理解 TCP(一) 埠

2021-09-11 12:58:40 字數 1644 閱讀 5652

更好閱讀體驗:《理解 tcp 和 udp》— by gitbook

tcp 的包是不包含 ip 位址資訊的,那是 ip 層上的事,但是有源埠和目的埠。

就是說,埠這一東西,是屬於 tcp 知識範疇的。

我們知道兩個程序,在計算機內部進行通訊,可以有管道、記憶體共享、訊號量、訊息佇列等方法。

而兩個程序如果需要進行通訊最基本的乙個前提是能夠唯一的標識乙個程序,在本地程序通訊中我們可以使用「pid(程序識別符號)」來唯一標識乙個程序。

但 pid 只在本地唯一,如果把兩個程序放到了不同的兩台計算機,然後他們要通訊的話,pid 就不夠用了,這樣就需要另外一種手段了。

解決這個問題的方法就是在運輸層使用「協議埠號 (protocol port number)」,簡稱「埠 (port)」.

我們知道 ip 層的 ip 位址可以唯一標識主機,而 tcp 層協議和埠號可以唯一標識主機的乙個程序,這樣我們可以利用:「ip位址+協議+埠號」唯一標示網路中的乙個程序。

在一些場合,也把這種唯一標識的模式稱為「套接字 (socket)」

這就是說,雖然通訊的重點是應用程序,但我們只要把要傳送的報文交到目的主機的某乙個合適的埠,剩下的工作就由 tcp 來完成了。

tcp 用乙個 16 位埠號來標識乙個埠,可允許有 65536 ( 2的16次方) 個不同的埠號,範圍在 0 ~ 65535 之間。

埠號根據伺服器使用還是客戶端使用,以及常見不常見的維度來區分,主要有以下類別:

伺服器端使用的埠號

客戶端使用的埠號

下面展開來說說。

伺服器端使用的埠號

熟知埠號

取值範圍:0 ~ 1023。

可以在 www.iana.org 查到,伺服器機器一接通電源,伺服器程式就執行起來,為了讓網際網路上所有的客戶程式都能找到伺服器程式,伺服器程式所使用的埠就必須是固定的,並且總所眾所周知的。

一些常見的埠號:

應用程式

熟知埠號

2123

2553

6980443161

登記埠號

取值範圍:1024 ~ 49151。

這類埠沒有熟知的應用程式使用,但是需要登記,以防重複

客戶端使用的埠號

取值範圍:49152 ~ 65535。

這類埠僅在客戶端程序執行時才動態選擇。

又叫 短暫埠號,表示這種埠的存在時間是短暫的,客戶程序並不在意作業系統給它分配的是哪乙個埠號,因為客戶程序之所以必須有乙個埠號,是為了讓傳輸層的實體能夠找到自己。

ps:在/etc/services檔案中可以檢視所有知名服務使用的埠。

《後台開發 核心技術與應用實踐》

《計算機網路》

Dokcer網路(一) 埠對映和埠暴露

本文涉及的範圍是在乙個容器和其宿主機之間。埠對映的主要目的是建立容器的某個埠和宿主機的某個埠之間的對映,對映建立之後可以使得宿主機相應的埠的流量 到容器的相應埠。要注意的一點是,如果容器有多個埠需要對映,那麼不能對映到宿主機的同乙個埠上。埠對映是在啟動容器的時候執行的,docker run p 小寫...

python(一)埠掃瞄器(一)

埠掃瞄器經常在滲透攻擊時使用,是網路世界中了解其他主機的工具,下面是乙個基於python的多執行緒的埠掃瞄器的 coding utf 8 import optparse import socket import threading screenlock threading.semaphore val...

JBOSS同一埠配置多個網域名稱

1,在你的專案裡的 web inf 下新建檔案jboss web.xml,類似如下內容 www.你的網域名稱.com 2,修改 jboss home server deploy jbossweb tomcatxx.sar server.xml 找到 www.你的網域名稱.com autodeploy...