python_day33- udp 多道技术
一 udp:(用户数据报协议)
定义:
是一种协议,中文翻译为用户数据报协议,是传输层的以一层协议,是一种不可靠快速传输协议. 一般适合比较小数据之间的传递
优点:
传输速度快 不会产生粘包问题
缺点:
无法保证数据传输的完整性 不提供数据包分组、组装和不能对数据包进行排序的缺点
应用场景:一般游戏中 和 视频通讯中 运用较多
二 UDP和TCP比较:
TCP 可靠传输 能够保证数据的完整性 传输内容较大 传输速度慢 效率慢 会产生粘包问题 适合需要完整信息的传递 如 线上支付 文本信息传输等
UDP 不可靠快速传输 无法保证数据传输的完整性 传输的内容较小 效率快 不会产生粘包问题 适合那些对数据不要求完整的数据传输
三 基于UDP的socket
和tcp一样 可以理解为某个过程 根据UDP特点 可以把建立socket的udp协议当做一个传呼机通讯的过程
客户端版本 from socket import * # 导入socket下的所有用法 client = socket(AF_INET,SOCK_DGRAM) # 1 买传呼机 指定格式是基于UDP while True:msg = input('输入信息:')client.sendto(msg.encode('utf-8'),('127.0.0.1',1988)) # 2 传输的内容和具体接口 相当与数据和频道data,addr =client.recvfrom(1472) # 3 接收的时候 print(data)
服务器版本from socket import *server= socket(AF_INET,SOCK_DGRAM) # 1 买传呼机 指定是udp格式 server.bind(('127.0.0.1',1988)) # 2 确定自己的频道和端口 绑定ip和端口号 while True:data,addr = server.recvfrom(1472) # 3 接收信息 需要确定是从哪传输过来的 需要保存数据和地址 # 1472一般是默认最优server.sendto(data,addr) # 4 发送数据 地址 给对方 信息 其中1472是udp最大数据长度
基于UDP的时间服务器练习客户端 from socket import *client = socket(AF_INET,SOCK_DGRAM)while True:client.sendto('%Y-%m-%d'.encode('utf-8'), ('127.0.0.1',1988))data = client.recvfrom(1472)print(data)服务器 from socket import * import timeserver= socket(AF_INET,SOCK_DGRAM) server.bind(('127.0.0.1',1988))while True:data,addr = server.recvfrom(1742)res = time.strftime(data.decode('utf-8'),time.localtime()) # 转化的是字符串可是 server.sendto(res.encode('utf-8'),addr) # 在解码成utf-8格式
基于UDP格式socket的注意点
注意1:发送方的数据长度应与接收方的接受长度统一,否则将丢失数据,windows下直接报错。
注意2:缓存区大小不可能无限大,如果要传输大数据超过UDP数据报大小,则需要在UDP基础上加上额外的应用层协议。
四 基于UDP应用DNS (了解)
我们都知道,两台计算机要通讯则必须知道对方的IP地址,但是IP地址较复杂不方便记忆,造成用户上网成本高,体验差,于是就想到了给IP地址取别名的办法,这就是域名。如www.baidu.com
域名:
是给IP地址取的别名,同时为了在查询名字与地址对应关系时更快,所以给域名也划分了不同区域。
分类
1.1 国际顶级域名,工商企业.com .top,网络提供商.net,非营利性组织.org,教育.edu
1.2 国际域名,中国.cn,美国.us,日本.jp
但随之而来的问题是域名虽然简化了记忆,但是数据传输依然要依赖IP地址和端口,所以想要还要提供一个可以通过域名获取ip的机制,这就是DNS
DNS
全称域名解析服务器,其本质上就是一个大型数据库系统
DNS访问流程:
当我们要访问一个地址如www.baidu.com时
1.浏览器首先会询问本地DNS服务器(即网络运营商如电信,联通),以获取对应的IP,
2.如果本地DNS中没有想要的记录,则本地DNS,会询问根(1级)域名服务器,全球有13台
根域名服务器中不可能存储全世界所有IP所以它仅存储顶级(2级)域名服务器的IP
例如:COM域主服务器的IP,NET域主服务器的IP
3.于是本地DNS得到COM域服务器IP后向其发送请求,
4.由于一个域名可以对应多个IP所以还需要向三级域名主机发出请求
5.最后将返回的IP信息缓存到本地DNS中备用
五 进程篇
什么是进程 :
指的是正在运行的程序 是一系列过程的的统称 也是操作系统在调度和进行资源分配的接班单位
进程的概念来自于操作系统 简单介绍下
操作系统的作用
1)屏蔽复杂繁琐的硬件接口 为应用程序提供简单应用的系统接口
2) 操作系统将应用程序对资源的分配的竞争变得有序起来
多线程中的多道技术:
多线程 指的是多个应用程序同时进行 (其实也是有先后顺序的 因为计算机速度特别快,给人的感觉上就像是同时进行)
多道技术:
多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限)
空间上的复用最大的问题是:程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,
首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。
其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。
转载于:https://www.cnblogs.com/wakee/p/10952062.html
python_day33- udp 多道技术相关推荐
- socketserver模块用法,多道技术、 基于UDP的简易版QQ
复习 1.OSI七层2.以太网协议3.ip协议(arp协议)4.TCP5.UDP OSI七层 应表会 # 应用层 (HTTP协议, FTP协议)传输层 # 端口协议 在此层发挥作用网络层 # IP协议 ...
- 网络编程 多道技术与同步/异步和阻塞/非阻塞
UDP协议服务端模板代码 import socketserver = socket.socket(type=socket.SOCK_DGRAM) # 创建socket对象,括号内选择类型为UDPser ...
- 虚拟化技术原理与实现 pdf_多进程的实现原理-多道技术
1.操作系统 位于应用软件和硬件设备之间,本质是一个软件 核心作用: 1.为用户屏蔽了复杂繁琐的硬件接口;为应用程序提供了清晰易用的系统接口 2.将用用程序对硬件资源的竞争变得有序 操作系统与应用 ...
- 计算机的发展史及多道技术
首先先补充一下上一篇的一个小问题. 应用程序的启动流程: 前提:应用程序是运行于操作系统之上的 举例:启动暴风音影 1.双击快捷方式 2.告诉操作系统一个文件路径 3.操作系统从硬 ...
- 报名倒计时 | 有道技术沙龙,聊聊明星语音背后的故事
自上周有道技术沙龙开始招募以来 已经收到了众多小伙伴的报名 给爱学习的同学们点个赞! 目前,有道技术沙龙仍在报名中 欢迎来有道技术沙龙现场交流 到场观众赠送网易纪念款帆布包 严选好物抽奖送不停! 同时 ...
- pwnat——一种无需第三方服务器就能完成NAT点对点P2P穿透的基于UDP打洞技术的新方法
pwnat--一种无需第三方服务器就能完成NAT点对点P2P穿透的基于UDP打洞技术的新方法 简介 传统的udp打洞 UDP 打洞原理及过程 pwnat技术,无需第三方服务器! pwnat用法 pwn ...
- 有道技术团队入选 2021思否中国技术先锋年度评选两项榜单
2022 年 1 月 13 日,中国技术先锋年度评选 | 2021 SegmentFault 思否技术先锋年度榜单正式发布.网易有道技术团队同时登榜思否年度技术团队榜单和中国技术品牌影响力企业. 思否 ...
- 并发编程-操作系统简史,多道技术
多进程的实现原理-多道技术 操作系统介绍 下图是操作系统在整个计算机中所在的位置: 位于应用软件和硬件设备之间,本质上也是一个软件, 由系统内核(管理所有硬件资源)与系统接口(提供给程序员使用的接口) ...
- 前端代码的整洁之道 | 技术头条
在前端开发过程中,你有没有遇到过由于代码交互太多太重时,想改动一行代码"牵一发而动全身":使用框架很爽,可框架绑定应用却很麻烦?那么如何解决呢? 你需要"前端整洁&quo ...
最新文章
- 天津大学计算机课程设计挂,《天津大学_智能装置课程设计报告》.doc
- 化学反应工程 第一章 均相单一反应动力学和理想反应器
- mysql职业要求_为什么面试的每一家都要求掌握MySQL?
- 你试过这样写C程序吗
- 计算机视觉结课论文,计算机视觉与图像识别结课论文
- TPLinker 联合抽取 实体链接方式+源码分析
- 03月11日单应矩阵与鸟瞰图IPM变换
- iOS 不规则的ImageView
- 普林斯顿微积分读本:第 3 章 极限导论
- 内外网切换BAT脚本
- 华为OD岗位面试流程及总结
- 10.SpringBoot学习(十)——JDBC之 Spring Boot Jpa
- 多路视频直播播放器系统框架
- 精选“数据分析”好问题汇总·第一期
- 西南交通大学linux内核,GitHub - Laotree/SWJTU-Developer: 西南交通大学开发者社区——为交大开发者提供交流的平台...
- 数据分析师必备技能之PowerBI教程
- python主成分得分系数矩阵_用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么...
- 校外活动计算机社团策划书,社团活动策划
- xml 转json 传输
- 如何从访客属性分析网站用户群
热门文章
- javascript 关键字this
- Android学习之Intent使用
- js中几个对象的区别和用法
- Zend Framework实例教程
- 【微型计算机原理与接口技术】寻址方式
- 大话设计模式-原型模式的浅复制与深复制
- 高项近5套选择题知识点思维导图
- views是什么意思_views是什么意思_views怎么读_views翻译_用法_发音_词组_同反义词_看( view的名词复数 )-新东方在线英语词典...
- centos7,pyinstaller打包出application/x-sharedlib,这是一个求助的帖子
- 怎么将excel中的url批量转化为图片_Python+Wind 批量下载上市公司年报 - Part 1/2