TCP、UDP绑定同一端口通信的解释

TCP、UDP绑定同一端口通信的解释昨日突然讨论起TCP与UDP是否可以在同一端口进行绑定,通信。在印象当中我记得是可以的,今日google了相关资料,确定以及肯定的:TCP、UDP可以绑定同一端口来进行通信:       网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。       按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最…

大家好,又见面了,我是你们的朋友全栈君。

昨日突然讨论起TCP与UDP是否可以在同一端口进行绑定,通信。

在印象当中我记得是可以的,今日google了相关资料,

确定以及肯定的:

TCP、UDP可以绑定同一端口来进行通信:

 

      网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。 

      按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocol   port,简称端口)的概念,用于标识通信的进程。 

      端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。 

      类似于文件描述符,每个端口都拥有一个叫端口号(port   number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。 

      端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用将自己与该端口号联系起来(绑扎)。TCP/IP端口号的分配中综合了上述两种方式。TCP/IP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公认的端口(即周知口,well-known   port),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP均规定,小于256的端口号才能作保留端口。

 

 

· 再讨论一下,一个服务器监控一个端口,比如80端口,它为什么可以建立上成千上万的连接?

 

 

   首先, 一个TCP连接需要由四元组来形成,即(src_ip,src_port,dst_ip,dst_port)。当一个连接请求过来的时候,服务端调用accept函数,新生成一个socket,这个socket所占用的本地端口依然是80端口。由四元组就很容易分析到了,同一个(src_ip,src_port),它所对应的(dst_ip,dst_port)可以无穷变化,这样就可以建立很多个客户端的请求了。

原文地址:http://nigelzeng.iteye.com/blog/1209538

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147233.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux怎么将文件复制到别的文件_linux 文件夹复制

    linux怎么将文件复制到别的文件_linux 文件夹复制1.前言本文主要讲解linux怎么复制文件到其他文件夹。在Linux和Unix系统上工作时,复制文件和目录是您每天要执行的最常见任务之一。cp是一个命令行实用程序,用于复制Unix和Linux系统上的文件和目录。在本文中,我们将解释如何使用cp命令。linux怎么复制文件到其他文件夹2.如何使用cp命令cp命令的使用语法:cp[OPTIONS]源…目标源可以有一个或多个文件或目录作为参数,目标可以有一个文件或文件夹作为参数。当源和目标参数都是文件时,cp命令将第一

    2022年8月23日
    7
  • java p2p实例_java文件p2p传输[通俗易懂]

    java p2p实例_java文件p2p传输[通俗易懂]【实例简介】java模仿电驴、迅雷实现多线程文件传输,可用于局域网或internet文件传输发送,程序采用套接字实现p2p(即点到点)文件传输。【实例截图】【核心代码】java文件p2p传输└──java文件p2p传输├──classes│├──packagecache││└──trans.dep2│└──trans│├──Application…

    2022年7月16日
    14
  • 多层感知机实现(单层感知器和多层感知器)

    前面利用了softmax来对图像进行分类,也可以使用多层感知机的方法对图像进行分类。多层感知机从零开始实现方法多层感知机(multilayerperceptron,MLP),在单层神经网络的基础上引入了一到多个隐藏层(hiddenlayer)。对于图中的感知机来说,它含有一个隐藏层,该层中有5个隐藏单元。输入和输出个数分别为4和3,中间的隐藏层中包含了5个隐藏单元。…

    2022年4月16日
    38
  • Map集合循环遍历的几种方式[通俗易懂]

    packagecn.jdbc.test;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;/***Map集合的循环遍历*@data2018.1.21**/publicclassTestMap{…

    2022年4月17日
    69
  • 2020职称计算机题库和答案,2020职称计算机考试PowerPoint习题及答案1

    2020职称计算机题库和答案,2020职称计算机考试PowerPoint习题及答案1

    2021年11月28日
    56
  • 本地Mysql忘记密码的修改方法(windows)[通俗易懂]

    本地Mysql忘记密码的修改方法(windows)[通俗易懂]你是否有忘记密码的尴尬你是否有连Mysql的安装路径都忘了的尴尬别问我是怎么知道的,哈哈哈话不多说,步入正题吧!如果你记得mysql的安装路径的话,直接跳过步骤1231.键盘Windows+R,输入services.msc然后回车;2.找到Mysql,右键Mysql找到属性,打开就能看到可执行文件的路径了;PS:可以切换到大写,然后一直按MMM…(祖传妙方)3.进入bin目录下,按住shift+鼠标右键,点击打开“在此处打开Powershe.

    2022年6月16日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号