当前位置: 首页 > 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]]

http://www.lryc.cn/news/486131.html

相关文章:

  • linux下编译安装memcached
  • 最短路径生成树的数量-黑暗城堡
  • 将已有的MySQL8.0单机架构变成主从复制架构
  • JSON.stringify的应用说明
  • pyflink datastream数据流ds经过一系列转换后转为table,t_env.from_data_stream(ds)
  • vxe-grid table 校验指定行单元格的字段,只校验某个列的字段
  • 【Java多线程】单例模式(饿汉模式和懒汉模式)
  • python 异步编程之协程
  • 现代密码学|古典密码学例题讲解|AES数学基础(GF(2^8)有限域上的运算问题)| AES加密算法
  • 算法沉淀一:双指针
  • Word_小问题解决_1
  • 基于opencv制作GUI界面
  • 微服务即时通讯系统的实现(客户端)----(2)
  • QT使用libssh2库实现sftp文件传输
  • 【Linux】进程的优先级
  • python实现十进制转换二进制,tkinter界面
  • 电子应用设计方案-12:智能窗帘系统方案设计
  • 力扣 回文链表-234
  • 采样率22050,那么CHUNK_SIZE 一次传输的音频数据大小设置多少合适?unity接收后出现卡顿的问题的思路
  • 网络初识--Java
  • K8S单节点部署及集群部署
  • GPIO相关的寄存器(重要)
  • OpenCV基础
  • 两行命令搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),含完整的 Docker 安装步骤
  • Redis做分布式锁
  • lambdaQueryWrapper详细解释
  • 【工控】线扫相机小结 第三篇
  • golang中的init函数
  • 理解和选择Vue的组件风格:组合式API与选项式API详解
  • Java基础——高级技术