网络基础知识(一)-程序员宅基地

 

IP地址分类与子网掩码有关计算

一、IP地址

1、IP地址基本概念 
IP地址在网络层将不同的物理网络地址统一到了全球唯一的IP地址上(屏蔽物理网络差异),是唯一标识互联网上计算机的逻辑地址(相当于手机号码,可以通过唯一的手机号码找到手机),所以IP地址也被称为互联网地址(可见其重要性)。

2、IP地址格式 
我们目前常用的IPv4中规定,IP地址长度为32位二进制,在表示时,一般将32位地址拆分为4个8位二进制,再转为4个十进制数表示,每个数字之间用点隔开,如127.0.0.1(localhost),这种描述方式被称为“点-数表示法”。 
IP地址层次:分为网络号和主机号两个层次。网络号表示主机所属网络,主机号表示主机本身。网络号与主机号的位数与IP地址分类有关。

3、IP地址分配 
IP地址分配的基本原则是:要为同一网络(子网、网段)内不同主机分配相同的网络号,不同的主机号。

4、IP地址常见分类 
IP地址类别与用途

这里写图片描述

A类IP地址 
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。

B类IP地址 
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。

C类IP地址 
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

D类地址用于多点广播(Multicast)。 
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

E类IP地址 
以“llll0”开始,为将来使用保留。

5、特殊的IP地址

**受限的广播地址:**32位全“1”的IP地址,只能做目的地址,用于向本网内部所有主机发送数据包(路由器拒绝向外网发送广播,隔离数据包在本网内)。

直接广播地址:网络号全“1”,只能作目的地址,用于向目标网内所有主机发送数据包(路由器接受向外网转发数据包,意为广播在全网有效),如C类IP所有主机255.255.255.主机号、B类IP所有主机255.255.主机号。

**本网络本主机地址:**32位全零的IP地址对应于当前主机,只能做源地址。

本网特定主机地址:网络号全零的IP地址表示本网络内的特定主机(路由器拒绝目的地址为本网特定主机的数据包,意为只能向本网内特定主机发送数据包),只能做目的地址。

环回地址就是网络ID为127的IP地址,用于一台主机的客户端与服务器端通过TCP\IP进行通信或者本机进程间通信,一般在自己的主机上进行软件开发测试时候会用到的localhost(127.0.0.1)就是环回地址。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 
A类地址:10.0.0.0~10.255.255.255 
B类地址:172.16.0.0~172.31.255.255 
C类地址:192.168.0.0~192.168.255.255

二、子网掩码 

子网掩码 又叫网络掩码、地址掩码
上面我们说到IP地址分为网络号与主机号,但是路由如何区分网络号与主机号呢?就需要通过子网掩码。子网掩码必须与IP地址结合使用,A、B、C类的子网掩码分别为255.0.0.0,255.255.0.0与255.255.255.0(网络号字节为255,主机号字节为0)。

也就是说给你一个IP地址,那么怎么知道它的网络号和主机号各是多少位呢?

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

子网掩码的重要作用:就是将某个IP地址划分成网络地址主机地址两部分。

子网掩码的位数就是网络的位数。A类网络的网络位数是8位,子网掩码就是255.0.0.0,B类网络的网络位数是16位,子网掩码是255.255.0.0,C类是24位,255.255.255.0。

以C类IP地址192.168.1.2为例使用子网掩码划分网络号与主机号。

这里写图片描述

当然,在计算主机号时,可不用取反子网掩码二进制,直接令其与IP地址异或即可。

例1 不同子网下的主机能否直接通信(是否在同一网络/段下)

假设两个IP地址分别是172.20.0.18和172.20.1.16,子网掩码都是255.255.255.0。

我们可以知道两者的网络标识分别是172.20.0和172.20.1,无法直接通信,也就无法PING通。要想能相互通信,需要将子网掩码改成255.255.0.0

例2 如何理解172.20.1.0/26

上文中的26代表主机ID的掩码地址长度,从前往后有26位,即子网掩码的地址是255.255.255.192。

子网掩码还可以用来将网络划分为更小的子网,将IP的两极结构扩充成三级结构,节约地址空间,减轻路由器负担。

子网掩码的划分

如果要将一个网络划分为多个子网,如何确定子网掩码?步骤如下:

第一步:将要划分的子网数目转换为2的m次方。如果不是恰好是2的多少次方,则按照取大原则。

第二步:将上一步确定的幂m按照高序占用主机地址前m位,再转化为十进制。如m为3,表示主机位中有3位被划分为网络标识号占用,因网络标识号都为1,故如是C类地址,主机号对应的字节变为11100000,转化为十进制后为224,故子网掩码为255.255.255.224,如果是B类网络,则子网掩码为255.255.224.0。

网关

网关(Gateway)又称网间连接器,就是一个网络连接到另一个网络的“关口”。

网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络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。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络B向网络A转发数据包的过程。

  所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32563713/article/details/81433176

智能推荐

在职场,光有技术是不行的,18年老程序员职场宝贵经验分享_程序员的职场,光有技术是不行的 csdn-程序员宅基地

文章浏览阅读1.5w次,点赞306次,收藏481次。在职场不光要“低头拉车”,还要“抬头看路”。_程序员的职场,光有技术是不行的 csdn

Media Player Classic无法解析媒体中的某些流_mpc-be无法渲染筛选图表中的某些pin-程序员宅基地

文章浏览阅读5.5k次。 推荐链接:轻松注册,推荐一个网站获得20元网络账本 —免费的网络记帐本,今天你记账了吗?倍新咨询—投资咨询专家在线炒外汇—免费订阅外汇月刊学不好英语,不是你的错。因为学习内容太枯燥乏味! 为什么不试试《看电影学英语》?问题现象::媒体流 0RealAudio 解码器音频切换器媒体类型 0:--------------------------AM_MEDIA_T_mpc-be无法渲染筛选图表中的某些pin

c语言-背包问题贪心算法_背包问题贪心算法c语言代码-程序员宅基地

文章浏览阅读1.2w次,点赞15次,收藏125次。#include<stdio.h>#define MAX 200typedef struct Solution{ float x[MAX]; //表示该号物品放在多少背包里 int order[MAX];//表示物品的序号,相当其名字}Solution;Solution X;int m=15;//背包容量int n=7;//物品数量int p[]={10,5,15,7,6,18,3};int w[]={2,3,5,7,1,4,1};void Gre._背包问题贪心算法c语言代码

基于ssm高校成绩预警系统 可做毕业设计参考源码免费获取_基于ssm框架的学业预警系统-程序员宅基地

文章浏览阅读1.1k次,点赞32次,收藏22次。作为后期维护运营成本较低的设计模式,MVC也被名正言顺的被我选择进行系统的设计。选用MYSQL数据库存储数据,可以使多个客户端同时访问软件读取数据库数据,针对多线程的访问可以使用Archive,首先将存储的数据完成动态划分,之后存放到数据库相应的表中,这种划分方式直接提高了数据库数据管理的速度,读取数据库的数据库非常灵活高效,同时Mysql数据库是开源的,可以完成二次开发,很大程度的节省了使用者的成本,和开发语言结合实现一个完美的网站或者系统,综合MYSQL数据库的各个方面,目前是许多开发者的首选。_基于ssm框架的学业预警系统

Js 给JSON对象排序_json有没有顺序-程序员宅基地

文章浏览阅读3.7k次。众所周知,json对象是没有顺序的。只有数组才有排序功能。但我们遇到的业务场景里面,不仅仅需要对数组排序,也有需要对对象排序的情况。例如下面这种数据:let data = {zhangsan: {age: 18, height: 189}, lisi: {age: 18, height: 175}}此时如果对这种数据排序。可以这样写:let data = {zhangsan: {age: 18, height: 189}, lisi: {age: 18, height: 175_json有没有顺序

深入了解Linux: dbus-daemon系统总线的作用与管理_system_bus_socket dbus-deamon-程序员宅基地

文章浏览阅读479次,点赞3次,收藏4次。是Linux和其他类Unix系统中的消息总线系统,它允许不同的程序(通常是进程)进行相互通信。提供了两种类型的消息总线,一种是系统总线(system bus),另一种是会话总线(session bus)。系统总线用于系统级别的消息传递,而会话总线用于用户级别的消息传递。当你运行命令时,你是在启动系统总线。系统总线用于所有用户和系统服务之间的通信,并且它是在系统启动时由系统初始化脚本启动的。这个总线用于那些需要广播或监听整个系统事件的服务,比如硬件添加、网络状态变化等。这里是一些关于。_system_bus_socket dbus-deamon

随便推点

idea 如何定位类或方法_idea定位类方法-程序员宅基地

文章浏览阅读1w次。使用maven 打包报错如下:法一:Ctrl+ N,打开搜索输入类名 UserInfoServiceImpl点击 UserInfoServiceImpl 类,根据报警提示找到第32行约第44个字符处找到方法 getUserInfo4OpenApi,按住Ctrl点进去点击去之后,会发现getUserInfo4OpenApi 这个方法继承自UserService 类。如..._idea定位类方法

内容领先地位无法撼动,腾讯音乐与环球续约将共建新厂牌-程序员宅基地

文章浏览阅读243次。近日,腾讯音乐娱乐集团(NYSE:TME)发布了2020年Q2财报,延续了Q1的增长势头。数据显示,2020年Q2季度,腾讯音乐总营收同比增长17.5%达69.3亿元,调整后净利润11.5亿元,在线音乐付费用户更是强劲增长达4710万,同比创纪录增长超51.9%。亮眼成绩单的背后,腾讯音乐的内容领先优势持续强化。在财报发布当天,腾讯音乐与全球领先的音乐娱乐公司环球音乐集团(UMG)共同重磅宣布:基于长期不断深化的紧密合作伙伴关系,双方续签数年期版权授权战略合作协议,同时在该合作协议下,双方还宣.

axure和蓝湖上查看页面的说明和上传文件_axure pr 上传蓝湖-程序员宅基地

文章浏览阅读299次。在原型上添加说明。_axure pr 上传蓝湖

一道简单的 Java 笔试题,但值得很多人反思!-程序员宅基地

文章浏览阅读388次。2019独角兽企业重金招聘Python工程师标准>>> ..._依次插入元素进入list并改变这个list内容要求任何时候这个list都是有序的

生成模型与辨别模型(Generative vs discriminative model)_鉴别模型-程序员宅基地

文章浏览阅读1k次。生成模型与辨别模型(Generative vs discriminative model)这两个模型一般是讲的分类问题生成模型1、使用贝叶斯理论推断后验分布p(Ck|x)p(Ck|x)p(C_k|x),需要考虑先验分布p(Ck)p(Ck)p(C_k)和p(X|Ck)p(X|Ck)p(X|C_k) 也可以对联合分布p(X,Ck)p(X,Ck)p(X,C_k)建模 2、使用决策论对x分..._鉴别模型

单片机学习:lwip-udp_lwip udp_bind-程序员宅基地

文章浏览阅读2.5k次。UDP编程虽然不难,但是有很多不懂得地方。 第一个就是UDP的块,udp_pcb主要是记录udp的信息,如本地IP,端口号,远程IP,远程端口号,recv函数,和自定义参数args。 一个程序中一般有多个控制块,这些控制块通过next指针连接在一起,但接收到一个数据块时就会遍历这些udp_pcb控制块,找到符合的控制块,接着调用recv中的回调函数进行处理。第二个就是一些操作函数。第一个就是_lwip udp_bind