python 中 udp
ip地址:
用来在网络中标记一台电脑。ip地址在本地局域网上是唯一的。
网络地址:主机地址
主机号,表示在同一个网络上,可以拥有多少个IP
分类:
A 类 IP 段 1.0.0.1 到 126.255.255.255 (0 段和 127 段不使用 ),可用的A类网络有126个(有126个网段),每个网络能容纳1677214个主机。
B 类 IP 段 128.0.0.0 到 191.255.255.255 ,每个网络有65564个主机
C 类 IP 段 192.0.0.0 到 223.255.255.255,每个网络中有254个主机
私有(内网)IP地址范围:
A类:10.0.0.0-10.255.255.255
B类:172.16.0.0-172.31.255.255
C类:192.168.0.0-192.168.255.255
用于内部网络中,一些交换机,路由器也往往使用192.168.1.1作为缺省地址,私有网络由于不与外部互连,因而只能够在内部网络中使用,如果要使用私有地址连接到Internet,需要使用NAT(网络地址转址)、使用网关代理软件、路由器,将私有地址翻译成公网的合法地址
CIDR(无类型域间选路)
例如:
1.10.100.122.2/24,24表示前面24位是网络号,后8位是主机号。里面有一个广播地址,10.100.122.255,如果发送信息给这个IP地址,这个网段中的所有主机都会收到信息。
另外一个是子网掩码,255.255.255.0,可以把子网掩码和IP地址进行AND操作,就能算出来网络地址,此IP地址的网络号为10.100.122.0。
192.168.0.X这个是常用的私有IP地址(很明显能看出来这个IP地址前面的192.168.0,这个是网络号),家里的路由器一般都是这样的,而192.168.0.1,一般是这个私有网络的出口,例如家里的路由器。而192.168.0.255这个就是广播地址,发送信息给这个地址,这个私有网段中的所有主机都会收到信息。
MAC地址
MAC地址是全局唯一的,每个网卡都有独立的一个IP地址。它更像是一个身份证,是唯一的标识。
IP地址与Mac地址的区别:
IP是地址,它有定位功能,而Mac是身份证,具有唯一性。有了它们两个就能在互联网中通信两者缺一不可。
端口
每个进程都会占用一个端口,端口一共有256*256。范围:0-65535 ,1023前面的端口,不可以随意使用,一般有约定的时候,如22是ssh登录端口。1024后面的,可用自己定义使用。
常用端口:
(1)HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080
(2)SOCKS代理协议服务器常用端口号:1080
(3)FTP(文件传输)协议代理服务器常用端口号:21
(4)Telnet(远程登录)协议代理服务器常用端口:23
HTTP服务器,默认的端口号为
80/tcp
HTTPS服务器,默认的端口号为
443/tcp 443/udp;
Telnet(不安全的文本传送),默认端口号为23/tcp(***Tiny Telnet Server所开放的端口);
FTP,默认的端口号为21/tcp(***Doly Trojan、Fore、InvisibleFTP、WebEx、WinCrash和Blade
Runner所开放的端口);
TFTP(Trivial File Transfer Protocol ),默认的端口号为69/udp;
SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;
SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(***Antigen、Email
Password Sender、Haebu Coceda、ShtrilitzStealth、WinPC、WinSpy都开放这个端口);
POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;
WebLogic,默认的端口号为7001;
Webshpere应用程序,默认的端口号为9080;
webshpere管理工具,默认的端口号为9090;
JBOSS,默认的端口号为8080;
TOMCAT,默认的端口号为8080;
WIN2003远程登陆,默认的端口号为3389;
Symantec AV/Filter for MSE ,默认端口号为 8081;
Oracle 数据库,默认的端口号为1521;
ORACLE EMCTL,默认的端口号为1158;
Oracle XDB( XML 数据库),默认的端口号为8080;
Oracle XDB FTP服务,默认的端口号为2100;
MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;
MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;
QQ,默认的端口号为1080/udp
1、创建套接字
1 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 2 local_addr = ('', 58997)
3 udp_socket.bind(local_addr) # 绑定端口
2、使用套接字收发数据
udp_socket.sendto(send_data.encode("gbk"),("10.133.255.152", 8080)) # 发送给微软,使用gbk编码,一般使用utf-8编码 # receive_date 接收到的数据是一个元祖 (b'\xc4\xe3\xba\xc3', ('10.133.255.152', 8080)) receive_data = udp_socket.recvfrom(1204) # print(receive_data[0].decode("utf-8")) # 打印元祖的第一个数据,因为使用byte传输数据,所以需要对数据进行解码 print(receive_data[0].decode("gbk")) # 因为微软使用gbk编码,所以需要解成gbk
3、关闭套接字
udp_socket.close()
udp_socket.close()
4、如何验证消息发送接收,在微软启用网络调试助手,NetAssist.exe