day33 网络编程之UDP与进程了解
UDP
什么是UDP协议
在上节课的练习中,使用TCP进行网络编程时,我们会遇到粘包问题,这是因为TCP是流式协议,而今天学习的UDP协议不是流式协议,其发送的数据是数据报格式的,在进行数据发送时该协议会自动加上报头及报尾,使每次发送的数据之间都是有间隔的,这样在进行接收时就会每次接收一条数据。
为什么会有UDP协议?
在使用TCP协议进行通讯时,由于TCP协议需要进行三次握手建连接,四次挥手断连接,这个过程虽然十分可靠,但是这个过程十分的繁琐,会影响数据之间的通讯效率,对于一些对于数据的可靠性要求较高的通讯,使用TCP协议十分的合理,但是对于那些对通讯的可靠性要求不高,而对通讯的效率要求较高的程序,使用TCP通讯协议就会产生效率的问题,此时使用UDP协议进行通讯就显得十分的合理
UDP协议与TCP协议的比较
在使用UDP及TCP进行通讯时,这两种协议并没有好坏之分,只是根据对于通讯要求的侧重点不同而选择不同的通讯协议
TCP协议:
优点:
TCP协议是可靠协议,使用TCP协议进行通讯时,其基本上不会丢包,这是因为在发送数据时,客户端与服务器之间会进行确认,如果服务器收到了来自服务器的确认信息,才会删除缓存中的信息,确保服务器可以收到来自对方的消息
TCP协议可以传输数据量较大的数据
缺点:
需要进行三次握手,传输效率较低
UDP协议
优点:
使用UDP进行数据传输时,传输效率较高
缺点:
UDP是不可靠传输,传输时容易发生丢包,这是因为,在发送数据时,客户端与服务器端之间没有建立连接,没有进行信息的确认,在发送完数据后就将缓存中的数据删除了,不管对方有没有收到,容易丢包
使用UDP进行数据传输,传输的数据量不能太大,这是因为数据传输时,在数据链路层会进行数据的切割,将其切割成帧的形式进行发送,而每个数据帧最大为1518个字节,在将OSI所加的所有报头信息减去后,确认数据的大小最好小于1472个字节,这样在发动端不会进行数据切割,减少丢包的概率
如何使用UDP协议?
在程序中使用UDP客户端及服务端较TCP协议简单,这是因为UDP协议不需要建立连接,这就不需要监听端口,也不需要接收客户端发来的链接,只需要接收就可以
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(("127.0.0.1",8088))
server.recv_from(1024)
server.sendto("信息".encode("utf-8"),客户端的地址及端口元组)
UDP使用案例之DNS服务
DNS的全名为域名解析系统,是将域名解析为ip地址的服务,其对于速度的要求较高而对稳定性要求不高,所以其使用的就是UDP协议
进程了解
进程指的是正在进行中的程序,进程是一个虚拟的概念,当程序从硬盘加载到内存上来以后就称之为进程
进程时依据操作系统而存在的,在发明多道技术之前根本没有进程的概念,这是因为所有的计算机只能在同一时间运行一个程序,当这个程序运行完之后,才能运行下一个程序
那什么是多道技术呢?
多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
多道技术时间以及空间上的复用
时间上的复用:计算机在同一时间可以运行多个程序(看上去时同时)
空间上的复用:在同一时间可以将多个程序加载到内存中,这是因为将内存进行物理层面的分割,使每个只能占有其中的一块空间,其所有的数据都会放在这个空间,这个空间在这个时间是这个程序独用的,数据之间不会相互影响,所以可以在同时加载进多个程序。
day33 网络编程之UDP与进程了解的更多相关文章
- 网络编程之UDP编程
网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...
- Java网络编程之UDP
Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方 ...
- java网络编程之UDP通讯
详细介绍了java中的网络通信机制,尤其是UDP协议,通过对UDP的基本使用进行举例说明如何使用UDP进行数据的发送接收,并举了两个小demo说明UDP的使用注意事项. UDP协议原理图解: UDP协 ...
- (28)网络编程之UDP
介绍UDP通信协议的编程之前,先介绍一下网络编程,socket相关的概念: 网络编程:网络编程主要用于解决计算机与计算机(手机平板等)之间的数据传输问题. 网络编程:不需要基于html网页就可以达到数 ...
- 网络编程之UDP(3)丢包总结
读书笔记 from here UDP socket缓冲区满造成的UDP丢包 如果socket缓冲区满了,应用程序没来得及处理在缓冲区中的UDP包,那么后续来的UDP包会被内核丢弃,造成丢包.在sock ...
- 网络编程之UDP中一个包的大小最大能多大
读书笔记:here 结论1:局域网环境下,建议将UDP数据控制在1472字节以下 一定要知道 因为链路层的传输单元(MTU)是1500字节,1500字节中并不包含链路层的首尾18个字节.1500字节是 ...
- java 25 - 4 网络编程之 UDP协议传输的代码优化
UDP协议的输出端: /* UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) */ public c ...
- java 25 - 4 网络编程之 UDP协议传输思路
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...
- Java:网络编程之UDP的使用
java.net 类 DatagramSocket 此类表示用来发送和接收数据报包的套接字,数据报套接字是包投递服务的发送或接收点. java.net 类 DatagramPacket 此类表示数 ...
随机推荐
- 12、redis部分
- tensorboard 远程服务器本地浏览器无法显示
在用xshell等ssh工具远程连接服务器时,我们常常在服务器上运行tensorflow代码,而且模型tf.summary保存文件在服务器上,这是直接采用tensorboard会有一些小问题.直接用t ...
- 顺序表应用1:多余元素删除之移位算法(SDUT 3324)
Problem Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据 ...
- 下载 OllyDbg
http://www.ollydbg.de/
- 1.5 JAVA的IO操作
1.5 JAVA的IO操作 参考链接:https://www.runoob.com/java/java-files-io.html 一.JAVA的IO操作 由于JAVA引用外界的数据,或是将自身的数据 ...
- 通过Maven更换环境配置文件
大致思路:配置文件有三套:main/resources.devmain/resources.prodmain/resources.test公共部分放到main/resource下使用mvn clean ...
- ubuntu18.04安装mysql以及重置密码创建新用户
1.安装mysqlsudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libm ...
- vue 无法覆盖vant的UI组件的样式
vue 无法覆盖vant的UI组件的样式 有时候UI组件提供的默认的样式不能满足项目的需要,就需要我们对它的样式进行修改,但是发现加了scoped后修改的样式不起作用. 解决方法: 使用深度选择器,将 ...
- laravel中orderBy使用
laravel中orderBy使用 一.总结 一句话总结: 链式操作:laravel中的数据库操作可以是链式操作,所以类似这种想要多个orderBy效果的就直接接在后面写就可以了 User::orde ...
- linux系统及命令学习
1,基本概念 Shell(命令行):是一个程序,接受键盘输入的命令,并将命令传递给操作系统进行执行. Bash:Bourne Again Shell, 是大多数linux系统分之中所带的一种shell ...