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

    文章

    1272

    浏览量

    78301
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33621
收藏 人收藏

    评论

    相关推荐

    udp_bind这个绑定端口怎么解除?

    请教下,udp_bind 这个绑定端口,刚开始是可以的,但是重新绑定时返回错误,有什么方法可以
    发表于 04-22 07:41

    udp是什么意思 简述TCPUDP的区别和联系

    UDP (User Datagram Protocol) 是一种在计算机网络中使用的传输层协议。它与TCP (Transmission Control Protocol) 一样,都是在因特网协议套件
    的头像 发表于 02-02 16:33 331次阅读

    UDPTCP的主要区别 UDP能否像TCP一样实现可靠传输?

    据包的传输不进行确认和重传,而TCP是一种面向连接的协议,通过确认和重传来实现可靠的数据传输。 首先,UDP无连接的特点使得它在传输时的开销较小。UDP的数据包不需要建立和维护连接,仅包括源
    的头像 发表于 01-22 16:10 188次阅读

    TCPUDP的基本区别

    TCPUDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(
    的头像 发表于 11-13 15:27 548次阅读
    <b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>的基本区别

    TCPUDP的区别

    1.TCPUDP的区别 TCP是面向连接的,UDP是面向无连接的; TCP只能一对一通信,UDP
    的头像 发表于 11-09 09:35 638次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的区别

    udp是什么协议 TCPUDP的区别

    TCP协议提供可靠的数据传输,UDP协议提供尽量高效的数据传输。TCP协议通过使用序列号、确认应答等机制,保证数据传输的可靠性,而UDP协议不提供可靠性保证,它只是简单地把应用程序传给
    的头像 发表于 06-26 17:47 7089次阅读

    TCP/UDP网络编程的基础知识合集3

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 575次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>网络编程的基础知识合集3

    TCP/UDP网络编程的基础知识合集2

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 457次阅读

    TCP/UDP网络编程的基础知识合集1

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 525次阅读

    基于Socket的UDPTCP编程解析 2

    TCP(传输控制协议)和UDP(用户数据报协议是网络体系结TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双
    的头像 发表于 05-18 17:22 464次阅读
    基于Socket的<b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b>编程解析 2

    基于Socket的UDPTCP编程解析 1

    TCP(传输控制协议)和UDP(用户数据报协议是网络体系结TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双
    的头像 发表于 05-18 17:22 732次阅读
    基于Socket的<b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b>编程解析 1

    一文搞明白TCP协议与UDP协议(下)

    网络编程有三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是TCPUDP这两种通信协议,以及编程的实现。 首先,我们需要了解一下IP地址、端口号、通信协议的相关知识
    的头像 发表于 05-18 17:17 469次阅读
    一文搞明白<b class='flag-5'>TCP</b>协议与<b class='flag-5'>UDP</b>协议(下)

    一文搞明白TCP协议与UDP协议(上)

    网络编程有三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是TCPUDP这两种通信协议,以及编程的实现。 首先,我们需要了解一下IP地址、端口号、通信协议的相关知识
    的头像 发表于 05-18 17:17 494次阅读
    一文搞明白<b class='flag-5'>TCP</b>协议与<b class='flag-5'>UDP</b>协议(上)

    TCPUDP的原理以及区别

    TCP是基于连接的,而UDP是基于非连接的。 **tcp传输数据稳定可靠** ,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等
    的头像 发表于 05-18 17:14 616次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的原理以及区别

    有没有办法只绑定一个TCP/UDP服务器实例到AP IP地址,让STA仍然可以正常与云端通信?

    ,客户端连接和发送数据没有任何问题。 有没有办法只绑定一个TCP/UDP服务器实例到AP IP地址,让STA仍然可以正常与云端通信? 对此的任何输入都很棒。 非常感谢希望你们一切都好。
    发表于 05-08 07:56