------------------------针对网络地址相关的小白,最快速接触网络知识-------------------------

可以使用python自带的模块IPy,进行处理IP地址或IP之间的转化。

下载以及安装的方式参照链接:http://blog.51cto.com/weixiaoxin/2063332

IP地址:

概述:

计算机要实现网络通信,就必须要有一个用于快速定位的网络地址。IP地址就是计算机网络中的唯一身份ID,与现实世界中快递的配送需要有具体的住宅是一个道理。

每个IP地址的长度为32位(bit)[4 * 8bit(1字节)由 0/1 组成的数字串],分4段,每段8位(1个字节),常用十进制数字表示,每段数字范围为1~254,段与段之间用小数点分隔。如某一台主机的ip地址为:128.20.4.1。

IP地址的组成

IP地址 = 网络地址 + 主机地址 (又称:主机号和网络号组成)

想想,为什么会有行政区划的划定(国家、省市区、街道等),为了更加高效的进行管理、定位;相同的,我们通常将网络也可以分为很多的子网络,每个子网络有自己的网络地址,每个子网络由很多的计算机组成(当然也可以包含另外一个子网络)。我们要找到指定的IP地址,只要先找到指定的网络地址,然后在该网络内找到对应的主机地址即可。

以 IP地址 192.168.1.168, 子网掩码 255.255.255.0为例,这个地址中包含了很多含义,即:

192.168.100.168(IP地址) = 192.168.1.0 (网络地址) + 0.0.0.168(主机地址)

在局域网里,同样也需要ip地址,一般内网的ip地址是以192.168开头的,这样很容易区分公网和内网的ip地址。

IP地址分类

网络地址的位数直接决定了可以分配的网络数;主机地址的位数则决定了网络中最大的主机数。

A类地址: 网络位8(7)位+主机位24位,0****************************

IP范围:1.0.0.0--126.255.255.255

127网络位是本地测试地址,不能用于数据通讯。

IP范围:127.0.0.0--127.255.255.255

B类地址:网络位16(14)位+主机位16位,10***************************

IP范围:128.0.0.0--191.255.255.255

C类地址:网络位24(21)位+主机位8位,110**************************

IP范围:192.0.0.0--223.255.255.255

D:224.0.0.0——239.255.255.255

E:240.0.0.0——255.255.255.255

A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。

B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。

C类地址(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。

D类地址并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。D类地址的范围为224.0.0.0-239.255.255.255。

E类(240.0.0.0-255.255.255.254)地址用于试验。

合法的IP地址

IP是Internet Protocol(国际互联网协议)的缩写。

各主机间要进行信息传递必须要知道对方的IP地址。同一个物理网络上的所有主机都用同一个网络ID,网络上的一个主机(工作站、服务器和路由器等)对应有一个主机ID。这样把IP地址的4个字节划分为2个部分,一部分用来标明具体的网络段,即网络ID;另一部分用来标明具体的节点,即宿主机ID。

这样的32位地址又分为五类分别对应于A类、B类、C类、D类和E类IP地址。

A类IP地址 一个A类IP地址由1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,即第一段数字范围为1~127。每个A类地址可连接16387064台主机,Internet有126个A类地址。

B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,即第一段数字范围为128~191。每个B类地址可连接64516台主机,Internet有16256个B类地址。

C类IP地址 一个C类地址是由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”,即第一段数字范围为192~223。每个C类地址可连接254台主机,Internet有2054512个C类地址。

D类地址用于多点播送。 第一个字节以“1110”开始,第一个字节的数字范围为224~239,是多点播送地址,用于多目的地信息的传输,和作为备用。全零(“0.0.0.0”)地址对应于当前主机,全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

E类地址 以“11110”开始,即第一段数字范围为240~254。E类地址保留,仅作实验和开发用。

子网掩码

(也叫做:网络掩码、地址掩码、子网络遮罩)

子网掩码是一个长度为 4 * 8bit(1字节),由连续的1 以及连续的0 两部分组成。

它的作用是:屏蔽(遮住)IP地址的一部分以划分成网络地址和主机地址两部分,并说明该IP地址是在局域网上,还是在远程网上。通过子网掩码,可以把网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。子网掩码不能单独存在,它必须结合IP地址一起使用。

假设,局域网中 计算机A 的IP地址为 192.168.1.1,子网掩码为 255.255.255.0, 如下图所示:

网络地址: IP 地址中被 连续的1 遮住的部分,即 11000000.10101000.00000001.00000000, 对应的网络地址:192.168.1.0

主机地址: IP 地址中被 连续的0 遮住的部分,即 00000000.00000000.00000000.00000001, 对应的网络地址:0.0.0.1

其他信息:A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

常用的子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。

1. 子网掩码是“255.255.255.0”的网络

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

2. 子网掩码是“255.255.0.0”的网络:后面两个数字可以在0~255范围内任意变化,可以提供2552个IP地址。但是实际可用的IP地址数量是2552-2,即65023个。

如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;笔者见到的最大规模的中小学校园网具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。局域网最常使用的IP地址“192.168.x.x”默认的子网掩码是“255.255.255.0”。一般情况下,IP地址使用默认子网掩码就可以了。

掩码有两种形式,一种是数字表达形式,比如:255.255.0.0 。这个按数字表达就是16

通过子网掩码计算网络地址

计算过程是这样的:

  1. 将IP地址和子网掩码都换算成二进制;

  2. 将两者进行 "与运算",得到网络地址。

假设 IP地址为 192.168.1.168,子网掩码为 255.255.255.0, 则网络地址换算步骤如下:

1)将IP地址和子网掩码分别换算成二进制   

    192.168.1.168 换算成二进制为 11000000.10101000.00000001.10101000

    255.255.255.0 换算成二进制为 11111111.11111111.11111111.00000000

2)将二者进行与运算

         11000000.10101000.00000001.10101000

    与运算  11111111.11111111.11111111.00000000

    结果    11000000.10101000.00000001.00000000

3) 将运算结果换算成十进制: 192.168.1.0

扩展:IP网段表示法

    举例说明:192.168.0.0/24

    192.168.0.0——网络地址

    24——表示子网掩码二进制表示法中,连续的 1 的 个数,这里为:      11111111.11111111.11111111.00000000,即 255.255.255.0

通过子网掩码计算主机地址

计算过程是这样的:

  1. 将IP地址和子网掩码都换算成二进制;

  2. 将IP地址和子网掩码取反进行 "与运算",得到主机地址。

  IP                   11000000.10101000.00000000.00000001

子网掩码          11111111.11111111.11111111.00000000

得出AND结果     11000000.10101000.00000000.00000000

转换为十进制    192.168.0.0,这就是网络标识,再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP AND 得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,这0.0.0.1就是主机标识。要想在同一网段,必需做到网络标识一样。

  

网关

什么是网关?

  连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制。网关地址就是网关设备的IP地址。

  网关设备可以是 交互机(三层及以上才能跨网络)、路由器、启用了路由协议的服务器、代理服务器、防火墙等

  假设我们有两个网络:

    网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0

    网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0

  要实现这两个网络之间的通信,则必须通过网关。

  网络A向网络B转发数据包的过程:

   如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

默认网关

  一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。

  网络ID相同的计算机称之为本地网络,本地网络中的计算机相互通信不需要路由器连接;网络ID不相同的计算机称之为远程网络,远程网络中的计算机要相互通信必须通过路由器连接。

例题1:

172.168.34.56/20,一共划分了多少个子网,各子网可以包含多少台主机?

答:

172.168.34.56是一个B 类地址,B类地址用16位表示网络ID,题目中20位表示网络ID,则子网位数为4位,那么子网就有16种变化。

由于IP地址是32位,用20位表示网络ID,则主机ID的位数为12位,则每个子网可以包含2的12次方-2个IP地址,即可以包含4096个IP地址。

注意:主机ID不能全为0也不能全为1。

例题2::

255.255.248.0这个子网掩码可以最多容纳多少台电脑?

答:

把将其转换为二进制的四段数字(每段要是8位)11111111.1111111.11111000.00000000 然后,数数后面有几颗0,一共是有11颗,那就是2的11次方,等于2048,这个子网掩码最多可以容纳2048台电脑。

Mac地址

合法与非法的Mac地址划分:

MAC地址的第一个字节必须为偶数,第一个字节为奇数的MAC地址为多播地址。有这样的一种区别方式,但有的UI不做限制,因此这里先不用关注这点。这里所说的无效是:超过16进制的字符即可。

MAC地址的连接方式:“:”或“-”

生成随机Mac代码:

import random

Maclist = []

for i in range(1,7):

   RANDSTR = "".join(random.sample("0123456789abcdef",2))

  Maclist.append(RANDSTR)

  RANDMAC = ":".join(Maclist)print(RANDMAC)

注意:

本机的ip是:127.0.0.11

MAC地址的连接方式:“:”或“-”

中文字符,必须包括“简体字和繁体字”

对于测试来说,有效边界值和无效边界值都必须测试

IP地址简单入门的更多相关文章

  1. 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...

  2. 一个简单的例子理解Kubernetes的三种IP地址类型

    很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚. 本文我们通过一个最简单的例子来学习. 用如下命令行创建一个基于nginx的deployment ...

  3. mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少

    MDNS协议介绍 mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251.在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口.包格 ...

  4. Cisco思科模拟器 交换机IP地址的配置 入门详解 - 精简归纳

    Cisco思科模拟器 交换机IP地址的配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 10 转载请注明出处!️ 目录 Cisco思科模拟器 交换机IP地址的配置 入门详解 ...

  5. Cisco思科模拟器路由器各个端口IP地址的配置及路由协议RIP的配置 入门详解 - 精简归纳

    Cisco思科模拟器路由器各个端口IP地址的配置及路由协议RIP的配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 11 / 21 转载请注明出处!️ 附: 交流方式: ️ ️ ️ Q ...

  6. 分配IP地址的好东西 DHCP以及NAT简单介绍

    主机配置协议DHCP 1.DHCP应用场景 2.DHCP基础原理 3.NAT简单介绍 4.配置命令 1.手工配置IP地址,工作量比较大而且不好管理,如果用户自己修改参数,可能会导致ip地址冲突,这个时 ...

  7. 黑客入门之IP地址及常用命令

    在网络上,只要利用IP地址就可以找到目标主机,因此,如果黑客想要攻击某个网络主机,就要先确定该目标主机的域名或IP地址. IP地址概述 所谓IP地址就是一种主机编址方式,给每个连接在Internet上 ...

  8. java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器

    实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...

  9. 网络构建入门技术(3)——IP地址分类

    说明(2017-5-16 09:48:08): 1. IP地址

随机推荐

  1. 转: eclipse 快捷键列表(功能清晰版本)

    转自: http://www.uml.org.cn/mobiledev/201110092.asp Eclipse 在开发中使用到的快捷键很实用噢 Ctrl+1 快速修复(最经典的快捷键,就不用多说了 ...

  2. 《The Swift Programming Language》的笔记-第27页

    页 1 type safelanguage 本页的主要内容是说swift语言是"类型检查"的安全型编程语言.意思是赋值语句的左值和右值的类型要一致,左值声明是string型变量那么 ...

  3. gbk转utf-8 iconv 编码转换

    linux以下有时候 字符须要进行编码转换(爬虫将gbk转为utf-8编码...).一般能够选择iconv函数. 终端以下  输入 man 3 iconv 得到  iconv函数的用法. 个人看习惯了 ...

  4. hdoj 5093 Battle ships 【二分图最大匹配】

    题目:pid=5093" target="_blank">hdoj 5093 Battle ships 题意:给你一个n*m的图,图中有冰山 '# ',浮冰 'o' ...

  5. 当你使用LINQ做底层时,最好设计一个工厂,不要把LINQ的动作暴露给业务层

    1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: ...

  6. 深入分析JavaWeb Item13 -- jsp指令具体解释

    一.JSP指令简单介绍 JSP指令(directive)是为JSP引擎而设计的.它们并不直接产生不论什么可见输出,而仅仅是告诉引擎怎样处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指 ...

  7. [IT学习]Python 小项目 通讯录 思路

    建立一个通讯录查询软件,暂时只支持按姓名检索.出发点:无需登录企业门户,即可检索.要注意保护员工手机号,除非他自己同意显示. 欢迎您访问www.cnblogs.com/viphhs.转载请联系作者授权 ...

  8. SVN下Update出现代码文件删除状态问题

    有时候在SVN上更新了代码,发觉别人提交的东西,服务上明明就是有,但本机却空空如也.只好打开 "Repo-browser",从服务器上强拉下来.结果图标显示红叉,显示为删除状态. ...

  9. 实现@using{}代码块

    前几天,我要写个插件,放在asp.net mvc的view上.这需要写一些扩展HtmlHelper功能的方法.这些方法的一个参数是一段javascript代码. 假如这个参数类型是字符型,当然很简单了 ...

  10. XMU C语言程序设计实践(2)

    任务一:颠倒的世界 小明最近突然喜欢倒着写字,写出来的句子全是颠倒的,也就是把一句话里的字符全都逆序写,譬如“I Love This Game!”,他就偏偏要写成“!emaG sihT evoL I” ...