现在,我是蔚蓝的 ;在此岸或彼岸,我都是蔚蓝的。  ---李瑾


IP对应的是OSI模型中的网络层,TCP对应的是传输层。每一个参与通信的主机都会有一个IP地址。

IP地址(IPv4地址)含4个字节,每个字节8bits。如果将其转换为整数,2^32 =4 294 967 296,从计算结果来看最多允许43亿台计算机连接到互联网。但是,每台主机可能有多个网卡,每一个网卡都需要设置IP地址,通常一块网卡只设置一个IP,但是也可以配置多个。此外,一台路由器通常会配置两个以上的网卡,因此可以设置两个以上的网卡。从而,让43亿台计算机全部联网是不可能的。


IP地址由网络地址 和 主机地址 两部分构成:

全球互联网由很多个子网络(网段)构成,IP的网络地址部分用于识别一个子网络;每个子网络内都含有很多个主机,对应的是IP地址的主机地址部分。从而,定位一计算机的位置时,先定位子网络,然后在这个子网络中定位出主机。

路由器负责连接不同的子网络,其利用的就是IP地址的网络地址部分进行路由。


IP地址(IPv4地址)含4个字节,32bits,这两部分地址如何划分呢?

有两种划分方式,1)分类,即将IP地址分为不同的类型, 2)子网掩码

现在基本上都使用子网掩码,下面先来看一下第一中分类的方式吧:

总共有四类,A B C D类。

A类IP地址:首位第一个bit以0开头,从第1位到第8位是它的网络标识,后24位是主机地址。

B类IP地址:前2个bit为10,从第1位到第16位是它的网络标识,后16位是主机地址。

C类IP地址:前3个bit为110,从第1位到第24位是它的网络标识,后8位是主机地址。

D类IP地址:前4个bit为1110,从第1位到第32位是它的网络标识,没有主机地址,常被用于多播。

分配IP主机地址时需要注意:

主机地址部分不能全部为0或全部为1,因为主机地址全部为0一般用于表示对应的网络地址 或 IP地址不可获知;而全部为1的地址通常作为广播地址。记得分配时去掉着两种情况哦。


广播地址:

将IP地址中的主机地址部分全部设置为1,就成了广播地址,从而广播地址针对的是一个子网中的全部的主机。

可以把广播分为本地广播和直接广播。

举例子:有一个网络地址192.168.0.0/24(表示前24bit为网络地址),该自网络的广播地址为192.168.1.255,如果该子网络内的一台计算机向192.168.1.255发出一个数据,那么这份数据能被这个自网络内的全部计算机接受到,,这就是本地广播;如果这个计算机向192.168.0.255/24(另一个子网络的广播地址),则该只有该子网络内的全部计算机能够收到这份数据,,这就是直接广播。

注意:直接广播有一定的安全问题,多数情况下,会在路由器上设置为不转发。


IP多播的概念:

多播用于将数据包发送给特定组内的所有计算机,这些计算机可能不在同一个子网内,例如可能是属于三个子网的3个计算机。

在 电视会议系统中比较多用。 在多播之前,人们一直采用广播的方式,那时,广播数据将会发送给所有的终端计算机,然后再由这些计算机的IP之上的层去判断是否有必要接受数据,不需要就丢弃,这回造成网络上存在很多不必要的流量。 况且,路由器一般会被设置为不允许多播数据穿透,因此IP多播被采用了。


子网掩码:

Ref:

《图解TCP/IP》--竹下隆史  4.3章节

TCP/IP学习笔记13--IP地址的构成,广播地址,IP多播,子网掩码的更多相关文章

  1. TCP/IP学习笔记4--网络地址

    "他强由他强,清风拂山岗.他横由他横,明月照大江.世间诸事,敞开心扉,顺其自然." -- 张大千 地址具有两个特性: 1:唯一性 同一个通信网络中的任意两个通信主体不能具有相同的地 ...

  2. tcp/ip学习笔记-TCP

    tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,

  3. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  4. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  5. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  6. SQL反模式学习笔记13 使用索引

    目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引.  索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...

  7. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  8. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  9. 并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理

    · 在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列.另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas ...

  10. TCP/IP学习笔记14--IP地址 之 全局地址,私有地址

    只要明天还在,我就不会悲哀,冬雪终会悄悄融化,春雷定将滚滚而来.----<只要明天还在>,汪国真 全局地址,私有地址 , 一种为解决IP地址不足而产生的技术. 起初 ,互联网中的任何一台主 ...

随机推荐

  1. idea拉取最新代码弹窗(Ctrl + T)

    在此设置

  2. Flume高级之自定义MySQLSource

    1 自定义Source说明 Source是负责接收数据到Flume Agent的组件.Source组件可以处理各种类型.各种格式的日志数据,包括avro.thrift.exec.jms.spoolin ...

  3. gulp-htmlmin 页面压缩插件 gulp插件 参数说明

    gulpfile.js var gulp = require('gulp'), htmlmin = require('gulp-htmlmin'); gulp.task('testHtmlmin', ...

  4. maven 使用dependencyManagement统一管理依赖版本

    今日思语:人生方方长长,努力把她磨成方圆,所以 加油咯~ 使用maven可以很方便的进行项目依赖的管理,即可以管理我们显示引入具体版本的依赖,也可以管理某些第三方引入的一些依赖的版本,从而能更好的实现 ...

  5. VisualStudio 2019 Serials

    9DP6T-9AGWG-KWV33-9MPC8-JDCVF 7G2HE-JR8KL-ABB9D-Y7789-GLNFL U2PWU-H7D9H-69T3B-JEYC2-3R2NG R8R8P-MTT6 ...

  6. 洛谷 P3518 [POI2011] SEJ-Strongbox 题解

    思路: 首先先将每个输入的数据与n的最大公约数求出(因为如果a[i]是密码,那么所有a[i]与n最大公约数的倍数也是密码:于是如果a[i]不是密码,那么所有a[i]与n最大公约数的倍数也都不是密码)再 ...

  7. Oracle 分区默认segment大小变化(64k—>8M)

    原文链接:http://www.cnblogs.com/wcwen1990/p/6656545.html _partition_large_extents和_index_partition_large ...

  8. 2019.12.11 java练习

    class Demo01 { public static void main(String[] args) { //数组求最大值 int[] arr={1,2,3,4,5,6,7,8,9}; int ...

  9. 2019.12.10 定义数组及java内存划分

    //数据类型[ ] 数组名 = new 数据类型[元素个数或数组长度]; int[] x = new int[100]; //类型[] 数组名 = new 类型[]{元素,元素,……}; String ...

  10. 原生js打地鼠

    我们要做的是一个打地鼠的游戏,只用原生js 1.导入需要的图片 2.编写页面css样式demo.css *{ margin:0; padding:0; } .game{ position: relat ...