首页 > 编程知识 正文

python异步网络编程(python和java)

时间:2023-05-03 19:46:11 阅读:103850 作者:3249

我们不多说就开始吧。

网络

网络是人与人之间通过设备进行交流的工具。如果没有网络,人们只能面对面交谈,只能玩单机游戏。使用网络可以将多方联系在一起,然后可以传输数据。为了使运行在不同计算机上的软件能够相互传输数据,有必要使用网络的功能。所谓网络编程,就是让不同计算机上的软件能够传输数据,也就是进程之间的通信。

IP地址

日常生活中的地址指的是一个位置,用来标记地点。是网际协议的缩写,是TCP/IP系统中的网络层协议。IP地址用于唯一标记网络中的计算机或设备。例如,192.168.0.1在本地局域网上是唯一的。

当然,为了避免混淆,IP协议对IP地址进行了分类。

1.a类IP地址

A类IP地址由1字节的网络地址和3字节的主机地址组成,网络地址的最高位必须为“0”。

地址范围1.0.0.1-126.255.255.254

二进制表示为:00000001 00000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

现有126个A类网络,每个网络可容纳1677214台主机。

2.乙类IP地址

B类IP地址由一个2字节的网络地址和一个2字节的主机地址组成,网络地址的最高位必须是“10”。

地址范围128.1.0.1-191.255.255.254

二进制表示为:100000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111111111111110

有16,384个可用的B类网络,每个网络可以容纳65,534台主机。

3.丙类IP地址

C类IP地址由一个3字节的网络地址和一个1字节的主机地址组成,网络地址的最高位必须是“110”

范围:192.0.1.1-223.255.255.254

二进制表示是: 110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

有2,097,152个C类网络,每个网络可容纳254台主机。

4.D类地址用于组播。

D类IP地址的第一个字节以“1110”开头,这是一个特别保留的地址。

它不指向特定的网络。目前,这种地址被用于组播。

多播地址用于一次寻址S地址范围224.0.0.1-239.255.255.254中的一组计算机。

5.E类IP地址

以“1111”开头,留作以后使用,E类地址只留作实验开发。

6.私有ip

在如此多的IP网络中,国际法规规定一些IP地址用于我们的局域网,也就是

属于专网IP,不用于公网。它们的范围是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

92.168.0.0 ~ 192.168.255.255目前IP协议有两个版本:ipv4和ipv6。IPv4规定IP地址长度为32,地址的文本格式为nnn.nnn.nnn,其中0=nnn=255,每个n为十进制数。ipv6中的IP地址长度为128,地址的文本格式为xxxxxx3360 xxxx 3360 xxxx 3360 xxxx 3360 xxxx 3360 xxxx 3360 xxxx 3360 xxxx 3360 xxxx,其中每个x为十六进制数,代表4位数字,IPv6更安全。不久前,ipv4宣布所有地址都用光了,现在ipv6将逐渐普及。

端口

端口相当于门牌号,整个房子代表一个程序。如果一个程序需要发送和接收网络数据,它需要这样一个端口。在linux系统中,可以有多达65536个端口(2的16次方)!既然有这么多,操作系统就给它们编号统一管理,也就是端口号。

港口通过了。

端口号来标记的,端口号只有整数,范围是从0到65535

知名端口(Well Known Ports):

知名端口是众所周知的端口号,范围从0到1023。可以理解为电话号码中的110,120,10086一样。一般情况下,如果一个程序需要使用知名端口的需要有root权限。

动态端口(Dynamic Ports):

动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个程序关闭时,同时也就释放了所占用的端口号。

下面列举一些常用的端口号:

21端口:FTP 文件传输服务 22端口:SSH 远程连接服务 23端口:TELNET 终端仿真服务 25端口:SMTP 简单邮件传输服务 53端口:DNS 域名解析服务 80端口:HTTP 超文本传输服务 443端口:HTTPS 加密的超文本传输服务 3306端口:MYSQL数据库端口 5432端口:postgresql数据库端口 6379端口:Redis数据库端口 8080端口:TCP服务端默认端口 8888端口:Nginx服务器的端口 9200端口:Elasticsearch服务器端口 27017端口:mongoDB数据库默认端口 22122端口:fastdfs服务器默认端口 8000端口:Django程序默认端口 5000端口:Flask程序默认端口

URL

URL的英文全拼是(Uniform Resoure Locator),表达的意思是统一资源定位符,通俗理解就是网络资源地址,也就是我们常说的网址。

URL的组成

例如:

https://www.baidu.com/main/88/2019/ABCDEGFG.html?page=1&count=10协议部分: https://、http://、ftp://域名部分: www.baidu.com资源路径部分:main/88/2019/ABCDEGFG.html查询参数部分: ?page=1&count=10

那么什么是域名呢?

域名就是IP地址的别名,它是用点进行分割使用英文字母和数字组成的名字,使用域名目的就是方便的记住某台主机IP地址。其实当我们访问一个网站输入网址的时候,浏览器会把网址发送给DNS服务器,通过DNS服务器解析出对应的IP地址然后开始访问对方的服务器。之后进行HTTP或者其他协议的访问,具体的访问原理将在后面给我,给个关注哈。

那么什么是DNS服务器?

DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 所以选择好的DNS服务器将会大大提高我们的网络连接速度。

综上所述,不同电脑上的进程之间如何通信?

首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!

在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。

其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。

这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

作者简介:Python菜鸟工程师,将在接下来的一段时间内与大家分享一些与Python相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。