我们不多说就开始吧。
网络
网络是人与人之间通过设备进行交流的工具。如果没有网络,人们只能面对面交谈,只能玩单机游戏。使用网络可以将多方联系在一起,然后可以传输数据。为了使运行在不同计算机上的软件能够相互传输数据,有必要使用网络的功能。所谓网络编程,就是让不同计算机上的软件能够传输数据,也就是进程之间的通信。
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相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!