0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP和UDP可以同时绑定相同的端口吗?

亿佰特物联网应用专家 2023-02-06 11:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TCP和UDP可以同时绑定相同的端口吗?TCP和UDP可以同时绑定相同的端口吗?解答这个问题之前,我们需要先来了解什么是TCP和UDP,什么又是网络端口。0754a7a0-a3f1-11ed-ad0d-dac502259ad0.pngTCP与UDP介绍
TCP和UDP是IP(Internet Protocol)的独立的两个协议,他们都工作在OSI模型中的网络层。其中TCP和UDP最大的区别就是面向连接和面向无连接。
TCP当需要传输的数据的可靠性非常重要的时候,我们一般使用TCP进行传输,因为TCP协议传输的数据是按照顺序依次传输。如果数据接收方未收到发送方传输的数据,TCP会在特定时间之后重新发包。这就是我们常说的丢包重传机制,还有就是拥塞控制、流量控制等,TCP的可靠性正是因为有这些特性。
UDPUDP(User Datagram Protocol)是一种面向无连接的服务,UDP的数据将不像是TCP那样保证按序传输,接收方无论收没收到数据都不会重传,因此UDP相对于TCP有更低的延迟。在时间优先级高于数据可靠性的应用中,UDP更为常用,例如平时使用的视频通话、网络游戏等。因为对于这些应用来说,时间比数据的一致性更为重要。0769b9b0-a3f1-11ed-ad0d-dac502259ad0.png什么是网络端口?端口有什么作用?
我们的电脑上有许多的通信程序,当我们的电脑收到数据包之后,数据包是如何精准的分配至不同的应用的呢?我们可以这样理解,在网络中的IP地址相当于我们现实生活中的小区名,端口号就像是具体的门牌号。07788ae4-a3f1-11ed-ad0d-dac502259ad0.png端口的作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的进程。为了对端口进行区分,将每个端口进行了编号,这就是端口号。当我们将数据从一台设备发送到另一台设备时,它会转到特定的 TCP 或 UDP 端口,具体取决于我们用于通信的协议。
078cea5c-a3f1-11ed-ad0d-dac502259ad0.pngTCP和UDP的Socket可以绑定同一个端口吗?
TCP与UDP服务端网络都会调用bind绑定端口。

079e8852-a3f1-11ed-ad0d-dac502259ad0.jpg

TCP网络编程


07b6dc72-a3f1-11ed-ad0d-dac502259ad0.jpg

UDP 网络编程

TCP 和 UDP 端口彼此不相关。TCP 端口由 TCP 堆栈解释,而 UDP 堆栈解释 UDP 端口。端口是多路复用连接的一种方式,以便多个设备可以连接到一个节点。因此,从技术上讲,更高级别的协议可以使用相同或不同的 TCP 和 UDP 端口号。另一方面,一台计算机可以同时使用相同的 TCP 和 UDP 端口号与两个不同的服务进行通信。

07c6c0c4-a3f1-11ed-ad0d-dac502259ad0.png

如上图, TCP/UDP 各自的端口号是相互独立的, TCP 有一个 80 号端口,UDP 也可以拥有一个 80 号端口,两者并不冲突。所以,TCP 和 UDP 是可以同时绑定相同的端口的。TCP 和 UDP 传输协议,在内核中是由两个完全独立的软件模块实现的。当主机收到数据包后,可以在 IP 包头的“协议号”字段知道该数据包是 TCP还是UDP,所以可以根据这个信息确定送给哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的报文根据“端口号”确定送给哪个应用程序处理。因此, TCP/UDP 各自的端口号也相互独立,互不影响。

客户端的端口可以重复使用吗?只要客户端连接的不是相同的服务器,内核是允许端口重复使用的。TCP 连接由四元组(源IP地址,源端口,目的IP地址,目的端口)唯一确认的,四元组其中任何一个元素改变,就表示不同的 TCP 连接。假如客户使用端口1与服务器A建立了连接,客户端也可以使用端口1与服务器B建立连接,即使客户端的端口号相同,但因四元组信息发生变化,并不会导致连接冲突。多个 TCP 服务进程可以绑定同一个端口吗?若多个TCP服务进程同时绑定相同的IP地址和端口,那么执行bind() 时候就会报错“Address already in use”;若TCP服务进程只是绑定相同的端口,但绑定的IP地址不同,那么则不会报错。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1418

    浏览量

    83015
  • UDP
    UDP
    +关注

    关注

    0

    文章

    331

    浏览量

    35212
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问TCPUDP 可以使用同一个端口吗?

    TCPUDP 可以使用同一个端口吗?
    发表于 12-03 08:01

    以太网通讯在FPGA上的实现

    的安全。UDP数据格式如下图所示: TCP协议是面向连接的、可靠的流协议,提供可靠的通信传输。TCP数据包包括源、目标端口号字段、顺序号字段、确认号字段、头部长度字段、标志位
    发表于 10-30 07:45

    NuMicro®系列微控制器中具有相同模块的ADC的每个通道是否可以同时采样?

    NuMicro®系列微控制器中具有相同模块的ADC的每个通道是否可以同时采样?
    发表于 08-26 08:08

    TC3XX 的端口可以同时被 EvADC 和 DSADC 用于 ADC 转换吗?

    1、TC3XX 的端口可以同时被 EvADC 和 DSADC 用于 ADC 转换吗? 例如,TC36X系列的AN1引脚 2、同时重新分配同一个引脚,是否会影响EVAADC和DSADC
    发表于 08-07 08:19

    【嘉楠堪智K230开发板试用体验】网络收发信息

    /IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议(通常是TCPUDP),本地主机的IP地址,本地进程的协议端口,远地主机的IP地址
    发表于 07-13 08:13

    在KaihongOS应用开发中,如何利用Socket进行数据传输

    。 创建一个 TCPSocket 连接,返回一个 TCPSocket 对象。 (可选)订阅 TCPSocket 相关的订阅事件。 绑定 IP 地址和端口端口可以指定或由系统随机分配。
    发表于 05-08 07:25

    生成的以太网帧不是IEEE802.1CB (FRER)中的UDP/0x800,为什么?

    = 0x112233445566 掩码 = 0x0000FFFFFFFFFFFFF SRCPORT = 4 DESTPORT = 端口 1 端口 2 TAGPORTS = 端口 1 端口
    发表于 03-26 08:01

    《DNESP32S3使用指南-IDF版_V1.6》第五十二章 UDP实验

    第五十二章 UDP实验 对于lwIP的Socket的使用方式,它与文件操作非常相似。在文件操作中,我们首先打开文件,然后进行读/写操作,最后关闭文件。在TCP/IP网络通信中,也存在着相同的操作流程
    发表于 02-28 09:59

    TCP协议的端口号及其配置

    or private ports) :49152-65535,这些端口号通常不由任何服务固定使用,可以由任何应用程序临时使用。 2. 端口号的配置 端口号的配置涉及到操作系统的网络
    的头像 发表于 01-22 10:01 3824次阅读

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP窗口大小是衡量
    的头像 发表于 01-22 09:52 1456次阅读

    TCP协议与UDP协议的区别

    UDP(用户数据报协议) : 无连接 :UDP不建立连接,数据可以直接发送,不需要任何握手过程。 不可靠性 :UDP不保证数据的可靠传输,数据包可能会丢失,不会重传。 2. 数据传
    的头像 发表于 01-22 09:44 1741次阅读

    Web端TCP/UDP测试工具!小白必学~

    测试工具作为TCP server进行测试。 ▼   TCP测试示例   ▼ 01. 打开TCP/UDP web测试工具,点击【打开TCP】按
    的头像 发表于 01-08 18:17 1982次阅读
    Web端<b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>测试工具!小白必学~

    TCP三次握手与UDP的区别

    在计算机网络中,数据传输的可靠性和效率是两个关键因素。为了满足不同的应用需求,设计者们开发了多种传输层协议。其中,TCP(传输控制协议)和UDP(用户数据报协议)是最常用的两种。它们在数据传输机制
    的头像 发表于 01-03 17:35 1216次阅读

    Android IC读卡器UDP通信项目

    ()); Recv.append(\"UDP端口端口可能已被占用!\\\\n\\\\n\"); } UDPServerUDPRead(); } else { //先关闭UDP
    发表于 12-30 14:27

    一文了解Android UDP通信

    :用于创建UDP套接字,指定本地端口号。通过该对象,可以发送和接收UDP数据报。 DatagramPacket:用于表示一个UDP数据报,包
    发表于 12-30 10:56