美文网首页
python-网络编程-tcp/ip认识(二)

python-网络编程-tcp/ip认识(二)

作者: 叩丁狼教育 | 来源:发表于2018-12-06 09:48 被阅读36次

    本文作者:黎智煊,叩丁狼高级讲师。原创文章,转载请注明出处。

    端口

    1 什么是端口

    叩丁狼教育.png

    那么TCP/IP协议中的端口指的是什么呢?

    端口就好一个房子的门,是出入这间房子的必经之路。

    叩丁狼教育.png

    如果一个进程需要收发网络数据,那么就需要有这样的端口

    在linux系统中,端口可以有65536(2的16次方)个之多!

    既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号

    2. 端口号

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

    3. 端口是怎样分配的

    端口号不是随意使用的,而是按照一定的规定进行分配。

    端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口

    3.1 知名端口(Well Known Ports)

    知名端口是众所周知的端口号,范围从0到1023

    80端口分配给HTTP服务
    21端口分配给FTP服务
    
    

    可以理解为,一些常用的功能使用的号码是估计的,好比 电话号码110、10086、10010一样

    一般情况下,如果一个程序需要使用知名端口的需要有root权限

    3.2 动态端口(Dynamic Ports)

    动态端口的范围是从1024到65535

    之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。

    动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。

    当这个进程关闭时,同时也就释放了所占用的端口号。

    3.3 怎样查看端口 ?

    用“netstat -an”查看端口状态

    1. 什么是地址

    叩丁狼教育.png

    地址就是用来标记地点的

    2. ip地址的作用

    叩丁狼教育.png

    ip地址:用来在网络中标记一台电脑的一串数字,比如192.168.1.1;在本地局域网上是惟一的。

    3 ip地址的分类

    每一个IP地址包括两部分:网络地址和主机地址

    3.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个主机

    3.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.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个主机

    3.4 D类地址用于多点广播

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

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

    多点广播地址用来一次寻址一组计算机

    地址范围224.0.0.1-239.255.255.254

    3.5 E类IP地址

    以“1111”开始,为将来使用保留

    E类地址保留,仅作实验和开发用

    3.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
    
    

    3.7 注意

    IP地址127.0.0.1~127.255.255.255用于回路测试,

    如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

    子网掩码

    要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

    IP地址的网络号和主机号各是多少位呢?

    如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。

    子网掩码不能单独存在,它必须结合IP地址一起使用。

    子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的规则。

    与IP地址相同,子网掩码的长度也是32位,

    左边是网络位,用二进制数字“1”表示;
    右边是主机位,用二进制数字“0”表示。
    假设IP地址为“192.168.1.1”子网掩码为“255.255.255.0”。

    其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;

    “0”有8个,代表与此相对应的IP地址右边8位是主机号。

    这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。

    这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
    最常用的两种子网掩码

    子网掩码是“255.255.255.0”的网络:

    最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。
    但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。
    主机号全为0,表示网络号

    主机号全为1,表示网络广播

    注意

    如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关(文章下方有解释)的负担,造成网络效率下降。因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;假如在一所大学具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。

    想获取更多技术干货,请前往叩丁狼官网:http://www.wolfcode.cn/all_article.html

    相关文章

      网友评论

          本文标题:python-网络编程-tcp/ip认识(二)

          本文链接:https://www.haomeiwen.com/subject/yvjncqtx.html