初学python之路-day33

1.udp协议

udp:用户数据包协议
在OSI模型中,属于传输层的协议, 
不可靠性,不要求分组顺序且数据量较小的简单传输,传输速度快
类似对讲机,只顾发送数据,不管对方是否接受,甚至不关心对方是否在线

与tcp的区别:
不可靠传输,无需建立连接,更不会粘包,但是每次发送的数据包不能太大
另外UDP是基于数据报的,每一次发送都是一个单独的数据报,所以不会产生粘包问题

在发送数据时: udp发送数据一旦发送出去,缓存区的数据就会被删除,若对方没有收到,数据就没了,造成数据丢失 tcp在发送数据后会等待确认信息,如果没有收到确认信息,数据还会保存在缓冲区去,直到发送成功为止
或者等待时间过长超时

注意:
发送方的数据长度应与接收方的接受长度统一,否则将丢失数据,windows下直接报错。

  缓存区大小不可能无限大,如果要传输大数据超过UDP数据报大小,则需要在UDP基 础上加上额外的应用层协议。

  并且即使缓冲区足够仍会出现数据丢失,UDP的最大数据长度为1472

udp代码:

服务器端
    服务器不需要监听 listen
    不需要接收请求 accept
    收数据  recvfrom(缓冲区大小)
    发数据  sendto(数据,地址)
客户端:
    不需要建立连接
    收数据  recvfrom(缓冲区大小)
    发数据  sendto(数据,地址)
案例:

服务器:
from socket import *

# 创建基于UDP的scoket  必须手动指定
server = socket(AF_INET,SOCK_DGRAM)

server.bind(("127.0.0.1",1688))

while True:
    data,addr = server.recvfrom(1024)
    print("收到来自%s的消息 : %s"  % (addr,data))
    server.sendto(data.upper(),addr)

# server.close()

客户端:

import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#  UDP 不需要建立链接

# 发送数据时  要指定接受方地址
client.sendto("hello".encode("utf-8"),("127.0.0.1",1688))

data,addr = client.recvfrom(1024)
print("收到来自%s的消息 : %s"  % (addr,data))


client.close()

2.UDP的应用:DNS

DNS:
域名系统(Domain Name System)是互联网的一项服务

域名:
是给IP地址取的别名,同时为了在查询名字与地址对应关系时更快,所以给域名也划分了不同区域。
DNS的作用:
将域名转换为IP地址     要连接服务器 一定要知道IP 
单独ip不方便记忆  所以我们吧ip和一个域名绑定到一起   域名一串有规律的字符串

DNS 是CS结构的server端
DNS 使用的是UDP 协议 因为  传输的数据小 但对速度要求高  一个DNS要服务很多计算机

DNS 本质就是一个大型数据库系统, 里面存储 域名和ip的对应关系

3.进程

进程:
指的是正在运行的程序,是一系列过程的统称,也是操作系统在调度和进行资源分配的基本单位

进程是实现并发的一种方式

4.多进程的实现原理-多道技术

进程这个概念来自于操作系统,没有操作系统就没有进程

操作系统:
位于应用软件和硬件设备之间,本质上也是一个软件,由系统内核(管理所有硬件资源)与系统接口(提供给程序员
使用的接口)组成,操作系统是为方便用户操作计算机而提供的一个运行在硬件之上的软件 操作系统的两个核心作用:
1.控制硬件,隐藏丑陋复杂的硬件细节 2.将无序的硬件竞争变得有序 多道技术:为了提高计算机的利用率 在计算机发展的前期,同一时间只能运行一个程序,要同时多个应用程序被运行,就需要多道技术 多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的
有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
1.空间复用 把内存分割为不同区域 ,每个区域装入不同的程序 2.时间复用 当一个程序执行IO操作时,切换到另一个程序来执行 光切换还不行 必须在切换前保存当前的状态 以便与恢复执行 **空间上的复用最大的问题是:**程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果
内存彼此不分割,则一个程序可以访问另外一个程序的内存, 首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。 其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,
则操作系统崩溃。 多道技术的作用: 计算机就可以在同一时间处理多个任务 注意: 并不是多道就一定提高了效率,如果多个任务都是纯计算 那么切换反而降低了效率;遇到IO操作才应该切换,
这才能提高效率

猜你喜欢

转载自www.cnblogs.com/wangwei5979/p/10951443.html
今日推荐