网络编程
·使用网络能够把多方链接在一起,然后可以进行数据传递
·所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信
端口号
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535
端口是怎样分配的
端口号不是随意使用的,而是按照一定的规定进行分配。
端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口
动态端口(Dynamic Ports)
动态端口的范围是从1024到65535
之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。
当这个进程关闭时,同时也就释放了所占用的端口号。
socket
socket(简称套接字)是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于Socket来完成通信的
例如我们每天浏览网页、QQ聊天、收发email等等
在Python中 使用socket模块的函数socket就可以完成:
socket.socket(AddressFamily, Type)
udp
UDP ---用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
UDP特点:
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
【适用情况】
UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如
·语音广播
·视频
·TFTP(简单文件传送)
·SNMP(简单网络管理协议)
·RIP(路由信息协议,如报告股票市场,航空信息)
·DNS(域名解释)
每向客户端发送消息的时候都会改变端口号
·一个udp网络程序,可以不绑定,此时操作系统会随机进行分配一个端口,如果重新运行次程序端口可能会发生变化
·一个udp网络程序,也可以绑定信息(ip地址,端口号),如果绑定成功,那么操作系统用这个端口号来进行区别收到的网络数据是否是此进程的