python之socket编程(tcp/udp)

author author     2023-04-06     153

关键词:

参考技术A

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 ……

python网络编程之tcp服务端程序开发

 一、开发TCP服务端程序开发步骤回顾创建服务端端套接字对象绑定端口号设置监听等待接受客户端的连接请求接收数据发送数据关闭套接字二、socket类的介绍导入socket模块importsocket创建服务端socket对象socket.socket(AddressFamily,Ty... 查看详情

python网络编程之tcp客户端程序开发

一、开发TCP客户端程序开发步骤回顾创建客户端套接字对象和服务端套接字建立连接发送数据接收数据关闭客户端套接字二、socket类的介绍导入socket模块 importsocket创建客户端socket对象 socket.socket(AddressFamily,Type)参数说明:Ad... 查看详情

1socket+threading编程之tcp

...,朋友建议我更改dos窗口编码,我建议朋友放弃Windows写python‘‘‘fromsocketimportsocketdefresponse(conn,addr):     data=conn.recv(1024)  n 查看详情

python下socket编程之tcp连接状态

1. 引言python作为一门胶水语言,可以在各个领域上作为快速开发的工具,大大提高开发者处理事务的效率。在互联网行业中,不管是对网络服务器的开发,还是对网络客户端,例如爬虫的开发中,都会涉... 查看详情

socket编程之----tcp服务器

一、socket编程socket这个词可以表很多概念:在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯标识络通讯中的个进程,“IP地址+端口号”就称为socket。在TCP协议中,建连接的两个进程各有个socket来标识,那么这两个socket组成的socket pair就唯... 查看详情

10.网络编程之socket(代码片段)

...连接的套接字2.1面向连接的套接字2.2无连接的套接字三、python中socket3.1socket()模块函数3.2套接字对象(内置)方法3.3Socket中的一些参数四、基于TCP的socket4.1创建TCP服务器4.2创建TCP客户端五、基于UDP的socket5.1创建UDP服务器5.2 查看详情

网络编程之socket编程(代码片段)

套接字介绍socket介绍Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket... 查看详情

java网络编程之tcp网络编程

一、基于Socket的TCP编程Java语言的基于套接字编程分为服务端编程和客户端编程,其通信模型如图所示: 二、客户端Socket的工作过程(四个基本步骤)1、创建Socket根据指定服务端的IP地址或端口号构造Socket类对象。若服务器端响... 查看详情

socket编程之tcp/udp

目标:  1.编写TCP服务端客户端,实现客户端发送数据,服务端接收打印  2.采用OOP方式编写TCP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端  3.采用OOP方式编写UDP服务端客户端,实现客户端发送... 查看详情

java网络编程之tcp的socket通信

1、客户端MyClient.java1importjava.io.*;2importjava.net.*;34publicclassMyClient5{6publicstaticvoidmain(String[]args)throwsException7{8Sockets=newSocket("192.168.1.1",30000);9//客户端启动ClientThread线程不断读取来自服务器的 查看详情

网络编程之黏包(代码片段)

黏包现象基于tcp协议实现的黏包fromsocketimport*importsubprocessip_port=(‘127.0.0.1‘,8888)BUFSIZE=1024tcp_socket_server=socket(AF_INET,SOCK_STREAM)tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)tcp_socket_se 查看详情

linux之socket套接字编程20160704

介绍套接字之前,我们先看一下传输层的协议TCP与UDP:TCP协议与UDP协议的区别   首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的 区别,我觉得这是没有从本... 查看详情

python安全攻防之socket网络编程(代码片段)

一、网络结构体系1.OSI协议是由ISO(国际标准化组织)制定的,用于提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI协议将网络体系结构划分为7层:应用层、表示层、会话层、传... 查看详情

python安全攻防之socket网络编程(代码片段)

一、网络结构体系1.OSI协议是由ISO(国际标准化组织)制定的,用于提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI协议将网络体系结构划分为7层:应用层、表示层、会话层、传... 查看详情

io之socket网络编程

一、Socket  Socket不是Java中独有的概念,而是一个语言无关标准。任何可以实现网络编程的编程语言都有Socket。1,Socket概念  网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。  ... 查看详情

python网络编程--tcp/ip

参考技术A首先放出一个TCP/IP的程序,这里是单线程服务器与客户端,在多线程一节会放上多线程的TCP/IP服务程序。这里将服务端和客户端放到同一个程序当中,方便对比服务端与客户端的不同。TCP/IP是因特网的通信协议,其参... 查看详情

网络编程之socket

一、socket工作原理   二tcp/ip协议简述  三、socket使用   四、socketserver  查看详情

java之网络编程1-tcp

...,网络编程现在一般称为TCP/IP编程一般的网络编程都称为Socket编程,Socket的英文意思是“插座”网络编程的目的:直接或者间接的通过网络协议与其他计算机进行通信。网络编程中有两个主要的问题:-->如何准确定为网络上一... 查看详情