udp

TCP和UDP的区别总结

拥有回忆 提交于 2020-01-22 13:24:32
1.TCP是面向连接的;UDP是面向无连接的。 2.TCP是提供可靠的服务,传送的数据无差错,不丢失,不重复,顺序到达;UDP是尽最大努力交付,不保证可靠交付。 3.TCP面向字节流,实际上TCP把数据堪称一连串无结构的字节流;UDP面向报文,没有拥塞控制,即使出现网络拥塞也不会降低发送速率。 4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一,多对多的交互通信。 5.TCP首部开销20字节;UDP首部开销8字节。 6.TCP的逻辑通信是全双工的可靠通信;UDP是不可靠信道。 来源: CSDN 作者: 郭萌萌 链接: https://blog.csdn.net/weixin_38652989/article/details/103885100

UDP Hole Punching help

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 12:50:09
问题 I'm trying to add networking over the internet to my game, using Peer to Peer. I have already implemented a LAN only version, which uses .NET's peer to peer classes to connect within the local network. I realized I need to use UDP hole punching in order to establish a connection to other clients that are behind a firewall. This is how I have started to implement it: The server is a HTTP server using very simple PHP scripts to get the job done. register name on server, sending the private ip

【案例】多线程实现基于UDP协议的聊天器

限于喜欢 提交于 2020-01-21 11:34:54
博主前言: 在上一篇博客中,我讲述了用多线程的方式实现多任务,结合套接字编程的内容,我们已经具备了实现开发简单的基于UDP协议的聊天功能的程序,本来今天准备写一下多任务的另一种实现方式:多进程。但是今天事情有点多,写写停停思绪也没能集中,所以干脆停笔了,打算明天再写,加油! 整体逻辑: def main ( ) : # 1. 创建udp套接字 udp_socket = socket . socket ( socket . AF_INET , socket . SOCK_DGRAM ) # 2. 套接字绑定一个端口号 udp_socket . bind ( ( "" , 1314 ) ) # 3. 获得通信对方的ip和port dest_ip = input ( "请输入对方的ip:" ) dest_port = int ( input ( "请输入对方的port:" ) ) # 注意强制转换 # 4。 创建两个子线程,一个用于发送数据,一个用于接收数据 t_recv = threading . Thread ( target = recv_msg , args = ( udp_socket , ) ) t_send = threading . Thread ( target = send_msg , args = ( udp_socket , dest_ip , dest_port

sending/receiving file UDP in python

不羁岁月 提交于 2020-01-21 00:38:50
问题 I've made this sending / receiving scripts but i corrupted file ! i have no idea why I'm getting this issue ! sender.py #!/usr/bin/env python from socket import * import sys s = socket(AF_INET,SOCK_DGRAM) host =sys.argv[1] port = 9999 buf =1024 addr = (host,port) file_name=sys.argv[2] f=open(file_name,"rb") data = f.read(buf) s.sendto(file_name,addr) s.sendto(data,addr) while (data): if(s.sendto(data,addr)): print "sending ..." data = f.read(buf) s.close() f.close() receiver.py #!/usr/bin/env

sending/receiving file UDP in python

╄→尐↘猪︶ㄣ 提交于 2020-01-21 00:38:26
问题 I've made this sending / receiving scripts but i corrupted file ! i have no idea why I'm getting this issue ! sender.py #!/usr/bin/env python from socket import * import sys s = socket(AF_INET,SOCK_DGRAM) host =sys.argv[1] port = 9999 buf =1024 addr = (host,port) file_name=sys.argv[2] f=open(file_name,"rb") data = f.read(buf) s.sendto(file_name,addr) s.sendto(data,addr) while (data): if(s.sendto(data,addr)): print "sending ..." data = f.read(buf) s.close() f.close() receiver.py #!/usr/bin/env

netstat:查询端口和进程信息

拟墨画扇 提交于 2020-01-20 17:48:35
-a all 显示所有选项 -t tcp 仅显示tcp相关进程 -u udp 仅显示udp相关进程 -n 拒绝显示别名,能显示数字的全部转换为数字 -l 列出有在listen的服务状态 -p 显示建立相关链接的程序名 -r 显示路由信息、路由表 -e 显示扩展信息,例如UID等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行netstat命令 root@2fb0452c56bd:/# netstat -tnulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 3851/sshd tcp6 0 0 :::22 ::: LISTEN 3851/sshd 来源: 51CTO 作者: 就是老十三 链接: https://blog.51cto.com/12400136/2468054

DNS分别在什么情况下使用UDP和TCP

限于喜欢 提交于 2020-01-20 11:48:46
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。 如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。 另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。 DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验

NFS存储服务

流过昼夜 提交于 2020-01-20 08:52:08
一、NFS 原理图 二、NFS 原理描述   2.1:什么是NFS     NFS中文名字:网络共享存储,就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录的数据(NFS一般都是用来存放视频、附件、图片等静态数据的).      NFS是通过网络来进行服务端和客户端数据传输的,那么只要是通过网络的就一定会有端口,那NFS的端口是什么呢?很失望的是NFS的端口是随机的,每次重启服务端口都会改变.     那么客户端是怎样知道服务端的端口的呢?其实NFS服务器是通过远程过程调用(RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来确定端口,进行数据传输.     PS:(哦,原来是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)。   2.2:什么是RPC     RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。      RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了 传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。     RPC采用客户机

UDP restreaming using socket resulting in NULL packets

蓝咒 提交于 2020-01-20 08:31:28
问题 I am implementing a UDP video redirection feature. Ideally incoming video packets should be processed and redirected to a specified output interface (eth0 or eth1). Here's how it's implemented: User selects the interface from a webui. The interface gets passed to the backend Video packets are processed using OpenCaster suite (here)..the following libraries are being used in order to process the packets: tsfixcc, tsdiscont, tsvbr2cbr,tstimedwrite, tspcrrestamp and tsudpsend. I modified

Can't read UDP reply (golang)

懵懂的女人 提交于 2020-01-20 06:52:31
问题 I'm working on a Go program that sends out a UDP broadcast to query existence of devices on the local network and then reads the replies. Using Wireshark I confirm that the packet is broadcast and that the single device on (my) network replies (ten times, in fact) but my application blocks on the read as if it does not see the incoming packet. Here is the code: func Discover(timeout int) ([]string, error) { inBuf := make([]byte, 1024) devices := make([]string, 0) var readLen int var fromAddr