|
<p>
话不多说直接开始
</p><p>
网络是人与人之间通过设备与设备之间通信的工具。如果没有网络人和人只能面对面的进行说话交流,玩游戏也只能玩单机。使用网络能够把多方链接在一起,然后可以进行数据传递,为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能。所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。
</p><p class="pgc-img-caption">
</p><p>
普通生活中的地址指的就是一个位置,用来标记地点。IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。IP地址就是用来在网络中唯一标记一台电脑或者一台设备。比如192.168.0.1,在本地局域网上是唯一的。
</p><p class="pgc-img-caption">
</p><p>
当然为了避免混乱,IP协议对IP地址进行了分类。
</p><p>
1. A类IP地址
</p><p>
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,
</p><p>
地址范围1.0.0.1-126.255.255.254
</p><p>
二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
</p><p>
可用的A类网络有126个,每个网络能容纳1677214个主机
</p><p>
2. B类IP地址
</p><p>
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,
</p><p>
地址范围128.1.0.1-191.255.255.254
</p><p>
二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
</p><p>
可用的B类网络有16384个,每个网络能容纳65534主机
</p><p>
3. C类IP地址
</p><p>
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”
</p><p>
范围192.0.1.1-223.255.255.254
</p><p>
二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
</p><p>
C类网络可达2097152个,每个网络能容纳254个主机
</p><p>
4. D类地址用于多点广播
</p><p>
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
</p><p>
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中
</p><p>
多点广播地址用来一次寻址一组计算机 s 地址范围224.0.0.1-239.255.255.254
</p><p>
5. E类IP地址
</p><p>
以“1111”开始,为将来使用保留,E类地址保留,仅作实验和开发用
</p><p>
6. 私有ip
</p><p>
在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就
</p><p>
是属于私网IP,不在公网中使用的,它们的范围是:
</p><p>
目前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将会慢慢的普及。
</p><p>
端口就相当于门牌号,整个房屋代表的就是一个程序。如果一个程序需要收发网络数据,那么就需要有这样的端口。在linux系统中,端口可以有65536(2的16次方)个之多!既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号。
</p><p class="pgc-img-caption">
</p><p>
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535
</p><p>
知名端口(Well Known Ports):
</p><p>
知名端口是众所周知的端口号,范围从0到1023。可以理解为电话号码中的110,120,10086一样。一般情况下,如果一个程序需要使用知名端口的需要有root权限。
</p><p>
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个程序关闭时,同时也就释放了所占用的端口号。
</p><p>
下面列举一些常用的端口号:
</p><p>
URL的英文全拼是(Uniform Resoure Locator),表达的意思是统一资源定位符,通俗理解就是网络资源地址,也就是我们常说的网址。
</p><p>
例如:
</p><p>
那么什么是
<strong>
域名
</strong>
呢?
</p><p class="">
域名就是
<strong>
IP地址的别名
</strong>
,它是用点进行分割使用英文字母和数字组成的名字,
<strong>
使用域名目的就是方便的记住某台主机IP地址
</strong>
。其实当我们访问一个网站输入网址的时候,浏览器会把网址发送给DNS服务器,通过DNS服务器解析出对应的IP地址然后开始访问对方的服务器。之后进行HTTP或者其他协议的访问,具体的访问原理将在后面给我,给个关注哈。
</p><p>
那么什么是DNS服务器?
</p><p>
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 所以选择好的DNS服务器将会大大提高我们的网络连接速度。
</p><p>
综上所述,不同电脑上的进程之间如何通信?
</p><p>
首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!
</p><p>
在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。
</p><p>
其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。
</p><p>
这样利用
<strong>
ip地址,协议,端口
</strong>
就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
</p><p>
作者简介:Python菜鸟工程师,将在接下来的一段时间内与大家分享一些与Python相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!
</p> |
|