2.2Mac和IP身份的标识
目录介绍
- 01.什么是IP地址
- 02.获取ip地址的方式
- 03.IPv4的协议包封装结构
- 04.子网掩码作用
- 05.MAC与IP区别
- 06.IPv6与IPv4分析
01.什么是IP地址
- IP协议是什么?
- IP协议:用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。
- 域名是干什么的?
- 域名只是为了方便阅读和记忆,计算机并不能直接处理,还需要通过域名服务器(DNS)把域名解析为对应的IP地址才能进行网络访问。
- 因此直接在网络浏览器的地址栏中输入相应的IP地址也是可以访问网络的。
02.获取ip地址的方式
2.1 在cmd命令界面利用ping命令
- 在cmd命令界面利用ping命令
- 在此我们以获取域名www.baidu.com的IP地址为例来介绍利用ping命令获取域名对应的IP地址的方法。博客
- 打开cmd命令界面,输入ping www.baidu.com,按回车键后即可看到如下图所示的输出信息,红色框内即为域名对应的IP地址。
image
2.2 在cmd命令界面利用nslookup查询
- 在cmd命令界面利用nslookup查询
- 打开cmd命令行界面,输入nslookup。nslookup首先返回当前系统设置的DNS服务器信息:DNS服务器的名字和IP地址。
- 要查询一个域名(网址)对应的IP地址(例如:www.baidu.com),只需要输入 www.baidu.com即可。
image
2.3 查看自己电脑ip地址
- 具体方法:
- 查看本机IP:ipconfig。
- 查看本机网络环境:ping 127.0.0.1(本机回环地址),连不上网的时候可以ping一下本机回环地址,看是否是自己电脑的问题。
- 查看网络是否有问题: ping+IP地址,如果自己电脑没问题,就可以ping一下其它IP了,学校电脑连不上网的时候经常ping学校网关,其实ping百度(ping www.baidu.com),ping搜狐都是可以的。
2.4 局域网内IP地址是动态吗
- 是的。
- 局域网内IP地址是动态分配的,假如我是192.168.2.100,如果我下线了,可能IP就分配给了另一台电脑。
- IP和设备并不总是对应的,这对通信就产生了问题,但是MAC地址不同,MAC地址和设备是一一对应且全球唯一的。所以局域网使用MAC地址通信没有问题。
03.IPv4的协议包封装结构
- IPv4的协议包封装结构是什么?
image
- 该结构中的每个数据域的意思?
- 版本号(VERS): 4比特,表示IP协议版本号。目前的版本号是4,即IPv4。版本号规定了数据报的格式。版本不同,其数据报格式也有所不同,如IPv6的报文结构就和IPv4的结构不同。
- 报文头长度(HLEN): 4比特,表示报文头长度。报文头长度以4 Byte为单位计算。除IP选项(IP Options)和填充(Padding)字段可以不存在外,其他各字段必须存在。这些必须存在的字段是5个4 Byte,共20 Byte长。因此,报文头长度值一般是5 。又由于报文头长度必须是32比特的整数倍,所以当一个含有IP选项字段的IP数据报不是32比特的整数倍时,由填充字段用0补足。
- 服务类型(Type of Service): ToS字段,8比特,指示对本数据报的处理方式。它主要用来指示数据报的优先权及传输类型。QoS技术就是使用此字段对数据进行标记优先级的。
- **总长(Total Length):**16比特,以Byte为单位表示整个IP数据报长度,包括报文头及其携带的数据。因为总长字段是16比特,所以IP数据报最长可达216 1=65 535字节。
- 标识(Identification): 16比特,是发送者赋予数据报的标识符,接收者利用这个信息和源地址判断收到的分组属于哪个数据报,以便进行重组。因此,在分片时,该域必须不加修改地复制到各分片的报文头中。
- 标志(Flags): 3比特,只有低两位有效。第一比特为0时表示该分片是最后一片,如果该位是1表示后面还有分片。第二比特为0时表示可以对数据报进行分片,如果该位是1表示数据报不能分片。当该位设置为1而帧长度不匹配又必须分片时,设备就会将数据报丢弃并返回错误信息。
- 片偏移(Fragment Offset):指示本分片数据在初始数据报数据区中的偏移量,偏移量以8 Byte为单位,重组时分片顺序由片偏移提供。
- 生存时间(Time To Live):简称TTL,8比特,用来控制数据报在网络中存在的时间。目前TTL的值并不代表时间,而是代表经由路由器的个数。数据报每经过一台路由器时,路由器将TTL值减1,一旦TTL=0,系统就丢弃该数据报,并返回错误信息。这样避免了路由出现环路时数据报在路由器之间无休止地循环。
- 协议(Protocol): 8比特,表示该数据报携带的数据是由哪个上层协议封装的,也就是指示传输层的协议类型。如最常见的协议类型是TCP或UDP。
- 头校验和(Header Checksum): 16比特,用于保证IP头数据的完整性。
- 地址(Address):分为源IP地址和目的IP地址,各占32比特,表明数据的来源及其到达的目的地。
- 填充(Padding):当IP报文头长度不是32比特的整数倍时,填充0来凑齐32比特整数倍,没有实际意义。
- 数据(Data):来自第4层的数据段。
04.子网掩码作用
- 子网掩码的作用主要是什么?
- 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
- 用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。
- 计算方法示例,定义子网掩码的步骤为:
- A、确定哪些组地址归我们使用。比如我们申请到的网络号为 “210.73.a.b”,该网络地址为c类IP地址,网络标识为“210.73.a”,主机标识为“b”。
- B、根据我们所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。比如我们需要12个子网,将来可能需要16个。用第四个字节的前四位确定子网掩码。前四位都置为“1”,即第四个字节为“11110000”,这个数我们暂且称作新的二进制子网掩码。
- C、把对应初始网络的各个位都置为“1”,即前三个字节都置为“1”,则子网掩码的间断二进制形式为:“11111111.11111111.11111111.11110000” 。
- D、把这个数转化为间断十进制形式为:“255.255.255.240” 。
05.MAC与IP区别
- 不同的特点主要有:
- 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。
- 长度不同。IP地址为32位,MAC地址为48位。
- 分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
- 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
06.IPv6与IPv4分析
6.1 ipv4的发展和局限
- 我们现在用的是ipv4的地址是32位,例如这样的,59.123.123.123。总数大约有43亿个左右,地球上每个人平均分不了一个,更别说每台电脑了,还要减去内网专用的192、170地址段,就更少了,到现在为止,就更少了。随着科技的进步与物联网的发展,ipv4显然已经满足不了要求了,严重约束了互联网的应用与发展,所以ipv6应运而生。
6.2 ipv4和ipv6的区别
- IPv4
- 是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。
- IPV4地址: 由4组数字组成,每组数字由"."分隔,第1组每个数字在1到255之间,其余组每个数字在0到255之间。如"172.16.254.1"是一个合法的地址,但是每组数字是不能包含前导0的,如"172.16.254.01"不是一个合法的IPV4地址。
- IPv6
- 是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度,几乎可以不受限制地提供地址。
- IPV6地址: IPV6地址是有8组16进制数字组成的,每组有4个16进制数字,每组数字之间用":"分隔开。例如"2001:0db8:85a3:0000:0000:8a2e:0370:7334"是一个合法的IPV6地址。在IPV6地址中,可以忽略数字之间的前导0,同时里面的字符不区分大小写,例如"2001:db8:85a3:0:0:8A2E:0370:7334"也是合法的IPV6地址。需要注意的是,每组数字不能为空,例如"2001:0db8:85a3::8A2E:0370:7334"不是合法的IPV6地址。
6.3 IPv6与IPv4相比特点和优点
- (1)更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
- (2)更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
- (3)增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。
- (4)加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
- (5)更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全。
6.4 ipv6的表示方式
- IPV6地址的表示采用16进制的表示方法。将128bit分为8组,每组16比特,用4个16进制数表示,各组之间用":"隔开,每组中最前面的0可以省略,但每组必须得有一个数。
- 1、冒分十六进制表示法
- 格式为 X:X:X:X:X:X:X:X,其中每个X代表16个bit,以十六进制显示,如下面这些:
- ip一:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
- ip二:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
- ip三:1080:0:0:0:8:800:200C:417A
- 2、0位压缩表示法
- 在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
- 1080:0:0:0:8:800:200C:417A =1080::8:800:200C:417A
- FF01:0:0:0:0:0:0:101=FF01::101
- FF01:0:0:0:0:0:0:1101 = FF01::1101
- 0:0:0:0:0:0:0:1 = ::1
- 0:0:0:0:0:0:0:0 = ::
- 3、内嵌IPv4地址表示法
- 为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,
- 也就是前6组用冒分十六进制表示,后二组用十进制表示,而最后32bit地址则使用IPv4的点分十进制表示,例如::192.168.0.1与就是一个典型的例子 。
6.5 ipv4转换为ipv6
- ipv4地址要与ipv6地址互通,需要将ipv4转换为ipv6地址。
- 举例:如果IPv4的一个地址为135.75.43.52,现有32位地址,那么如何转换为ipv6呢?
- 1、非标准转换:
- 只需要在ip地址前面6组共96位补充0即可,即:0000:0000:0000:0000:0000:0000:135.75.43.52
- 也就是::135.75.43.52(内嵌IPv4表示法)
- 2、标准转换
- 135.75.43.52 按十六进制算出即87.4B.2B.34,而87.4B.2B.34串地址一组还是8位,所以需要两组v4地址合成v6地址,再把前96位补零,它可以被转化为0000:0000:0000:0000:0000:0000:874B:2B34或者::874B:2B34。
- 补充下:十进制如何转化为16进制?
- 这里有必要补充下十进制如何转化为16进制,在ipv6时代,可能会经常需要用到。
- 方法是:十进制数除以16,反向取余数,除到不能除为止。当然大家听到这个方法可能是一头雾水,我们具体来看下举例计算过程。
- 例如10进制的ipv4地址:135.75.43.52 ,化成16进制的。
- 为了方便大家了解原理,具体计算过程可以看下图:
image - 16进制的10、11、12、13、14、15分别用A、B、C、D、E、F来表示。所以十进制的135.75.43.52 最终得出的是十六进制87.4B.2B.34,转成ipv6就是::874B:2B34。当然也是可以通过工具直接转换。
6.6 判定IPV4和IPV6的算法
- 题目描述
- 输入一个字符串,检查输入是否为合法的IPV4或者IPV6地址。
- 输入描述
- 输入一个字符串, 表示需要检查的字符串。
- 如果是合法的IPV4地址,则输出"IPv4"; 如果是合法的IPV6地址,则输出"IPV6"; 否则输出"Neither".
- 样例输入
- 172.16.254.1
- 2001:0db8:85a3:0:0:8A2E:0370:7334
- 样例输出
- IPv4
- IPv6
- 案例代码
其他介绍
01.关于博客汇总链接
02.关于我的博客
- github:https://github.com/yangchong211
- 简书:http://www.jianshu.com/u/b7b2c6ed9284
- csdn:http://my.csdn.net/m0_37700275
- 喜马拉雅听书:http://www.ximalaya.com/zhubo/71989305/
- 开源中国:https://my.oschina.net/zbj1618/blog
- 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1
- 邮箱:yangchong211@163.com
- 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcV
- segmentfault头条:https://segmentfault.com/u/xiangjianyu/articles
- 掘金:https://juejin.im/user/5939433efe88c2006afa0c6e