ipv6+ssh+java_IPv6的本地联网地址计算方法详解

IPv6的世界里,如果DHCP6和SLACC这两位大佬都为没有为可怜的网卡分配IP地址,也没有人为网卡设置静态的IP地址,系统就会为网卡计算一个IPv6的网址来。这样的网址只能在本地使用,不得路由,所以,被称为“link-local address”,译作“本地联网地址”。

其方法是在特殊的网段fe80::/64内,利用网卡的MAC地址拼凑一个64位的地址,放在fe80::/64后,组成一个128位的本地联网地址。

b0a19bcbdd2babb4672061ff5d12e632.png

本地的主机之间可以使用这个地址通信。首先,我们来看一看这个地址如何计算。

第1步:找到网卡的MAC地址

# nmcli con show

# nmcli con show eth0

第2步:将MAC地址转换成二进制

oschina.net就有在线转换工具:https://tool.oschina.net/hexconvert/

比如说,找到的16进制的MAC地址是:00:11:22:aa:bb:cc,去掉中间间隔的冒号后,提交转换成2进制得到一个长度为37位的字串:

1000100100010101010101011101111001100

4c4bd9dc015a58b89cd7a4d701927a2e.png

第3步:将第7位进行0-1互换

将37位的字串补齐为48位,得到如下字串:

000000000001000100100010101010101011101111001100

蓝色为补齐的数字。将第7位数字进行0-1互换,即如果是0,就换成1;如果是1,就换成0。于是得到如下48位字串,其中紫色的那个1就是互换的结果:

000000100001000100100010101010101011101111001100

第4步:再转换成16进制

将上一步得到的48位字串再转换成16进制数字,得到如下结果:

85e5d0a75421004e59c3e23cd57dcbff.png

得到的结果是:21122aabbcc

第5步:插入ff:fe

在上述结果的中间位置插入ff:fe。21122aabbcc,原来是MAC地址,是12位,如今只剩下11位,需要加0补全,于是得到的结果是:021122aabbcc。再将ff:fe插到中间位置,再写成4个字符一组的模式,如下:

0211:22ff:feaa:bbcc

第6步:加上前面64位

在前面加上64位地址:fe80::/64得到的地址就是IPv6本地链接地址,可以用来在本地网络中通信,即:

fe80::211:22ff:feaa:bbcc

如果要与这个IPv6地址通信,需要带上其网卡的连接id(connection id),也就是使用nmcli con show看到的那个id,如下图所示:

8dbaee8223685c6a2eedb95b5133b43b.png

所上图所示,nmcli con show的界面上,第一列的NAME就是connection id。使用nmcli con show eth0,看到的详细情况中,这个eth0又被称为"连接id"。在这一点上,nmcli处理的不好,同一属性,两种查法中,却使用了不同的名字,让人费解。好了,现在就来试试这个计算出来的IPv6本地联网地址吧!

# ping6 fe80::211:22ff:feaa:bbcc%eth0

# ssh root@fe80::211:22ff:feaa:bbcc%eth0

参考:

https://tools.ietf.org/html/rfc4291#appendix-A

https://tool.oschina.net/hexconvert/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java gzipoutputstream_java – GZIPInputStream逐行读取

我有一个.gz格式的文件。用于读取此文件的java类是GZIPInputStream。但是,此类不会扩展BufferedReader类的java。因此,我无法逐行读取文件。我需要这样的东西reader new MyGZInputStream( some constructor of GZInputStream)reader.readLine()...我虽然…

java互斥锁的实现原理_java-深入分析synchronized原理

互斥锁互斥锁futex,全拼fast userspace mutexes,直翻为快速用户空间互斥器,它是我们上层应用实现锁的最常用方法。futex是一块所有进程都可以访问的内存,是通过cpu的原子操作修改内存中的值来尝试获取琐,如果没有竞争&…

php 自定义加密算法,php自定义加密函数、解密

“/*加密*/function addcoder($str){$yuan abA!c1dB#ef2Cg$h%iD_3jkl^E:m}4n.o{&F*p)5q(G-r[sH]6tuIv7wJxy8z9K0;$jia zAy%0Bx1C$wDv^Eu2-t3(F{sr&G4q_pH5*on6I)m:l7.Jk]j8K}ihgf9#ed!cb[a;if ( strlen($str) 0) return false;for($i 0;$i{for($j 0;$j{if($str[$i…

京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...

我之前写了一篇关于接入京东联盟sdk的文章,但是最近,由于这个原因,如下图导致需要重新集成京东的sdk,但是由于某种原因,因为android和ios端不统一,android接入的是京东开普勒的SDK,这次为了统一…

php用不了for循环吗,php中的这两个for循环有什么区别吗?

如下两个for循环,执行的结果不一样的。for($i 0,$j 0;$i dump($i . - . $j);}echo ;for($i 0;$i dump($i . * . $j);}}结果打印:string(3) "0-0"string(3) "1-1"string(3) "2-2"string(3) "3-3"string(3) &q…

php输出楼层号,ZBlog开发中实现评论楼层号正确输出的具体方法代码

在官方的wiki中,针对评论部分的标签调用是集成了评论楼号的,即标签{$comment.FloorID}。这个标签是不计算子评论的,所以并不是采用key直接计算出的楼号。经过测试,我们会发现,这个楼号存在一定BUG!具体表现…

php 一键登录插件,FastAdmin一键管理插件

FastAdmin中的插件可以通过命令行快速的进行安装、卸载、禁用和启用。准备工作请确保你的FastAdmin已经能正常登录后台请确保php所在的目录已经加入到系统环境变量,否则会提示找不到该命令打开命令行控制台进入到FastAdmin根目录,也就是think文件所在的目…

java代码复数包括虚部和实部,Java中编写Applet程序验证复数类(在问题补充中)实现接收用户输入的复数的实部和虚部,计算复数与复数,复数与实数的加减,乘除操作...

2008-11-16 回答我把方法给你写出来,测试程序的主函数你就自己写把/*** Cigarette ash Inc.* author 烟灰* version 1.00 2008/6/7*///编写一个类ComplexNumber实现复数的运算:public class ComplexNumber {double m_dRealPart;double m_dImaginPart;public Complex…

matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...

很简单的方程求解程序,调用mulDNewton函数求解,之前在Matlab 2011b版本上运行成功,现在在Matlab 2018a版本上总是出错,程序代码和出错的提示如下,mulDNewton函数代码也如下。请教大神该程序应该如何修改,请…

matlab实验函数编写与程序设计,matlab实验四函数编写与程序设计.doc

实验四:函数编写与程序设计一、实验目的1 . 掌握M文件的创建。2.掌握函数的编写规则。3.掌握函数的调用。4 . 掌握基本的输入输出函数以及显示函数的用法。5.会用Matlab程序设计实现一些工程算法问题。二、实验内容1 . 设计程序&a…

php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?

刚刚发现的一个很奇怪的现象下面这个数组我设置为类的属性,其中SYSTEM_LIB为我定义的常量final class Application { public static $_libarray( route > SYSTEM_LIB./lib_route.php, mysql > SYSTEM_LIB./lib_mysql.php, );}但最终运行时报错为Parse error: …

php比例算法,图片比例转换算法

项目要求将图片上传的任意图片按固定比例进行转换,没办法自己就写了一个,代码如下:public function cropImage($imagePath, $savePath, $scale){$imgHandler $this->model(Picture_Model_Image);$imgHandler->setSrcImg($imagePath);$…

oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法

由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,OS REDHAT 5.4数据库无归档,无备份 [oraclehuna由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,,O…

php sqlite id自增,Android sqlite设置主键自增长的方法教程

今天在APP中增加一个添加项目的功能,项目的主键为整数,要让它自增长。既然要自增长,那么在代码里面就不用给id字段赋值。但是调试的时候发现不行,提示主键重复,观察了输出,不赋值的话,id默认为0…

oracle flashback 深入研究,oracle 之flashback 深入研究。

oracle 之flashback 深入研究。今天是2013-08-24,开始进行oracle flashback 内部原理研究,记录一下笔记。SQL> startupORACLE instance started.Total System Global Area 405020672 bytesFixed Size 2213816 bytesVariable Size …

linux删除了mount目录,Linux记录-分区(df/fdisk/mount/umount/fuser)

1.查看磁盘挂载(df -TH)2.卸载umount /dev/vdb13.查杀用户进程(fuser -m -v -i -k /dev/vdb1)4.再次卸载umount /dev/vdb1,并查看挂载信息df -TH5.删除分区(fdisk /dev/vdb m d 1 d w)6.查看分区(fdisk -l,没有Start-End磁盘分区表示可用)7.添加分区(fdi…

linux中pak命令,如何在Linux系统中安装Flatpak

选择你的Linux发行版快速安装Flatpak及使用Flatpak。支持Ubuntu、Fedora、Red Hat Enterprise Linux、Deepin、Endless OS、Linux Mint、openSUSE、Arch、Debian、CentOS、Gentoo、Solus、Alpine、Mageia、Pop!_OS、elementary OS、Raspbian。以下为你逐一介绍如何在这些Linux版…

linux服务器组件有哪些,推荐几个linux服务器面板

天兴工作室自zblog从asp换到了php就一直在玩php的程序,php的程序肯定是搭配linux系统更方便一些。现在的云服务器也都不贵几百块钱一年,就算是个人也玩得起。当然linux服务器和windows服务器的用法完全是两样:windows系统就跟本地电脑一样操作…

ubuntu 改linux密码忘了怎么办,Ubuntu 14.04忘记root密码的解决方法

电脑20多天没用,忘记Ubuntu 14.04 root密码了,下面是在网上找到的一个解决办法,其它的和这个也大概相同。因为其中有些缺漏,没能给我解决问题。通过分析最终问题还是解决了,现解决方案的关键点记录一下。希望能方便到其…

drcom linux怎么运行,Drcom_linux

64位ubuntu设置32位环境sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0//目前自己用到sudo apt-get install libsm6:i386sudo apt-get install libxi6:i386sudo apt-get install libxrender1:i386sudo apt-get install libxrandr2:i386sudo apt-get install libxcur…