什么是端口,為什么要有端口

一.端口概念

  在網絡技術中,端口(Port)大致有兩種意思:一是物理意義上的端口,比如,ADSL Modem、集線器、交換機、路由器用于連接其他網絡設備的接口,如RJ-45端口、SC端口等等。二是邏輯意義上的端口,一般是指TCP/IP協議中的端口,端口號的范圍從0到65535,比如用于瀏覽網頁服務的80端口,用于FTP服務的21端口等等。

  我們這里將要介紹的就是邏輯意義上的端口。我們這里所說的端口,不是計算機硬件的I/O端口,而是軟件形式上的概念.工具提供服務類型的不同,端口分為兩種,一種是TCP端口,一種是UDP端口。計算機之間相互通信的時候,分為兩種方式:一種是發送信息以后,可以確認信息是否到達,也就是有應答的方式,這種方式大多采用TCP協議;一種是發送以后就不管了,不去確認信息是否到達,這種方式大多采用UDP協議。對應這兩種協議的服務提供的端口,也就分為TCP端口和UDP端口。

二.網絡端口的分類:

2.1 公認端口(Well-KnownPorts):范圍從0到1023

  它們緊密綁定(binding)于一些服務。通常這些端口的通訊明確表明了某種服務的協議。例如:21端口分配給FTP服務,

  25端口分配給SMTP(簡單郵件傳輸協議)服務,80端口分配給HTTP服務,135端口分配給RPC(遠程過程調用)服務等等。

  我們在IE的地址欄里輸入一個網址的時候( 比如www.cce.com.cn)是不必指定端口號的,因為在默認情況下WWW服務的端口號是“80”。

  網絡服務是可以使用其他端口號的,如果不是默認的端口號則應該在地址欄上指定端口號,方法是在地址后面加上號“:”(半角),再加上端口號。比如使用“8080”作為WWW服務的端口,則需要在地址欄里輸入“www.cce.com.cn:8080”。 但是有些系統協議使用固定的端口號,它是不能被改變的,比如139 端口專門用于NetBIOS與TCP/IP之間的通信,不能手動改變。

2.2 動態端口(Dynamic Ports):范圍從1024到65535

之所以稱為動態端口,是因為它一般不固定分配某種服務,而是動態分配

動態分配是指當一個系統進程或應用程序進程需要網絡通信時,它向主機申請一個端口,主機從可用的端口號中分配一個供它使用。當這個進程關閉時,同時也就釋放了所占用的端口號。

2.2.1 注冊端口(RegisteredPorts):從1024到49151。它們松散地綁定于一些服務。也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的。例如:許多系統處理動態端口從1024左右開始。
2.2.2動態和/或私有端口(Dynamicand/orPrivatePorts):從49152到65535。理論上,不應為服務分配這些端口。實際
上,機器通常從1024起分配動態端口。但也有例外:SUN的RPC端口從32768開始。

三.作用

tcp的連接是兩個進程間的通信,而數據鏈路層的是通過硬件地址來區分的,所以我認為端口號就是為了區分同一計算機上的不同進程,端口號本質上就是一個整型。tcp和udp端口號可以相同,不沖突。


  當一臺電腦啟動了一個可以讓遠程其他電腦訪問的 程序 ,那么它就要開啟至少一個端口號來讓外界訪問。我們可以把沒有開啟端口號的電腦看作是一個 密封的房間 ,密封的房間當然不可能接受外界的訪問,所以當系統開啟了一個可以讓外界訪問的程序后它自然需要在房間上開一個窗口來接受來自外界的訪問,這個窗口就是端口。

那么為什么要給端口 編號 來區分它們呢,既然一個程序開了一個端口,那么不是 外部信息 都可以通過這個開啟的端口來訪問了嗎?答案是不可以。為什么呢?因為數據是用端口號來通知 傳輸層 協議 送給哪個軟件來處理的,數據是沒有智慧的,如果很多的程序共用一個端口來接受數據的話,那么當外界的一個 數據包 送來后傳輸層就不知道該送給哪一個軟件來處理,這樣勢必將導致混亂。


  源端口號一般是由系統自己動態生成的一個從1024-65535的 號碼 ,當一臺計算機A通過網絡訪問計算機B時,如果它需要對方返回數據的話,它也會隨機創建一個大于1023的端口,告訴B返回數據時把數據送到自己的哪個端口,然后軟件開始偵聽這個端口,等待數據返回。而B收到數據后會讀取數據包的源端口號和目的端口號,然后記錄下來,當軟件創建了要返回的數據后就把原來數據包中的原端口號作為目的端口號,而把自己的端口號作為原端口號,也就是說把收到的數據包中的原和目的反過來,然后再送回A,A再重復這個過程如此反復直到數據傳輸完成。當數據全部傳輸完A就把 源端口 釋放出來,所以同一個軟件每次 傳輸數據 時不一定是同一個源端口號。

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

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

相關文章

【leetcode熱題】楊輝三角 II

難度: 簡單通過率: 41.1%題目鏈接:. - 力扣(LeetCode) 題目描述 給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。 在楊輝三角中,每個數是它左上方和右上方的數的和。 示…

Doris實戰——金融壹賬通指標中臺的應用實踐

目錄 前言 一、業務痛點 二、早期架構挑戰 三、架構升級 四、一體化指標數據平臺 4.1 構建指標體系 4.2 構建指標平臺功能 五、Doris指標應用實踐 六、未來規劃 原文大佬的這篇指標中臺的應用實踐有借鑒意義,這里摘抄下來用作學習和知識沉淀。 前言 在搭建…

linux學習-C語言流程控制

目錄 順序結構 分支結構 關系預算符 邏輯運算符 if分支 簡單分支 階梯分支 嵌套分支: switch分支 基本形式 switch嵌套 順序結構 括號>單目運算符>雙目運算符>三目運算符>賦值運算符>逗號運算符> 雙目運算符:算數運算…

獵冰超前點播--大結局

第18集 鏈接:https://pan.baidu.com/s/1cHPiioQsQluWQQtP5CC_aA?pwdyyds 提取碼:yyds --來自百度網盤超級會員V3的分享 第17集 鏈接:https://pan.baidu.com/s/1QQD5xX7U9t6W4-xcjVkQFg?pwdyyds 提取碼:yyds --來自百度網…

知識積累(三):深度學習相關概念(查看檢索時看到)

文章目錄 1. 知識蒸餾2. 可微搜索索引(DSI)參考資料 在找論文時,發現的相關概念。 1. 知識蒸餾 知識蒸餾(knowledge distillation)是模型壓縮的一種常用的方法,不同于模型壓縮中的剪枝和量化,知…

藍禾,三七互娛,順豐,康冠科技,金證科技24春招內推

藍禾,三七互娛,順豐,康冠科技,金證科技24春招內推 ①藍禾 【崗位】運營類、設計類、研發類,供應鏈類,職能等 【一鍵內推】https://lanhevip.jobs.feishu.cn/index/m/?external_referral_codeT1KYX4B 【校園…

MySQL之索引詳解

華子目錄 索引概述優缺點 索引的原理索引的設計原則索引結構B-tree(多路平衡查找樹)BtreeHash 為什么InnoDB存儲引擎選擇Btree?索引分類聚集索引選取規則 單列索引和多列索引前綴索引創建索引1.創建表時創建索引2.在已經存在的表上創建索引3.…

微店商品詳情 API 的調用頻率有限制嗎?

微店(Weidian)的商品詳情 API的調用頻率限制可能會因具體的 API 版本和商家的設置而有所不同。為了確保 API 的穩定性和公平使用,大多數 API 都會設置調用頻率限制,通常這些限制是以每秒查詢率(QPS)或每日請…

逆變器專題(16)-構網型逆變器與跟網型逆變器

相應仿真原件請移步資源下載 現如今,常規的逆變器控制方法主要分為跟網型以及構網型逆變器 跟網型逆變器即常規意義上的并網逆變器,即輸出電流直接接入大電網,通常為電流源型逆變器,其輸出電流的相位與頻率時隨著電網電壓而隨時進…

基于光流法以及背景減除法的降雪檢測項目知識點總結

項目總結目錄 一、算法部分1.光流法部分知識點2.python代碼與大華攝像頭之間的實時調用3.兩個方法的代碼 一、算法部分 1.光流法部分知識點 像素坐標系與直角坐標系之間的轉換,之后計算角度。 其中光流法通過判斷運動目標的角度來識別是否為降雪,通過…

我在使用 Copilot 時遇到了許可證驗證錯誤。

如果使用的是 Copilot,并收到以下錯誤消息,請按以下步驟進行操作: We encountered a problem validating your Copilot license. For more information, see https://aka.ms/copilotlicensecheck 請確保使用的是正確的帳戶 請確保已使用具…

神經網絡系列---卷積

文章目錄 卷積神經網絡卷積轉置卷積 卷積核和反卷積的三種實現方式卷積的次數計算 卷積神經網絡 在神經網絡的卷積層中,向下取整(Floor)是一種常用的策略,特別是在處理輸出尺寸不是整數的情況時。當你計算出卷積層輸出的尺寸&…

UnityAPI的學習——Mathf類

Mathf類是Unity中的數學類,屬于結構體類型,只有靜態屬性和靜態方法,即不可實例化。 Mathf類靜態屬性 在Mathf類中,涉及的靜態屬性有Deg2Rad、Rad2Deg和Infinity,其中屬性Deg2Rad和Rad2Deg功能相似。 1、Deg2Rad屬性…

UE5 C++ 發射子彈發射(Projectile)

一.相關藍圖的練習,在我之前的文章中射擊子彈案例-CSDN博客 本篇使用C實現 1.創建C類 MyBullet,在MyBullet.h中包含相關頭文件 #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Components/StaticMeshComponent.…

SpringBoot 注解全解析

注解的優勢: 采用純 java 代碼,不在需要配置繁雜的 xml 文件在配置中也可享受面向對象帶來的好處類型安全對重構可以提供良好的支持減少復雜配置文件的同時亦能享受到 springIoC 容器提供的功能 1. 常用的Spring Boot注釋及其用途和示例 1)S…

Java 中notify 和 notifyAll 方法介紹

1. notify 方法 notify() 方法是 Java 中 Object 類的一個方法,它用來喚醒在該對象的監視器(monitor)上等待的單個線程。如果有多個線程都在該對象上等待,則會隨機喚醒其中一個線程。被喚醒的線程將會嘗試重新獲取對象鎖&#xff…

idea集成git詳解教程(實用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下載git Git - Downloads 一路傻瓜式安裝即可(NEXT) 2.軟件測試 在Windows桌面空白處,點擊鼠標右鍵,彈出右鍵菜單 Git軟件安裝后,會在右鍵菜單中增加兩個菜單 Git GUI He…

matplotlib繪圖中文亂碼問題

如圖所示,在使用python包matplotlib繪圖時中文文字顯示亂碼,在繪圖前加入以下兩行代碼即可 # 導入包 import matplotlib.pyplot as plt # 解決中文亂碼問題 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus] False重新運行代…

Linux 進程的前臺/后臺切換

目錄 前言 簡單例子 前言 當你用shell啟動一個程序時,往往他是在前臺工作的。程序會一直占用終端命令行,例如你在前臺解壓的時候必須等著,期間干不了別的事(除非另開一個終端)。 例如經常用連接到遠程服務器執行腳本…

【知識摘要】一文帶你了解什么是RedLock。

1、什么是RedLock 紅鎖(RedLock)是一種分布式鎖算法,由 Redis 的作者 Salvatore Sanfilippo(也稱為 Antirez)設計,用于在分布式系統中實現可靠的鎖機制。它的設計解決了單一 Redis 實例作為分布式鎖可能出…