【嵌入式开发之网络编程】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

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

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

相关文章

《通义千问AI落地—下》:WebSocket详解

一、前言 文本源自 微博客 且已获授权,请尊重版权。 《通义千问AI落地——下篇》如约而至。Websocket在这一类引用中,起到前后端通信的作用。因此,本文将介绍websocket在这类应用场景下的配置、使用、注意事项以及ws连接升级为wss连接等;如下图,本站已经使用了wss连接…

iphone异常问题常用修复方法

作为智能手机的领军者,iPhone凭借其卓越的性能和稳定的系统赢得了全球用户的青睐。然而,就像任何电子设备一样,iPhone在使用过程中也难免会遇到各种异常问题,如卡顿、无法充电、应用闪退等。这些问题虽然令人头疼,但大…

防范小程序隐私合规风险,筑牢用户信任防线

随着国内APP软件生态的成熟,依托于头部APP的小程序逐渐成为零售、娱乐、出行等行业必选的获客渠道之一。较低的开发成本和成熟的用户营销功能,令小程序的数量在过去几年呈指数级增长。截止2023年,头部APP内集成的小程序总量已超千万。然而&am…

C语言 之 memcpy函数的内存重叠问题 及解决该问题的思路

文章目录 函数原型:例子: 解决方式整体思路如下: 内存重叠问题主要是使用函数memcpy的时候会发生的 函数原型: void * memcpy ( void * destination, const void * source, size_t num);这个函数能够在source指向的空间中拷贝nu…

嘉立创EDA个人学习笔记2(设计流程及绘制元件)

前言 本篇文章属于嘉立创EDA的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 【教程】零基础入门PCB设计-国一学长带你学立创EDA专业版 全程保姆…

黑神话:悟空-配置推荐

显卡推荐(按类别整理) 1. GTX 10系列、GTX 16系列: 如果希望体验光线追踪,建议根据预算升级到RTX 40系列显卡。对于1080p分辨率,至少需要RTX 4060才能流畅运行。 2. RTX 20系列: RTX 2060、RTX 2070&#…

-Wl,-rpath= 编译器链接器指定动态库路径 与 LD_LIBRARY_PATH

实例先行, 1,情景 三互相依赖的小项目: (1)libbottom.so,无特别依赖,除系统文件 (2)libtop.so,依赖libbottom.so (3)app 可执行程…

buuctf [HDCTF2019]Maze

前言:做题笔记。 常规 下载 解压 查壳 脱壳后用32IDA Pro打开。 得,迷宫类型的题目。(字符串有说。) 咳,此前思路对半分不行了。。。 合理猜测步数为:14。 那可以看看7 * 10的迷宫类型。(手动猜测的时候去取倍数如:0 2…

冷硬缓存——利用缓存滥用绕过 RPC 接口安全

介绍 MS-RPC 是 Windows 操作系统的基石之一。早在 20 世纪 90 年代发布,它就已扎根于系统的大部分部分。服务管理器?RPC。Lsass?RPC。COM?RPC。甚至一些针对域控制器的域操作也使用 RPC。鉴于 MS-RPC 已经变得如此普遍,您可以预料到它已经受到严格的审查、记录和研究。 …

【Redis】有序集合(Zset)详解及实际应用场景分析:从命令操作到内部编码

目录 Zset 有序集合普通命令集合间操作命令⼩结内部编码使⽤场景 Zset 有序集合 有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数&…

Qt 0821作业

一、思维导图 二、优化聊天室代码 服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QMessageBox> #include <QTcpSocket> #include <QList> #include <QNetworkInterface>QT_BEGIN_…

系统编程-lvgl

带界面的MP3播放器 -- lvgl 目录 带界面的MP3播放器 -- lvgl 一、什么是lvgl&#xff1f; 二、简单使用lvgl 在工程中编写代码 实现带界面的mp3播放器 main.c events_init.c events_init.h 补充1&#xff1a;glob函数 补充2&#xff1a;atexit函数 一、什么是lvgl&a…

通过C# 读取PDF页面大小、方向、旋转角度

在处理PDF文件时&#xff0c;了解页面的大小、方向和旋转角度等信息对于PDF的显示、打印和布局设计至关重要。本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性。 文章目录 C# 读取PDF页面大小&#xff08;宽度、高度&#xff09;C# 判断PDF页面方向C# 检测PDF页面…

31套科技风PPT模版免费下载

目录 资源名称&#xff1a;31套科技风PPT模板合集资源简介&#xff1a;部分展示&#xff1a;适用人群&#xff1a;资源内容&#xff1a;使用指南&#xff1a;资源下载链接&#xff08;免费&#xff0c;已设置0个积分下载&#xff09; 资源名称&#xff1a;31套科技风PPT模板合集…

Spring + Boot + Cloud + JDK8 + Elasticsearch 单节点 模式下实现全文检索高亮-分页显示 快速入门案例

1. 安装elasticsearchik分词器插件 sudo wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.13.4.zip sudo mkdir -p ./es_plugins/analysis-ik sudo mkdir ./es_data sudo unzip elasticsearch-analysis-ik-8.13.4.zip -d ./es_plugins/a…

WIFI 频段及信道简介

一、WiFi 三频AP规划信道时&#xff0c;建议分别采用2.4G、5.2G、5.8G频段可用信道。 2.4G频段&#xff1b;5.2G频段&#xff1b;5.8G频段。 1、中国5G WiFi频段 5.8GHz频段&#xff0c;中国开放只有149、153、157、161、165这5个信道&#xff1b; 其中可支持一组80MHz信道…

【ACM出版,高录用EI快检索】第七届计算机信息科学与人工智能国际学术会议(CISAI 2024,9月6-8)

第七届计算机信息科学与人工智能国际学术会议(CISAI 2024) 将于2024年09月6-8日在中国浙江-绍兴举行。 计算机信息科学与人工智能国际学术会议的主题主要围绕“信息科学”与“人工智能”的最新研究展开&#xff0c;旨在荟聚世界各地该领域的专家、学者、研究人员及相关从业人员…

C++—八股文总结(25秋招期间一直更新)

1、const 1.1 指针常量和常量指针 说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么&#xff0c;有什么特点。 const int *aint const *a; //可以通过 a 访问整数值&#xff0c;但不能通过 a 修改该整数的值&#xff0c;指针本身是…

Rustrover、IDEA 的 Rust 类型不显示(已解决)

关键词&#xff1a;rustrover 类型不显示&#xff0c;rustrover 不显示类型&#xff0c;IntelliJ IDEA Rust 类型不显示&#xff0c;IntelliJ IDEA Rust 不显示类型 若移动端访问不佳&#xff0c;请使用 –> Github版 背景 博主手欠&#xff0c;使用 IntelliJ IDEA 时&am…

mysql中出现错误1138-Invalid use of NULL value

问题&#xff1a;1138-Invalid use of NULL value 解决&#xff1a; 问题是当前字段中&#xff0c;有null的值&#xff0c;简单来说就是&#xff0c;你表里有空值&#xff0c;不能设置不为空&#xff01;&#xff01;&#xff01; 把空的值删掉重新设计就好了