【嵌入式开发之网络编程】TCP端口和UDP端口

news2024/11/15 15:34:39

目录

网络端口的定义及作用

运输层的作用 

运输层的两个主要协议

用户数据报协议UDP (User Datagram Protocol)

传输控制协议TCP (Transmission Control Protocol) 

运输层的端口及分类 

按照端口号分类

按照协议类型分类

BSD端口 


网络端口的定义及作用

在网络技术中,端口(port)包括逻辑端口(logic port)和物理端口(physical port)两种类型。
物理端口是用于连接物理设备之间的接口,如ADSL Modem、集线器、交换机、路由器上用于连接其他网络设备的接口。
逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。

本文所说的端口是指逻辑端口。

端口的主要作用是实现网络服务的多路复用。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务。当数据包从客户端发送到服务器时,包含目标端口号,服务器根据端口号将数据包路由到相应的服务程序进行处理,从而确保数据能够准确无误地送达目的地。

运输层的作用 

进行通信的实体是在主机中的进程,是这台主机的一个进程和另一台主机的进程在交换数据。因此,两台主机进行通信就是两台主机的应用进程相互通信。虽然IP协议进行分组分发给目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。所以常说,端到端的通信就是应用进程之间的通信。 

运输层具有复用和分用的功能:

复用:是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据。主机A的AP1进程和AP2进程都可以使用运输层协议进行传递数据。

分用:是指接收放在剥去报文的首部后能后把这些数据正确交付目的应用进程。在主机B中,同一个运输层协议将数据分别交付给进程AP3和进程AP4。

网络技术中有一个关键问题,运输层怎么明确指明哪些数据是来自哪些进程,哪些数据又要传递给哪些进程?

运输层具有屏蔽功能,运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 

运输层的两个主要协议

两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。 面向连接的协议TCP传送的数据单位协议是 TCP 报文段 (segment)。无连接的协议UDP传送的数据单位协议是UDP报文或用户数据报

用户数据报协议UDP (User Datagram Protocol)

用户数据报协议UDP传送数据之前不需要先建立连接。

收到UDP报后,不需要给出任何确认。

UDP协议不提供可靠交付,但是一种最有效的工作方式。 

传输控制协议TCP (Transmission Control Protocol) 

传输控制协议TCP提供可靠的、面向连接的运输服务。

不提供广播或多播服务。

但TCP协议开销较多。 

运输层的端口及分类 

为了解决上面哪些数据来自哪些进程,哪些收据又要传送给哪些进程的问题,我们首先要考虑以下几个问题:

  • 进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程。
  • 我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。
  • 有时我们会改换接收报文的进程,但并不需要通知所有的发送方。

为了解决这些问题,在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。把端口设为通信的抽象终点。 

这些端口用一个16位端口号进行标志,允许有 65,535 个不同的端口号。端口号只具有本地意义,只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号没有联系。A主机的8888端口和B主机的8888端口没有什么关系。

由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址,而且还要知道对方的 端口号。

按照端口号分类

0~49151是服务端使用的端口号,49152~65535是客户端使用的端口号。 

  • 公认端口(熟知端口):0~1023。这些端口号是全球通用端口号,由IANA负责分配,它们紧密绑定于一些服务,通常这些端口的通讯明确表明了某种服务的协议,如:80端口对应与HTTP通信,21端口绑定与FTP服务,25端口绑定于SMTP服务,135端口绑定与RPC(远程过程调用)服务。
  • 注册端口(登记端口):1024~49151。这些端口号在IANA登记,它们松散的绑定于一些服务,也就是说有许多服务绑定于这些端口,这些端口同样用于其他许多目的,如:许多系统处理端口从1024开始
  • 动态或私有端口(短暂端口):49152~65535。这些端口号是客户端使用的端口号,在通信结束后,被系统收回。理论上,不应为服务分配这些端口,通常机器从1024开始分配动态端口。例外:SUN的RPC端口从32768开始。

按照协议类型分类

按协议类型划分可分为TCP端口、UDP端口、IP端口、ICMP。

  • TCP端口:即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP的21端口,Telnet的23端口,SMTP的25端口,HTTP的80端口。

  • UDP端口:即用户数据报协议端口,无需在客户端和服务器端建立连接,安全性得不到保障。常见的DNS的53端口,SNMP(简单网络管理协议)的161端口,QQ使用的8000和4000端口。

  • 保留端口:UNIX有保留端口号的概念,只有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器认证的一部分。

在这里,大家还要思考一个问题:TCP和UDP端口能不能同时使用同一端口?

其实,尽管它们的操作在同一个网络层级,但TCP和UDP是完全独立的协议,拥有不同的端口号空间。这意味着TCP和UDP可以使用相同的端口号,而不会发生冲突。

熟知的端口号

该部分参考【计算机网络】端口详解【概念、作用、分类、常见端口】 

BSD端口 

  • 0不使用,1-1023为系统端口,也叫BSD保留端口。
  • 0-1023: BSD保留端口,也叫系统端口,这些端口只有系统特许的进程才能使用
  • 1024~65535为用户端口,其中:      
    • 1024-5000: BSD临时端口,一般的应用程序使用1024到4999来进行通讯;      
    • 5001-65535:BSD服务器(非特权)端口,用来给用户自定义端口。
  • IANA建议49152至65535作为“动态或私有端口”。 
  • 许多Linux内核使用32768至61000范围。

配置文件/proc/sys/net/ipv4/ip_local_port_range有当前系统设定。

:~$ cat /proc/sys/net/ipv4/ip_local_port_range
32768	60999

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055281.html

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

相关文章

低代码平台的优势与挑战:现代开发的革新之路

在数字化转型的浪潮中,低代码平台(Low-Code Platforms)成为了开发者和企业的重要工具。低代码平台通过可视化界面和拖拽式功能,简化了应用程序的开发过程,使得即使是没有编程背景的用户也能够构建功能丰富的应用。然而…

ubuntu18.04下安装nvidia3090显卡驱动

前言:之前安装过4090的显卡,但是是使用20.04直接在第三方驱动里面安装的,这回使用的是18.04,版本估计是21年以前的,附加驱动直接没有,整整卡了两天,最后再查询多篇资料后最终安装好,…

软考-软件设计师 (计算机网络习题)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Impala 与 Hive 的比较

Impala 与 Hive 的关系 impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive&…

​高德离线API如何加载高清卫星影像

我们有客户遇到这样一个问题,现有平台基于高德API开发,但希望将地图更新为高清卫星影像。 我估计你可能也会遇到这个问题,因此特撰此文与大家分享。 项目背景 高德API有着比较广泛的用户群体,有不少系统为了业务数据的呈现&…

大数据应用整理

1.架构划分 1.1.数据抽取转换加载层(ETL) 从源系统抽取、转换、加载到所需的源数据,存储到系统的数据仓库中。ETL的设计和实施占整体工作的50%以上。ETL层的主要职责是将原始数据源中的数据提取出来,经过清洗、转换等处理后&…

小白学AI,新手也能轻松掌握的LLM Agent工作原理基础知识全览!

摘要 本文深入解释了大型语言模型(Large Language Model,LLM)代理(Agent)的工作原理,详细阐述了它们的结构、能力和应用。 摘要 LLM代理是一种先进的数字助手,它们超越了传统的聊天机器人&am…

Postman数据驱动之CSV文件和JSON文件的处理

数据驱动 数据驱动:通过在测试过程中使用不同的输入数据来执行相同的测试脚本或流程。 适用场景:当一个接口需要测试多个场景用例(正例、反例),可以使用数据驱动的形式实现。 CSV文件 CSV(Comma-Separ…

verilog实现STFT

短时傅里叶变换(STFT, Short Time Fourier Transform),是处理采样数据、获取信号时频特征的一种常用方法。然而其消耗的计算资源较为庞大,在数据采集设备全速运行时,若在上位机进行 STFT 的计算,则很难做到…

vue2使用天地图

需求:用vue2使用天地图展示对应点位数据以及开发中出现的问题等,其实天地图的写法和百度地图差不多 注意!!!天地图的接口不稳定,时常报错418,官网也是一样的情况,推荐还是使用百度或…

一种基于物联网(IoT)的生物多样性监测系统

目录 摘要 第一部分:引言 第二部分:相关工作 第三部分:贡献 第四部分:提出的系统架构 第五部分:BN使用的消息框架 第六部分:系统实施 第七部分:实验场景和结果 第八部分:结…

游戏开发之性能优化

游戏开发中的性能优化是一个复杂且多方面的过程,涉及到多个层面的改进和调整。以下是一些主要的优化技巧和方法: 代码优化: 缓存计算结果:对于那些耗费大量CPU计算而计算结果无需每帧变化的逻辑,使用缓存可以显著提高性…

Java——反射(4/4):反射的作用、应用场景(案例需求、实现步骤、代码实现)

目录 作用 应用场景 案例需求 实现步骤 代码实现 作用 基本作用:可以得到一个类的全部成分然后操作。可以破坏封装性。最重要的用途是:适合做Java的框架,基本上,主流的框架都会基于反射设计出一些通用的功能。 通过反射能够…

Springboot+vue 建筑资质证书管理系统

建筑企业资证管理系统,简称证书管理软件,基于springbootvue开发,数据库采用mysql,。以建筑企业证书管理为核心,包含投证书管理、证书过期提醒,辅助建筑企业高效完成证书管理、人员信息、投标经营活动等管理…

全功能知识付费小程序源码系统 支持视频课程、音频课程、图文课程 附带代码包以及搭建部署教程

系统概述 “全功能知识付费小程序源码系统”是一款专为知识创作者、教育机构及企业内训部门设计的全方位解决方案。该系统基于当前最流行的小程序技术构建,无需下载安装,用户只需通过微信等社交平台即可轻松访问,极大地降低了使用门槛。同时…

CentOS 7 安装流程详细教程

目录 前言1. CentOS 7 概述2. 安装环境准备2.1 硬件要求2.2 安装介质准备 3. CentOS 7 安装步骤3.1 引导安装程序3.2 选择语言和键盘布局3.3 配置安装源和软件包3.4 配置分区3.5 设置网络和主机名3.6 设置时间和日期3.7 设置 root 密码和创建用户3.8 开始安装并完成配置 4. 安装…

8-11章节复习总结

文章目录 数据库技术三级模式两级映射数据设计数据模型E-R模型关系模型练习题 关系代数关系代数运算符练习题 SQL语句练习题 数据库控制练习题 数据库故障和备份函数依赖函数依赖的公理系统键与约束 规范化第一范式1NF第二范式2NF第三范式3NF练习题 模式分解练习题 标准化与知识…

R语言统计分析——回归诊断2

参考资料:R语言实战【第2版】 R语言的car包提供的大量函数,大大增强了拟合和评价回归模型的能力。如下: 函数目的qqPlot()分位数比较图durbinWatsonTest()对误差自相关性做Durbin-Watson检验crPlots()成分与残差图ncvTest()对非恒定的误差方…

如何构建Java SpringBoot+Vue的宽带业务管理系统:一步一脚印教程

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

贝叶斯推理:分步指南

一、说明 让我们深入了解贝叶斯推理的迷人世界。我将通过易于遵循的示例向您介绍其实际应用。 贝叶斯推理为统计分析提供了一个强大而灵活的框架,特别是在存在不确定性和先验知识的情况下。通过结合先前的分布并使用贝叶斯定理根据新证据更新这些信念,贝…