40、端口號和套接字

經過了上節的學習之后,接下來我們再要了解的一個知識就是端口號和套接字。尤其端口號,是傳輸層中最為重要的基礎概念之一,我們在以后的學習中會經常提及到端口號。


端口號

曾經在學習TCP/IP模型的時候,我們曾學過“SAP”即服務訪問點的概念,傳輸層的SAP即是端口號。也就是說,傳輸層是通過不同的端口和上面的應用層來交換數據的。我們上節提到過的傳輸層為兩臺主機的應用進程之間通信提供服務,其實說到本質上也就是端口號在起作用。

要理解端口號,首先需要理解什么是端口,上面我們說到應用進程,當數據發送方的QQ進程發出消息,消息到達接收方的時候,接收方能夠判斷出這個消息該由自己的QQ進程來接收。這就是因為每一個應用進程都有自己的一個端口,把每一個端口給它編號就是端口號,端口號可以唯一標識一個應用進程,不同應用進程的端口號是不同的,接收方就是根據端口號來判斷應把數據交給哪個應用程序的。

那么我們為所有的應用程序都安排一個固定的端口號就可以解決問題了,比如規定QQ進程的端口號是10,微信進程的端口號是20。這樣就可以了嗎?其實不然,因為應用進程是一個動態的概念,可以隨時被創建和撤銷,也就是我可以隨時打開一個應用程序,不想用了也可以隨時關閉,這樣的話和端口號的配合就不夠靈活。所以,比較好的一個解決辦法就是:當應用進程創建的時候,由系統自動為應用進程分配一個隨機的端口號,讓端口號也做到“動態地創建和撤銷”(除熟知端口號外)。

不過要說明的一點是,雖然端口號是由系統創建應用進程時隨機分配的,但這并不等于“隨便分配”。端口號也是有范圍的:0~65535,雖然數量是有限的,但這個數量對一個計算機來說足夠用了。


端口號的類型

在0~65535這個大范圍內,又把端口號分了三個小類,分別是:熟知端口號、登記端口號和短暫端口號

其中,熟知端口號又叫“知名端口號”,這類端口號的范圍是0~1023,這類端口號一般都是在服務器端為一些比較重要的知名的應用程序固定使用的,目的就是為了讓所有的客戶程序都能找到服務器上相應的程序,所以必須是固定的且熟知的。就像日常生活中的110、119、120等報警和急救電話一樣,是大家共同熟知并且共同遵守的。當然我們不需要把所有的熟知端口號都記住,但在各類考試中我們必須要記住幾個常考的:

例如,HTTP使用的端口號是80,SMTP的端口號是25,POP3的是110,DNS的是53,FTP的是20和21,TELNET的是23。這些都是各類考試中常會考的幾個熟知端口號。

第二類是登記端口號,其范圍是1024~49151,這一類端口也一般是在服務器端使用,是為一些還沒有熟知端口號的應用程序使用的,不是太重要,簡單知道就可以。

第三類是短暫端口號,其范圍是49152~65535,這類端口一般是在客戶端使用的,僅在客戶進程運行時才被動態選擇。也就是說,這種端口的存在時期是短暫的,應用進程創建時被分配,應用進程撤銷時被收回。我們前面舉的例子,QQ和微信這種應用程序就是在創建時被動態的分配一個短暫端口號。其實在應用程序的角度看來,自己被分配的端口號是多少并不重要,因為所有的端口號對它們來說都是一樣的,只需要有一個端口,能夠進行通信的工作即可。


套接字(socket)

套接字這個概念,對我們而言是一個新的說法。我們之前說“兩臺主機之間互相通信”這個說法不準確,因為其本質是兩臺主機的應用進程之間的通信。后來我們講的是“兩臺主機應用進程之間的通信”,這個說法,準確了,但是不全面。

如果要既全面又準確的表達這個意思,有一個專門的術語,叫做Socket,也就是套接字。套接字的表達形式就是用冒號把IP地址和端口號連接起來,例如:(192.168.0.1:8080)所以,傳輸層的連接,最準確的說法應該是兩端套接字的連接。

學到這里,我們應該也能更加清晰地理解前面NAPT技術的原理了,私網IP地址能夠映射到同一個公網IP地址,但是使用不同的端口號。也就是在(私網IP?→?公網IP)這樣形式的NAT基礎上,變成了(私網IP:端口號? →? 公網IP:端口號)。


本節我們學習了傳輸層的端口號和套接字的概念。下面一節內容,我們將開始學習傳輸層兩大協議中TCP協議具體的細節。

參考教材:謝希仁《計算機網絡》第八版

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

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

相關文章

設計HTML5表格

在網頁設計中,表格主要用于顯示包含行、列結構的二維數據,如財務表格、調查數據、日歷表、時刻表、節目表等。在大多數情況下,這類信息都由列標題或行標題及數據構成。本章將詳細介紹表格在網頁設計中的應用,包括設計符合標準化的…

【第七講---視覺里程計1】

視覺里程計就是通過對圖像進行特征提取與匹配得到兩幀之間的位姿,并進行估計相機運動。 經典SLAM中以相機位姿-路標來描述SLAM過程 特征提取與匹配 路標是三維空間中固定不變的點,可以在特定位姿下觀測到在視覺SLAM中,可利用圖像特征點作為…

2023 CCF BDCI 數字安全公開賽正式開啟報名

2023 CCF BDCI 數字安全公開賽重磅來襲! 全新的賽道場景 豐厚的賽事獎勵 精彩的周邊活動 數字安全守護人的狂歡盛宴 快來報名參加吧 大賽背景 伴隨著數智化的持續加深,網絡安全、數據安全風險遍布于所有場景之中,包括工業生產、能源、交…

2019年9月全國計算機等級考試真題(C語言二級)

2019年9月全國計算機等級考試真題(C語言二級) 第1題 1、“商品”與“顧客”兩個實體集之間的聯系一般是 A. 一對一 B. 一對多 C. 多對一 D. 多對多 正確答案:D 第2題 定義學生選修課程的關系模式:SC(S#&#xff0c…

tensorboard報錯:AttributeError: module ‘distutils‘ has no attribute ‘version‘

1、報錯問題 環境:pytorch 1.10 tensorboard報錯:AttributeError: module ‘distutils‘ has no attribute ‘version‘ 2、解決 pip uninstall setuptools pip install setuptools59.5.0

運營商三要素 API:構建安全高效的身份驗證系統

當今數字化的世界中,身份驗證是各行各業中至關重要的一環。為了保護用戶的隱私和數據安全,企業需要尋求一種既安全可靠又高效便捷的身份驗證方式。運營商三要素 API 應運而生,為構建安全高效的身份驗證系統提供了有力的解決方案。 運營商三要…

R語言 列表中嵌套列名一致的多個數據框如何整合為一個數據框

在批量建模后容易得到list&#xff0c;list中的每個元素都是單個的tibble 或者 dataframe&#xff0c;如何將這些數據整合為一張表呢&#xff1f; 載入R包 library(broom) library(tidyverse) 模擬數據 models <- txhousing %>% group_by(city) %>% do(modlm(lo…

-Webkit-Box 在 Safari 中出現的兼容性問題

一、問題背景&#xff1a; UI要求要實現這樣的效果&#xff0c;使用 display:-webket-box在chrome瀏覽器下完美解決 但是馬上啪啪打臉&#xff0c;在safari瀏覽器下顯示空白 &#xff0c;不能不說瀏覽器之間的兼容性簡直就是天坑 二、解決辦法 通過瀏覽器調試發現原本float的…

使用Pillow對圖像進行變換

使用Pillow對圖像進行變換 from PIL import Image, ImageEnhance# 原圖 image Image.open("1.jpg") image.show()# 鏡像 mirrored_image image.transpose(Image.FLIP_LEFT_RIGHT) mirrored_image.show() mirrored_image.save(mirror_image.jpg)# 旋轉 rotated_imag…

VK36W1D浴缸,潔具高靈敏度電容式單點液體水位檢測觸摸芯片資料介紹

產品品牌&#xff1a;永嘉微電/VINKA 產品型號&#xff1a;VK36W1D 封裝形式&#xff1a;SOT23-6L 產品年份&#xff1a;新年份 &#xff08;C21-163&#xff09; 產品特點&#xff1a;VK36W1D具有1個觸摸檢測通道&#xff0c;可用來檢測水從無到有和水從有到無的動作。該…

一個模型解決所有類別的異常檢測

文章目錄 一、內容說明二、相關鏈接三、概述四、摘要1、現有方法存在的問題2、方案3、效果 五、作者的實驗六、如何訓練自己的數據1、數據準備2、修改配置文件3、代碼優化修改4、模型訓練與測試 七、結束 一、內容說明 在我接觸的缺陷檢測項目中&#xff0c;檢測缺陷有兩種方法…

網絡通信基礎

1.網絡結構模式&#xff08;C/S和B/S&#xff09; (1)C/S結構模式 服務器 - 客戶機&#xff0c;即 Client - Server&#xff08;C/S&#xff09;結構。 優點&#xff1a; 能充分發揮客戶端 PC 的處理能力&#xff0c;很多工作可以在客戶端處理后再提交給服務器&#xff…

02 qt基本控件及信號和槽

一 QString類 功能:顯示一個字符串內容 主要接口函數 構造函數: QString(const char *str)QString(const QString &other)賦值運算符重載: QString &operator=(const QString &other)功能函數: 1&

如何完善餐飲門店的進店服務,請看餐飲神秘顧客如何專業檢測?

神秘顧客檢測能夠評估餐飲門店實際運營狀況和顧客體驗。但是&#xff0c;并不是所有的神秘顧客都能夠圓滿完成門店的各項檢測任務。如果神秘顧客在執行過程中進展不順&#xff0c;可能是沒有把握重點&#xff0c;神秘顧客調查是群狼調研(長沙快餐連鎖神秘顧客)優勢業務之一&…

C++字符串轉換總結

以下C字符串轉換均在unicode編碼下進行 目錄 string轉wstringwstring轉stringMFC CString轉wstringMFC CString轉stringMFC const char*轉CStringMFC CString轉const char*char、wchar_t數組轉stringTCHAR數組轉到CStringCString轉為TCHAR數組 string轉wstring 當在 Unicode 下…

大數據-玩轉數據-Flink RedisSink

一、添加Redis Connector依賴 具體版本根據實際情況確定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、啟動redis 參…

如何提高深度學習性能

可用于 對抗過度擬合并獲得更好泛化能力的20 個提示、技巧和技術 如何從深度學習模型中獲得更好的性能? 這是我最常被問到的問題之一。 可能會被問為: 如何提高準確率? ……或者可以反過來說: 如果我的神經網絡表現不佳該怎么辦? 我經常回答說:“我不太清楚,但我有很…

分類預測 | MATLAB實現DBN-SVM深度置信網絡結合支持向量機多輸入分類預測

分類預測 | MATLAB實現DBN-SVM深度置信網絡結合支持向量機多輸入分類預測 目錄 分類預測 | MATLAB實現DBN-SVM深度置信網絡結合支持向量機多輸入分類預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.分類預測 | MATLAB實現DBN-SVM深度置信網絡結合支持向量機多輸入分…

工作紀實36-ES跨集群遷移

1.es數據備份、恢復 https://blog.csdn.net/andy_only/article/details/111319175 2.reindex命令 https://codeleading.com/article/40964498185/ 添加配置、重啟ES cd bin sh elasticsearch -d3.開源工具 https://github.com/elasticsearch-dump/elasticsearch-dump 4.…

回歸預測 | MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測

回歸預測 | MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 1.MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測&#xff1b; 2.運行環…