当前位置: 首页 > news >正文

计算机网络:运输层 —— 运输层端口号

文章目录

      • 运输层端口号的分类
      • 端口号与应用程序的关联
      • 应用举例
      • 发送方的复用和接收方的分用

运输层端口号的分类

端口号只具有本地意义,即端口号只是为了标识本计算机网络协议栈应用层中的各应用进程。在因特网中不同计算机中的相同端口号是没有关系的,即相互独立。另外,TCP和UDP端口号之间也是没有关系的

![[运输层端口号的分类.png]]

  • 熟知端口号(0 - 1023)

    • 这些端口号被分配给一些最常用的网络服务和应用程序。它们是由互联网号码分配机构(IANA)预先分配和定义的。

    • 例如,HTTP 协议使用端口号 80,HTTPS 协议使用端口号 443,FTP 协议使用端口号 21(控制连接)和 20(数据连接),SSH 协议使用端口号 22,SMTP(简单邮件传输协议)使用端口号 25 等。这些熟知端口号使得不同的网络服务在全球范围内能够被统一识别和使用。

  • 登记端口号(1024 - 49151)

    • 这些端口号通常用于不太常见的网络服务或者用户自定义的应用程序。如果一个应用程序想要使用这个范围内的端口号,一般需要向 IANA 进行登记。不过在实际应用中,很多应用程序在这个范围内使用端口号时并没有严格地进行登记。
    • 例如,一些企业内部开发的特定业务应用程序可能会使用这个范围内的端口号来进行通信。
  • 客户端口号(49152 - 65535)

    • 这些端口号主要是由客户端程序在发起通信时随机选择使用的。当客户端与服务器进行通信时,客户端会从这个范围内选择一个端口号来标识自己的应用程序进程。
    • 例如,当使用客户端软件(如即时通讯软件)与服务器进行通信时,客户端软件会随机从这个范围内选择一个端口号,用于接收服务器发送过来的消息。

端口号与应用程序的关联

应用程序在开发过程中或者安装配置时会指定使用特定的端口号来进行通信。对于服务器端应用程序,通常会绑定到一个固定的端口号(如将 Web 服务器绑定到 80 或 443 端口),这样客户端就可以通过这个已知的端口号来访问服务器。

对于客户端应用程序,在与服务器通信时,会动态地从客户端口号范围中选择一个端口号。当服务器发送数据返回给客户端时,就根据这个端口号来找到对应的客户端应用程序。例如,在一个网络通信场景中,服务器通过 IP 地址找到客户端主机,然后通过客户端选择的端口号找到对应的客户端应用程序来交付数据。

应用举例

![[应用举例1.png]]
![[应用举例2.png]]

  1. 用户在浏览器中输入网址:用户在 PC 上打开浏览器,并在地址栏中输入 www.porttest.net

  2. 发送DNS查询请求:用户的 PC(IP 地址为 192.168.0.1)向 DNS 服务器(IP地址为 192.168.0.2)发送 UDP 数据包。该数据包的源端口是 49152,目的端口是 53DNS 默认端口)。数据包中的内容是询问 www.porttest.net 对应的 IP 地址是什么?

  3. DNS服务器处理请求:DNS 服务器收到请求后,查找 www.porttest.net 对应的IP地址。

  4. DNS响应:DNS 服务器将找到的结果 www.porttest.net 对应的 IP 地址是192.168.0.3)封装成 UDP 数据包返回给用户的 PC。这个数据包的源端口是 53,目的端口是 49152

  5. 用户PC接收DNS响应:用户的 PC 接收到 DNS 响应,得知 www.porttest.net 对应的IP地址是 192.168.0.3

  6. 建立TCP连接:用户的 PC 使用 HTTP 协议与 Web 服务器(IP地址为 192.168.0.3)建立 TCP 连接。

  7. 获取网页内容:用户的 PC 从 Web 服务器下载网页内容并显示在浏览器中。

在这个过程中,涉及到的主要组件包括:

  • DNS服务器:用于将域名转换为IP地址。

  • Web服务器:提供网站内容的服务。

  • 交换机:负责在网络中转发数据包。

  • 用户PC:运行浏览器软件,发出请求并接收响应。

发送方的复用和接收方的分用

  • 复用: 在发送方,多个高层协议(如 UDPTCP)的数据被复用到同一个 IP 数据报中。

  • 分用: 在接收方,根据 IP 数据报的目的端口将数据分发到相应的高层协议(如 UDPTCP)。

![[发送方的复用和接收方的分用.png]]

  • 发送方

    1. 应用层: 应用程序生成应用报文。
    2. 传输层:
      • UDP: 将应用报文封装成 UDP 数据报,添加源端口和目的端口。
      • TCP: 将应用报文封装成 TCP 段,添加源端口和目的端口。
    3. 网络层: IP 协议将 UD P或 TCP 数据封装成IP数据报,添加源 IP 地址和目的 IP 地址。
    4. 链路层: 数据链路层将 IP 数据报封装成帧,进行物理传输。
  • 接收方

    1. 链路层: 接收帧并提取 IP 数据报。
    2. 网络层: 解析 IP 数据报,根据目的端口确定是 UDP 还是 TCP。
    3. 传输层:
      • UDP: 分离 UDP 数据报,传递给相应应用程序。
      • TCP: 分离 TCP 段,传递给相应应用程序。
    4. 应用层: 应用程序接收应用报文。

TCP/IP体系结构应用层常用协议,所使用的运输层协议和熟知端口号OSPF报文并不使用运输层的UDP或TCP进行封装,而是直接使用网际层的IP进行封装。

![[应用层常用协议.png]]

相关文章:

计算机网络:运输层 —— 运输层端口号

文章目录 运输层端口号的分类端口号与应用程序的关联应用举例发送方的复用和接收方的分用 运输层端口号的分类 端口号只具有本地意义,即端口号只是为了标识本计算机网络协议栈应用层中的各应用进程。在因特网中不同计算机中的相同端口号是没有关系的,即…...

linux下编译安装memcached

一、安装依赖库 Memcached依赖于一些系统库,在大多数Linux发行版中,需要安装libevent库。 Debian/Ubuntu系统 使用以下命令安装依赖库: sudo apt -y update sudo apt -y install libevent - devCentOS/RHEL系统 可以通过以下命令安装&am…...

最短路径生成树的数量-黑暗城堡

信息学奥赛一本通T1486-黑暗城堡 时间限制: 2s 内存限制: 192MB 提交: 18 解决: 9 题目描述 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度。 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建&#xf…...

将已有的MySQL8.0单机架构变成主从复制架构

过程: 把数据库做一个完全备份, 恢复到从节点上, 恢复后从备份的那个点开始往后复制,从而保证后续数据的一致性。 步骤: 修改 master 主节点 的配置( server-id log-bin )master 主节点 完全备份( mysqldump )master 主节点 创建…...

JSON.stringify的应用说明

前言 JSON.stringify() 方法将 JavaScript 对象转换为字符串,在日常开发中较常用,但JSON.stringify其实有三个参数,后两个参数,使用较少,今天来介绍一下后两个参数的使用场景和示例。 语法及参数说明 JSON.stringify()&#xf…...

pyflink datastream数据流ds经过一系列转换后转为table,t_env.from_data_stream(ds)

在 pyflink 处理数据流过程中,有时候需要将data_stream转为table,下面是正确的方式,即每一个算子(map,reduce, window)操作之后需要指定输出数据类型。 from pyflink.common.typeinfo import Types from pyflink.datastream import StreamEx…...

vxe-grid table 校验指定行单元格的字段,只校验某个列的字段

Vxe UI vue vxe-table 中校验表格行是非常简单的,只需要配置好校验规则,然后调用 validate 方法就可以自动完成校验,但是由于项目淡色特殊需求,在某个单元格的值修改后需要对另一个列的值就行校验,这个时候又不需要全部…...

【Java多线程】单例模式(饿汉模式和懒汉模式)

目录 单例模式的定义: 饿汉式--单例模式 定义: 案例: 优缺点: 懒汉式--单例模式: 定义: 1)懒汉式单例模式(非线程安全) 2)线程安全的懒汉式单例模…...

python 异步编程之协程

最近在学习python的异步编程,这里就简单记录一下,免得日后忘记。 首先,python异步实现大概有三种方式,多进程,多线程和协程;多线程和多进程就不用多说了,基本上每种语言都会有多进行和多线程的…...

现代密码学|古典密码学例题讲解|AES数学基础(GF(2^8)有限域上的运算问题)| AES加密算法

文章目录 古典密码凯撒密码和移位变换仿射变换例题多表代换例题 AES数学基础(GF(2^8)有限域上的运算问题)多项式表示法 | 加法 | 乘法X乘法模x的四次方1的乘法 AES加密算法初始变换字节代换行移位列混合轮密钥加子密钥&#xff08…...

算法沉淀一:双指针

目录 前言: 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言: 此章节介绍一些算法,主要从leetcode上的题来讲解&#xff…...

Word_小问题解决_1

1.第二页是空白的,但是删不掉 将鼠标弄到第二页最开始的地方打开段落设置行距为固定值0.7磅 2.表格中有文字进入了表格中怎么办 打开段落,将缩进改为0即可...

基于opencv制作GUI界面

可以基于cvui头文件实现一些控件操作&#xff0c;头文件及demo实例 这是一个demo main.cpp #include <opencv2/opencv.hpp> #define CVUI_IMPLEMENTATION #include "cvui.h"#define WINDOW_NAME "CVUI Hello World!"int main(void) {cv::Mat frame…...

微服务即时通讯系统的实现(客户端)----(2)

目录 1. 将protobuf引入项目当中2. 前后端交互接口定义2.1 核心PB类2.2 HTTP接口定义2.3 websocket接口定义 3. 核心数据结构和PB之间的转换4. 设计数据中心DataCenter类5. 网络通信5.1 定义NetClient类5.2 引入HTTP5.3 引入websocket 6. 小结7. 搭建测试服务器7.1 创建项目7.2…...

QT使用libssh2库实现sftp文件传输

本篇文章通过用户名和密码来连接服务器端,通过密匙连接服务器端可以参考另外一篇文章: https://blog.csdn.net/u012372584/article/details/143826199?sharetype=blogdetail&sharerId=143826199&sharerefer=PC&sharesource=u012372584&spm=1011.2480.3001.…...

【Linux】进程的优先级

进程的优先级 一.概念二.修改优先级的方法三.进程切换的大致原理&#xff1a;四.上下文数据的保存位置&#xff1a; 一.概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。 优先权高的进程有优先执行权利。配置进程优先权对多任务环…...

python实现十进制转换二进制,tkinter界面

目录 需求 效果 代码实现 代码解释 需求 python实现十进制转换二进制 效果 代码实现 import tkinter as tk from tkinter import messageboxdef convert_to_binary():try:# 获取输入框中的十进制数decimal_number int(entry.get())# 转换为二进制binary_number bin(de…...

电子应用设计方案-12:智能窗帘系统方案设计

一、系统概述 本设计方案旨在打造便捷、高效的全自动智能窗帘系统。 二、硬件选择 1. 电机&#xff1a;选用低噪音、扭矩合适的智能电机&#xff0c;根据窗帘尺寸和重量确定电机功率&#xff0c;确保能平稳拉动窗帘。 2. 轨道&#xff1a;选择坚固、顺滑的铝合金轨道&…...

力扣 回文链表-234

回文链表-234 const int N 1e55; int a[N];//定义一个整形的全局数组作为辅助数组存储链表反转前的值 class Solution { /*本题的解题思路是先将链表中每个值存储到辅助数组a中&#xff0c;然后反转链表&#xff0c; 最后&#xff0c;反转后链表的值和没反转之前的值&#xf…...

采样率22050,那么CHUNK_SIZE 一次传输的音频数据大小设置多少合适?unity接收后出现卡顿的问题的思路

在采样率为22050的情况下&#xff0c;选择合适的 CHUNK_SIZE 主要取决于 Unity 接收和处理音频数据的效率。以下是设置 CHUNK_SIZE 的一些建议&#xff1a; 计算 CHUNK_SIZE&#xff1a;音频的传输数据量可以通过公式 CHUNK_SIZE 采样率 * 传输间隔秒数 * 每样本字节数 * 声道…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...

HTML中各种标签的作用

一、HTML文件主要标签结构及说明 1. <&#xff01;DOCTYPE html> 作用&#xff1a;声明文档类型&#xff0c;告知浏览器这是 HTML5 文档。 必须&#xff1a;是。 2. <html lang“zh”>. </html> 作用&#xff1a;包裹整个网页内容&#xff0c;lang"z…...