Python 之 Socket编程(TCP/UDP)
socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。有效的端口号: 0~ 65535但是小于1024的端口号基本上都预留给了操作系统POSIX兼容系统(如Linux、Mac OS X等),在/etc/services文件中找到这些预留端口与的列表面向连接的通信提供序列化、可靠的和不重复的数据交付,而没有记录边界。意味着每条消息都可以拆分多个片段,并且每个消息片段都能到达目的地,然后将它们按顺序组合在一起,最后将完整的信息传递给等待的应用程序。实现方式(TCP):传输控制协议(TCP), 创建TCP必须使用SOCK_STREAM作为套接字类型因为这些套接字(AF_INET)的网络版本使用因特网协议(IP)来搜寻网络中的IP,所以整个系统通常结合这两种协议(TCP/IP)来进行网络间数据通信。数据报类型的套接字, 即在通信开始之前并不需要建议连接,当然也无法保证它的顺序性、可靠性或重复性实现方式(UDP)用户数据包协议(UDP), 创建UDP必须使用SOCK_DGRAM (datagram)作为套接字类型它也使用因特网来寻找网络中主机,所以是UDP和IP的组合名字UDP/IP注意点:1)TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接的,每次发送要指定是发给谁。2)服务端与客户端不能直接发送列表,元组,字典。需要字符串化repr(data)。TCP的优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点:慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。什么时候应该使用TCP :当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输.UDP的优点:快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……UDP的缺点:不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。什么时候应该使用UDP:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

UDP 和 TCP 的 socket 分别一般用在什么地方
1.UDP是面向分组的,分组间有明确的边界;TCP是面向流字符的,数据流间无边界。 UDP发送一个分组,接收方或者接收完全失败,如果成功整个分组都会接收到。对于TCP,发送一串数字(1,2,3,4,5),接收时有可能变成两次(1,2)和(2,4,5),或者变成任意接收方式,协议栈只保证接收顺序正确。2.UDP属于非连接状态下的不可靠协议,实际运用中很少用到UDP,UDP对于网络资源消耗很少,可以用UDP进行nat穿透。TCP一般用于连接状态下的可靠的协议,比如http,telnet,smtp。3.TCP是可靠的,通过数据校验保证发送和接收到的数据是一致的;UDP是不可靠的,发送一串数字分组(1,2,3)可能接收到时就变成(1,0,0)了,做UDP连接时需要自己做数据校验。4.UDP是无序的,发出(1,2,3),有可能按照(1,3,2)的顺序收到,应用程序必须自己做分组排序;TCP数据是有序的,以什么顺序发送的数据,接收时同样会按照此顺序。5.TCP因为建立连接、释放连接、IP分组校验排序等需要额外工作,速度较UDP慢许多。TCP适合传输数据,UDP适合流媒体。 6.UDP比TCP更容易穿越路由器防火墙。

UDP 和 TCP 的 socket 分别一般用在什么地方
UDP 的使用范围很窄,而且编程比 TCP 难多了: 你真的很在乎延迟,不能忍受重传,那么就用UDP,例如 NTP 协议。重传NTP消息纯属添乱。你真的不在乎可靠性,丢一些包也不需要重传,那么就可以用 UDP。例子我想不出来。有人说音频或视频流可以用UDP,不过据我看来各大视频网站都用HTTP协议,而HTTP是基于TCP的。你需要NAT穿透,那么不得不用UDP。其他情况,一旦程序要自己做重传,你都是在用UDP模拟出蹩脚的TCP,还不如直接用TCP呢。总之:使用 UDP 需要有强大到不容置疑的理由,when in doubt, use TCP.一些协议,出于历史原因,受当时技术和网络条件限制,选择了基于UDP实现,其选择的理由现在很可能已经不再成立了。因此“xxx协议用UDP”不是你现在写网络应用程序也该用UDP的理由,除非你本身就是在实现xxx协议。 另外,那些说TCP比UDP慢、效率低的,你拿UDP写个程序,把千兆网带宽打满(TCP等价的代码只有两行:客户端 while (true) { send(...); } 服务端 while (true) { recv(...); }。),且不说你的程序会有多复杂,先看看goodput到底是不是比TCP大、CPU使用率是不是比TCP低嘛。
在绝大部分场景都开始直接选择TCP的时候,要提一个非常窄的UDP应用场景:翻嫱 从需求上说,翻嫱的业务场景对协议有如下要求:1. 不被嫱认为是敏感流量或者即使被认为是敏感流量也不能被重置2. 协议够轻,载荷比高(像Tor这种其实非常不适合做此用途)UDP本身无连接,所以即使被认为是敏感流量,也无法被重置; UDP作为协议“外壳”,里面往往搭载的是基于TCP的协议(比如http),TCP自己有检验和重传机制,不需要外壳操心。
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。到底选择哪一种协议通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:1.在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,使用 TCP 协议,在收发数据之前先建立明确的连接。2.数据量是否特别大(例如图象与声音文件)?在连接建立之后,TCP协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。3.数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP 协议是更适宜的。UDP 协议适合发送少量的数据。

socket是tcp还是udp
tcp和udp都是传输协议,只是两者是有区别的,TCP是一种在不可靠的网络环境中进行可靠的传输,一个文件被分成许多数据包从一台主机传输到另外一台主机,每接受一个数据包,两台主机之间都需要验证的,如果另外一台主机没有接收到该数据包,该主机会要求数据包发起的主机重发,一直到接收到为止(当然重发次数也是有次数限制的),这就是TCP协议的传输特点。而udp则是在安全的网络下进行的不可靠传输,传输之前,双方主机之间建立起一条专用的传输通道,数据包一旦从发起电脑传输,之后就不再管对方收没收到的问题,一直把数据全部传输为止,传输完了发起主机会自动关闭数据传输通道。

socket是tcp还是udp
tcp和udp是协议,socket是对tcp协议的封装,socket是调用接口,俗称api。所以socket既不是tcp也不是udp。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/44204.html。