网络通信基本概述网络是什么?网络就是辅助双方或多方连接在一起的工具使用网络的目的?使连接网络的多方,能进行数据传递网络编程是什么?就是让在不同电脑上的软件能进行数据传递ip地址是什么?用来在网络中标记一台电脑,比如:192.168.1.1;在本地局域网内是唯一的查看本机ip地址在dos命令窗口中,输入:ipconfig什么是端口?端口是通过端口号来标记的,范围是从 0~65535知名端口众所周知的端口号,范围 0~1023,例如:80端口是http的,21端口是ftp用的一般情况下,程序要使用知名端口是需要管理员权限的动态端口动态端口一般不固定,是动态分配的,范围从 1024~65535动态分配是指,当一个程序需要网络通信时,它向主机申请一个端口,主机从可用的端口中分配一个供它使用,当这个程序关闭时,同时会释放占用的端口可以在命令窗口中输入:** netstat -ano **查看端口状态socket概述什么是socket?socket 简称 套接字 ,是进程间通信的一种方式,它与其它进程间通信的一个主要不同是:它能实现不同主机间的通信,例如:qq、微信等在python中,使用socket 模块的函数 socket 来创建通信语法
import socketsocket.socket(family,type)参数说明
**family: **可以选择 af_inet(用于internet 进程间通信) 或者 af_unix (用于另一台机器进程间通信),实际工作中常用af_inettype: 套接字类型,可以是sock_stream(流式套接字,主要用于tcp协议) 或者 sock_dgram(数据报套接字,主要用于udp协议)**说明
**
套接字使用流程与文件使用流程类似创建套接字使用套接字收/发数据关闭套接字示例
import socket# 创建tcp的套接字 (点对点)s=socket.socket(socket.af_inet,socket.sock_stream)# 发送或者接收信息 ...# 关闭套接字s.close()# 创建udp的套接字 (一对多,广播形式)s2=socket.socket(socket.af_inet,socket.sock_dgram)# 发送或者接收信息 ...# 关闭套接字s2.close()udp协议介绍用户数据报协议,是一个无连接的简单的面向数据报的运输层协议udp数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送优点传输速度快有效传输的数据量最多为500bytes缺点发送数据,无需对方确认(不可靠)容易丢包应用场景udp广泛应用于需要相互传输数据的网络应用中,如qq使用的就是udp协议在局域网中,如果要想局域网内所有计算机发送数据,可以使用广播,广播不能用tcp实现,可以用udp实现**示例
**
**客户端
**
import socket# 创建udp的套接字udpsocket=socket.socket(socket.af_inet,socket.sock_dgram)# 允许套接口传送广播信息,当option_value不等于0时,允许,否则,禁止udpsocket.setsockopt(socket.sol_socket, socket.so_broadcast, 1)port=33333# ip 为广播形式,也可以用255.255.255.25 表示全局域网都可以接收network=''# 发送广播数据udpsocket.sendto(我在发送数据!!.encode(utf-8),(network,port))# 关闭udpsocket.close()服务端
import socket# 创建udp的套接字udpsocket=socket.socket(socket.af_inet,socket.sock_dgram)# 允许套接口传送广播信息udpsocket.setsockopt(socket.sol_socket, socket.so_broadcast, 1)port=33333# 绑定ip和端口,本机ip可以不写udpsocket.bind(('',port))# 等待接收方发送数据,1024表示本次接收的最大字节数data,address=udpsocket.recvfrom(1024)print(接收到的数据是:%s,地址是:%s%(data.decode(utf-8),str(address)))# 关闭udpsocket.close()tcp协议介绍tcp协议,是一种传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层控制协议,由ietf的rfc 793定义tcp是一种点对点的传输方式tcp协议编写的三个步骤:创建连接、数据传递、关闭连接tcp 通信模型中,在通信开始之前,一定要先建立相关的连接,才能发送数据优点可靠,稳定 tcp的可靠体现在tcp在传递数据之前,会有三次握手来建立连接在数据传递时,有确认、重传、拥塞控制机制在数据传完后,会断开连接用来节约系统资源缺点慢,效率低,占用系统资源高易被攻击,tcp有确认机制、三次握手机制,这些也导致tcp容易被人利用,实现dos、ddos、cc等攻击tcp与udp的区别
面向连接tcp面向连接(如打电话要先拨号建立连接)udp是无连接的,即发送数据之前不需要建立连接可靠tcp提供可靠的服务。也就是说,通过tcp连接传送的数据,无差错,不丢失,不重复,且按序到达udp尽最大努力交付,不需要对方确认,即不保证可靠交付字节流tcp面向字节流,实际上是tcp把数据看成一连串无结构的字节流udp是面向报文的,udp没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如ip电话,实时视频会议等)连接性tcp连接只能是点到点的udp支持一对一,一对多,多对一和多对多的交互通信首部开销tcp首部开销20字节udp首部开销小,只有8个字节信道tcp的逻辑通信信道是全双工的可靠信道udp则是不可靠信道示例
服务端
import socket# 创建tcp 的套接字tcp_socekt=socket.socket(socket.af_inet,socket.sock_stream)# ip与端口,本机ip可以不写addr=('',44444)# 绑定地址tcp_socekt.bind(addr)# 使用socket创建的套接字默认的属性是 主动的,使用 listen 将其变为被动,这样就可以接收别人的连接了, 128表示允许的最大连接数tcp_socekt.listen(128)# 如果有一个新的客户端来连接服务器,那么就产生一个新的套接字专门为这个客户端服务# client_socket 用来为这个客户端服务# tcp_socket 就可以用来专门等待其他新客户端的链接client_socket,client_addr=tcp_socekt.accept()# 接收对方发过来的数据data=client_socket.recv(1024)print(接收到的数据是:%s,地址是:%s%(data.decode(utf-8),str(client_addr)))# 发送数据到客户端client_socket.send(hello.....encode(utf-8))# 关闭为这个客户端服务的套接字,一旦关闭,就意味着不能再为这个客户端服务了client_socket.close()# 关闭外面总的 套接字,一旦关闭,则意味着不再接收任何连接了tcp_socekt.close()客户端
import socket# 创建tcp 套接字tcp_socket=socket.socket(socket.af_inet,socket.sock_stream)# 目标服务器地址dest_addr=(127.0.0.1,44444)# 连接目标服务器tcp_socket.connect(dest_addr)# 发送数据tcp_socket.send(我是客户端.encode(utf-8))# 接收对方发过来的数据,最大接收1024个字节data=tcp_socket.recv(1024)print(接收到的数据是:%s%data.decode(utf-8))# 关闭套接字tcp_socket.close()
中兴之后美对华为开刀,要求谷歌中断与华为的合作
宏碁布局印度市场,稳固商用市场并积极提升消费性市场
什么是步进电机?步进电机的基本参数、结构及其原理,步进电机的特点特性
DIY奥林巴斯数码相机快门线
2017年电子设备全球出货量或与2016年相仿
Python-网络编程
黑客入侵,美军坦克无人机相关技术资料或将曝光
碳酸锂期货临近 平抑锂价成效几何?
数码相机有效像素数
华为开发者大会2023正式发布HarmonyOS 4,升级用户已突破1000万,
荣耀7X与红米5 Plus拆机对比
华米科技:第三代自研可穿戴芯片将发布
荣耀V20评测 集家族前辈身上的各种吓人技术于一身
选用压敏电阻注意事项
迈入2023年,为什么大家都开始关注RedCap?
是德科技推出5G NR MIMO测试解决方案
基于区块链的代币经济机制正在重塑广告行业
PPTC保护元件可提高LED的性能和寿命
百兆网线和千兆网线的接线方法
采用定制LED光配方的“气雾培”植物工厂