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

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

目录

网络端口的定义及作用

运输层的作用 

运输层的两个主要协议

用户数据报协议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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《计算机网络-期末模拟卷》
  • Android如何高效的加载大型位图
  • ELK基础搭建
  • 22.计算球体积
  • 二叉树的介绍
  • 2024.8.26
  • 景联文科技:专业人像采集服务,助力人像采集在多领域应用
  • npm阿里云制品仓库
  • C++竞赛初阶L1-14-第六单元-数组(31~33课)542: T456472 数组逆序重存放
  • 使用 ECharts 进行数据可视化
  • Python单例模式:深入解析与应用
  • vue+uniapp
  • 如何使用ssm实现ssm框架的购物网站+vue
  • SpringBoot项目多线程实现定时任务-只需要三步
  • 通过Python绘制不同数据类型适合的可视化图表
  • 【前端学习】-粗谈选择器
  • Docker容器管理
  • Java知识点总结(JavaIO-打印流)
  • markdown编辑器简评
  • Node + FFmpeg 实现Canvas动画导出视频
  • Sublime text 3 3103 注册码
  • 分布式熔断降级平台aegis
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 理清楚Vue的结构
  • 如何编写一个可升级的智能合约
  • 如何胜任知名企业的商业数据分析师?
  • 使用 @font-face
  • 一起参Ember.js讨论、问答社区。
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # centos7下FFmpeg环境部署记录
  • # 透过事物看本质的能力怎么培养?
  • (06)Hive——正则表达式
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (十一)图像的罗伯特梯度锐化
  • (四)JPA - JQPL 实现增删改查
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ./configure,make,make install的作用(转)
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core使用ef 6
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net MVC + EF搭建学生管理系统
  • .NET多线程执行函数
  • ::
  • @Builder用法
  • @EnableWebMvc介绍和使用详细demo
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku