专业编程基础技术教程

网站首页 > 基础教程 正文

学Python必备的网络编程基本知识(python网络编程从入门到精通)

ccvgpt 2024-11-17 07:24:39 基础教程 36 ℃

话不多说直接开始

网络

网络是人与人之间通过设备与设备之间通信的工具。如果没有网络人和人只能面对面的进行说话交流,玩游戏也只能玩单机。使用网络能够把多方链接在一起,然后可以进行数据传递,为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能。所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。

学Python必备的网络编程基本知识(python网络编程从入门到精通)

IP地址

普通生活中的地址指的就是一个位置,用来标记地点。IP是Internet Protocol(网际互连协议)的缩写,是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 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

可用的A类网络有126个,每个网络能容纳1677214个主机

2. B类IP地址

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

地址范围128.1.0.1-191.255.255.254

二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

可用的B类网络有16384个,每个网络能容纳65534主机

3. C类IP地址

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

范围192.0.1.1-223.255.255.254

二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

C类网络可达2097152个,每个网络能容纳254个主机

4. D类地址用于多点广播

D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。

它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中

多点广播地址用来一次寻址一组计算机 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

192.168.0.0~192.168.255.255

目前IP协议有ipv4和ipv6两个版本,IPv4中规定IP地址长度为32,地址的文本格式为 nnn.nnn.nnn.nnn,其中 0<=nnn<=255,而每个 n 都是十进制数。IPv6中IP地址的长度为128,地址的文本格式为 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx: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相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!

    Tags:

    最近发表
    标签列表