udp发送和接收端口(UDP指定发送和接收端口相同)

      最后更新:2023-05-02 21:59

      什么是TCP端口/UDP端口

      用户使用Telnet用户程序与服务进程建立一个连接。用户程序向服务进程写入信息,服务进程读出信息并发出响应,用户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。 TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: 源IP地址 发送包的IP地址。 目的IP地址 接收包的IP地址。 源端口 源系统上的连接的端口。 目的端口 目的系统上的连接的端口。 端口指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。它是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。
      什么是TCP端口/UDP端口

      JAVA问题 UDP协议中的端口问题

      在Java中操纵UDP 使用位于JDK中Java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。在描述它们之前,必须了解位于同一个位置的InetAddress类。InetAddress实现了Java.io. Serializable接口,不允许继承。它用于描述和包装一个Internet IP地址,通过三个方法返回InetAddress实例:getLocalhost():返回封装本地地址的实例。getAllByName(String host):返回封装Host地址的InetAddress实例数组。getByName(String host):返回一个封装Host地址的实例。其中,Host可以是域名或者是一个合法的IP地址。DatagramSocket类用于创建接收和发送UDP的Socket实例。和Socket类依赖SocketImpl类一样,DatagramSocket类的实现也依靠专门为它设计的DatagramScoketImplFactory类。DatagramSocket类有3个构建器:DatagramSocket():创建实例。这是个比较特殊的用法,通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。DatagramSocket(int port):创建实例,并固定监听Port端口的报文。DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。值得注意的是,在创建DatagramSocket类实例时,如果端口已经被使用,会产生一个SocketException的异常抛出,并导致程序非法终止,这个异常应该注意捕获。DatagramSocket类最主要的方法有4个:Receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。Send(DatagramPacket d):发送报文d到目的地。SetSoTimeout(int timeout):设置超时时间,单位为毫秒。Close():关闭DatagramSocket。在应用程序退出的? 焙颍?ǔ;嶂鞫?头抛试矗?乇誗ocket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。DatagramPacket类用于处理报文,它将Byte数组、目标地址、目标端口等数据包装成报文或者将报文拆卸成Byte数组。应用程序在产生数据包是应该注意,TCP/IP规定数据报文大小最多包含65507个,通常主机接收548个字节,但大多数平台能够支持8192字节大小的报文。DatagramPacket类的构建器共有4个:DatagramPacket(byte[] buf, int length, InetAddress addr, int port):从Buf数组中,取出Length长的数据创建数据包对象,目标是Addr地址,Port端口。DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):从Buf数组中,取出Offset开始的、Length长的数据创建数据包对象,目标是Addr地址,Port端口。DatagramPacket(byte[] buf, int offset, int length):将数据包中从Offset开始、Length长的数据装进Buf数组。DatagramPacket(byte[] buf, int length):将数据包中Length长的数据装进Buf数组。 DatagramPacket类最重要的方法就是getData()了,它从实例中取得报文的Byte数组编码。
      JAVA问题 UDP协议中的端口问题

      为什么UDP发送和接收的端口号必须一致?

      这是通讯协议规定的。网络通讯中,IP地址+端口才能唯一标识一个真实的通讯地址。就像是现实中如果写信给一个人,发信人必须写清楚省市区和邮箱号,收件知人有同一个邮箱的钥匙才能收到信一样。客户端不需要固定端口,客户端发送消息时应该由UdpClient自动选择可用的端口。服务器不可能向NAT内部的客户端主动发起消息,必须等客户端发送消息,然后赶紧发送返回值。因为NAT路由器只会为Udp消息的这种回发规则维护一个较短时间,在这个较短时间上由外部发来的消息才能被路由器正确转发给内部。扩展资料UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。常用的UDP端口号有:应用协议 端口号DNS 53TFTP 69SNMP 161
      UDP在外网通信时,需要由内网客户端向外网(独立IP,不经过路由)的服务器发出消息,内网路由会打开一个洞,短时间允许外网目标ip和目标端口往回发消息,否则外网的消息发不到内网的电脑上,直接被路由扔了。所以 对于服务器来说,哪个端口接收的,就要用哪个端口发回来,还得尽快发,否则内网路由就把洞堵住了。外网再发消息,或者不是“原路返回”的消息,统统被丢掉。。。。所以伱收不到啦。 同样,路由会把返回的消息转发到客户端ip指定的端口上,如果端口不一样的话,伱的客户端也收不到。。。
      DatagramSocket用于接收和发送UDP的Socket实例。该类有3个构造函数:DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端。
      这是通讯协议规定的。 网络通讯中,IP地址+端口才能唯一标识一个真实的通讯地址。就像是现实中如果写信给一个人,发信人必须写清楚省市区和邮箱号,收件人有同一个邮箱的钥匙才能收到信一样。IP地址指明了具体的计算机,就像是发信时指明了小区的楼号 而端口指明了具体的收信人,就像邮箱指明同一栋楼(同一计算机)里的具体哪个门牌号一样。
      没这个说法, 只是,如果你不指定监听端口号的话,客户端怎么监听?服务器端又如何知道要返回给客户端哪个端口呢? 一般情况下,服务器端根据客户端的端口号返回的,比如客户端使用1024发送到服务器端的80端口,那么服务器端接收后返回到客户端哪个端口呢?所以还是返回1024最好。
      为什么UDP发送和接收的端口号必须一致?

      求助,基于C语言的UDP通信问题发送、接收端口问题

      bind一下就可以int s = socket(AF_INET, SOCK_DGRAM, 0);struct sockaddr_in local= {0};local.sin_family = AF_INET;local.sin_port = htons(60200);inet_aton("192.168.3.100", (struct in_addr *)&local.sin_addr.s_addr);//换成你的IP地址bind(s, (struct sockaddr *)&local, sizeof(local));
      求助,基于C语言的UDP通信问题发送、接收端口问题

      什么是UDP端口?

      UDP(User Datagram Protocol) 用户数据报协议 用户数据报协议(UDP)是 ISO 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分辨运行在同一台设备上的多个应用程序。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 UDP 的“端口号”完成的。例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。 UDP 端口的详细介绍可以参照相关文章。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。 UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。协议结构Source Port — 16位。源端口是可选字段。当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。如果不使用,设置值为0。Destination Port — 16位。目标端口在特殊因特网目标地址的情况下具有意义。Length — 16位。该用户数据报的八位长度,包括协议头和数据。长度最小值为8。Checksum — 16位。IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。如果必要的话,可以由两个八位复合而成。Data — 包含上层数据信息。相关链接http://www.javvin.com/protocol/rfc768.pdf:User Datagram Protocol(UDP) Specificationshttp://www.iana.org/assignments/port-numbers :UDP and TCP port numbers
      端口详解 在开始讲什么是端口之前,我们先来聊一聊什么是 port 呢?常常在网络上听说『我的主机开了多少的 port ,会不会被入侵呀!?或者是说『开那个 port 会比较安全?又,我的服务应该对应什么 port 呀?呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢? 由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTP 与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:咦!为什么你的计算机同时有 FTP、WWW、E-Mail 这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是主机,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:"嗨!你好呀!你要做些什么事?"你跟他说:"我要存钱呀!",服务员接着就会告诉你:喝!那么请前往三号窗口!那边的人员会帮您服务!这个时候你总该不会往其它的窗口跑吧?! ""这些窗口就可以想成是port 啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦! ) · 每一个 TCP 联机都必须由一端(通常为 client )发起请求这个 port 通常是随机选择大于 1024 以上(因为0-1023有特殊作用,被预定,如FTP、HTTP、SMTP等)的 port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包; · 如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时时在本机端建立资源以待联机之需; · 然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK 旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标); · 只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的'三段式交握( Three-Way Handshake )'的原理。 经过三向交握之后,呵呵!你的 client 端的 port 通常是高于 1024 的随机取得的 port ,至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道! 总而言之,我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。 根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。
      什么是UDP端口?

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类