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

文章目录

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

运输层端口号的分类

端口号只具有本地意义,即端口号只是为了标识本计算机网络协议栈应用层中的各应用进程。在因特网中不同计算机中的相同端口号是没有关系的,即相互独立。另外,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.xdnf.cn/news/13028.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【C++练习】使用C++编写程序计算π的近似值

题目:使用C编写程序计算π的近似值 描述: 编写一个C程序,使用一个特定的数学公式来计算圆周率(π)的近似值。该程序定义了一个函数calculatePi(),该函数通过一个迭代算法和一个涉及反正切函数(…

Hook小程序

下载: https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python 配置: pip install -r requirements 实现: 开启小程序开发者模式,类似浏览器F12 效果: 使用: 退出微信,进入安装的目录…

如何在pycharm中 判断是否成功安装pytorch环境

1、在电脑开始端,找到 2、打开后 在base环境下 输入conda env list 目前我的环境中没有pytorch 学习视频:【Anaconda、Pytorch、Pycharm到底是什么关系?什么是环境?什么是包?】https://www.bilibili.com/video/BV1CN411s7Ue?vd_sourcefad0750b8c6…

AI陪伴走热,网易云信“融合通讯+AI”新方案发布!附场景App及源码

信息秒回、不会失联、724h 情感陪伴、随时提供情绪价值......在 AI 能力越来越强大的今天,我们开始有了“AI 助手”、“AI 搭子”,甚至开始谈起“AI 男友/女友”,AI 的角色早已超越了简单的生产力工具,它正深入到我们生活的方方面…

力扣 LeetCode 704. 二分查找(Day1:数组)

解题思路: 二分查找主要分为[ left , right ]左闭右闭和[ left , right )左闭右开两种 此处采取[ left , right ]左闭右闭写法 注意: 1. right的初始化取值 2. while中取等 3. right mid -1 ; class Solution {public int search(int[] nums, i…

java-AOP编程示例

SpringBoot工程,有不懂的留言or Kimi一下 LogAspect.java package com.xxx.javaaopdemo.Aspect;import com.xxx.javaaopdemo.LogAnnotation; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang…

Kafka入门:Java客户端库的使用

在现代的分布式系统中,消息队列扮演着至关重要的角色,而Apache Kafka以其高吞吐量、可扩展性和容错性而广受欢迎。本文将带你了解如何使用Kafka的Java客户端库来实现生产者(Producer)和消费者(Consumer)的基…

使用 npm 安装 Yarn

PS E:\WeChat Files\wxid_fipwhzebc1yh22\FileStorage\File\2024-11\spid-admin\spid-admin> yarn install yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后…

力扣617:合并二叉树

给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠&#…

谷歌浏览器支持的开发者工具详解

谷歌浏览器(Google Chrome)是全球最受欢迎的网页浏览器之一,它不仅提供了快速、安全的浏览体验,还为开发者提供了强大的开发者工具。本文将详细介绍如何使用谷歌浏览器的开发者工具,并解答一些常见问题。(本…

HTB:OpenAdmin[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 继续使用nmap对靶机22、80端口进行脚本、服务扫描 使用Dirbuster对靶机网页路径进行递归扫描 ​编辑 尝试在searchsploit中搜索改WebAPP漏洞 横向移动(其实没有横) 启动Metasploit 特权提升 USER_…

IO作业5

设置双信号实现交替生产者线程和消费者线程 #include <myhead.h> int n0; pthread_mutex_t fastmutex;//定义互斥锁 pthread_cond_t cond;//定义条件变量 pthread_cond_t cond2; void *product() {int i;for(i0;i<10;i){n;printf("我生产了一台特斯拉n%d\n"…

Web3.0安全开发实践|BNB链安全开发,这10大实用tips一定要收藏

BNB Chain是Web3世界中最受欢迎的区块链之一&#xff0c;其费用合理、交易迅速以及项目生态系统丰富几大原因吸引了广大用户。与任何的区块链都一样&#xff0c;BNB Chain上的开发者在开发过程中首先考虑的应该是安全问题&#xff1a;因为任何资金的损失都会导致用户对协议及平…

QT开发笔记之小知识

QCoreApplication::aboutToQuit 主事件循环退出前发出的信号&#xff0c;是程序退出前等待QT线程退出回收资源的神器。 官方帮助文档 [signal] void QCoreApplication::aboutToQuit() 该信号在应用程序即将退出主事件循环时发出&#xff0c;例如&#xff1a;当事件循环级别降至…

插入排序(C语言)

直接插入排序的基本思想&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 一、步骤 1.给定一个乱序的数组&#xff0c;如 从第一个元素开始排序&#xff0c;当只…

文心一言 VS 讯飞星火 VS chatgpt (389)-- 算法导论25.1 2题

二、为什么要求对于所有的 1 ⩽ i ⩽ n 1⩽i⩽n 1⩽i⩽n&#xff0c;有 w i i 0 w_{ii}0 wii​0 &#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在许多数学和计算应用中&#xff0c;要求矩阵 W W W 的对角线元素 w i i 0 w_{ii} 0 wii​0 是…

Java多线程详解⑦(全程干货!!!)内存可见性 || volatile || JMM || wait notify notifyAll

这里是Themberfue 在上一节中&#xff0c;我们讨论了死锁的概念&#xff0c;产生的场景 &#xff0c;产生的必要条件...... 内存可见性 我们先来看一段百度百科关于 "内存可见性" 的解释 "内存可见性" 就是造成线程安全问题的原因之一 如果是单纯地看…

安装双系统(linux操作系统(debian)安装)

参考博客&#xff1a;戴尔服务器安装Debian11过程_戴尔t130安装debian-CSDN博客 一.腾出一个50G以上的空间&#xff0c;准备装操作系统 1.底部搜索计算机管理&#xff0c;选择磁盘管理 本人已预留400GB磁盘空间安装ubuntu系统&#xff0c;若没有预留空间&#xff0c;则可以选…

心系天下三星W25:记录盛世影像 见证华彩时光

悠然岁月中&#xff0c;被定格的瞬间总是历久弥新。心系天下三星W25以传世经典之姿跃然于掌中&#xff0c;将精致外形与精湛工艺合二为一&#xff0c;彰显出持有者的高雅气质。同时&#xff0c;强悍的影像系统则使之成为光影艺术的记录者&#xff0c;无论是捕捉人生风华&#x…

修改msyql用户密码及更新mysql密码策略

查看mysql中初始的密码策略 SHOW VARIABLES LIKE validate_password% 2. 修改默认密码策略 -- 0 或者 LOW 只验证长度-- 1 或者 MEDIUM 验证长度、数字、大小写、特殊字符-- 2 或者 STRONG 验证长度、数字、大小写、特殊字符、字典文件set global validate_password.policy0;…