<再看TCP/IP第一卷>关于网络层及协议细节---IP协议(2)--移动IP及DHCP
题外话:本来想按照互联网的层级自下向上回顾这些协议的,但是今天实在得破个例,DHCP不得不说!
主机从一个网络迁移到另一个网络,那么IP编址的结构就要发生改变,当今主流有如下几种修改方案:
(一)改变地址:
主机在移动到新的网络的时候改变它的地址,这里需要DHCP协议,将其和新的网络关联起来,这么做的话需要我们手动修改可能需要如下的命令
sudo vim /etc/network/interface
每次修改若想要使修改之后生成的IP地址生效,大部分情况下需要我们重启主机
/etc/init.d/network restart
并且这么做的话DNS表必须要更新,使因特网上的其他主机可以知道其变化
(二)两个地址:
使用两个地址是一种更可行的方法,主机有原始的地址成为归属地址,还有一个临时的地址称为转交地址,前者是永久的,使得它与归属网络永久相关联。
每次当主机发生移动的时候,改变的是临时地址即转交地址,下面重点看这方面的内容。
归属地址和转交地址与之对应的是归属网络和转交网络,归属网络和外地网络之间的桥梁是因特网,而归属网络和因特网之间需要一个归属代理,转交网络和因特网连接需要一个转交代理,所谓的代理就是路由器,但是代理的功能是在应用层完成的,所以两个代理更强调的是作为主机的功能。
当主机在移动到一个外地的网络的时候,外地的网络就需要动态地给加入的主机分配一个IP地址,这个IP地址的分配过程就是DHCP完成的,(当外地主机充当外地代理的时候,这个转交地址就成为同址转交地址,使用同址转交地址的主机可以移动到任何的网络,不必担心代理的可用性)。
关于与远程主机的通信过程,移动主机需要经过三个过程:代理发现,登记和传送数据:
1.代理发现
##移动主机在外地网络进行代理发现的基础条件是已知归属代理地址##
代理发现的过程主要分为两个阶段:
a.代理通告
发送一个ICMP报文(类型值16:用户信息应答)报文中数据是转交地址,只有外地代理才能使用这个字段。
代码位含义:
0 需要登记,没有同址转交地址
1 代理忙,现在不接受登记
2 代理充当归属代理
3 代理充当外地代理
4 代理使用最小的封装
5 代理使用通用路由选择封装
6 代理支持首部压缩
7 Reserved
b.代理询问
发送一个ICMP询问报文,在当移动主机已经移动到了新的网络而没有收到代理通告的时候,它可以发起一个代理询问,让代理知道它需要帮助。
2.登记
移动主机移动到外地网络之后,并且已经发现了外地代理之后,必须登记。登记的四个要素如下:
a.移动主机必须向外地主机进行代理
b.移动主机必须向它的归属代理登记,这通常是由外地代理以移动主机的身份来完成的。
c.如果截至期到了,那么移动主机必须重新登记
d.如果移动主机回到了归属网络,那么必须取消登记
登记的过程之中需要使用登记请求和登记回答,这些信息是封装在UDP协议报中的,代理处理登记请求和回答使用知名端口434,移动主机使用任意临时端口。
报文内容中需要指明归属地址,归属代理地址,转交地址和标识(用于使请求和回应相互匹配)
3.数据传送
进行数据传送的过程时已经搭建了移动IP的通讯环境,通讯过程分为大致两种 :
a.当远程地址向移动地址发送信息时,源地址是远程主机本身的地址,目的地址是移动主机的归属地址,总之就是认为移动主机在归属网络中。实质上呢,是归属代理使用ARP代理技术使用归属物理地址从而在链路层上接收了数据帧分组,然后再将分组转发给移动主机所在的外地网络。
b.从移动主机向远程主机发送信息时,它就像正常的情况一样进行发送,移动主机分片后将分组发送给归属地址,用远程主机的地址作为目的地址。
(三)关于DHCP协议:
绝大多数情况下来讲,对于一台主机四种信息是必要的:
(1)IP address
(2)subnet mask
(3)gateway IP
(4)DNS IP
同样作为IP地址分配/回馈协议的有RARP和BOOTP,不同的是DHCP的出现更为了符合将以上4个必要的信息动态分配(与BOOTP不同,BOOTP为查表静态)的协议。
DHCP客户和DHCP服务器可以处于同一个网络上,也可以处于不同的网络之中,当客户和服务器放在了同一个网络中的时候,会进行如下的操作:
(1)DHCP服务器在UDP端口67发出被动打开命令,等待客户请求。
(2)客户端在UDP68号端口发出主动打开命令,这个报文自然被装入UDP报文的首部之中,再使用IP地址进行封装,这里的IP地址源端IP为0,目的地址-1(受限广播,只在本地网络传播)
(3)服务器使用广播或者单播来响应这个客户,它使用了UDP源端口67和目的端口68,这里回复的过程之中就可以使用IP地址拉,也不需要ARP解析地址。
当DHCP客户和DHCP服务器处于不同的网络之中的时候,会进行如下的操作:
(1)服务器端和客户端进行的操作之前是一样的,但是因为受限广播,没有路由器会接收该IP数据报。
(2)在网络中设置一台主机作为中继代理,中继代理知道DHCP服务器的单播IP地址,然后DHCP服务器和中继代理在应用层完成通讯,中继代理再把它转达给DHCP客户。
通过DHCP报文的格式我们可以注意到DHCP的差错控制和对类型细致的分类。
DHCP服务器分配IP过程分为两种:静态分配和动态分配
静态分配:通过访问DHCP服务器中的表来进行查询与DHCP客户相对应的永久IP地址
动态分配:通过数据库实现IP地址池,当接收请求的时候动态分配一个IP地址,时间长短可以协商。
<再看TCP/IP第一卷>关于网络层及协议细节---IP协议(2)--移动IP及DHCP的更多相关文章
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议
说到关于IP协议,就必须先说IP协议的两个特性: (一)不可靠性(unreliable) 不可靠性的意思是它不能保证IP数据报能成功地到达目的地,IP所能做的只是提供最好的传输服务,IP有一个简单的错 ...
- <再看TCP/IP第一卷>关于链路层的知识细节及相关协议
在TCP/IP协议族中,链路层的主要有三个目的: (1)为IP模块发送和接受数据报 (2)为ARP模块发送ARP请求和接受ARP应答 (3)为RARP发送RARP请求和接受RARP应答 TCP/IP支 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方
在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...
- <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节
题外话:刚刚过去的半个月实在是忙得我喘不过来气,虽然手里还压着几个项目得在期末考试之前做完,但是想想还是更新一下随笔,稍微换个心情.另外小吐槽一下那些在博客园里原封不动抄书当随笔的人,唉真是....算 ...
- TCP/IP入门(2) --网络层
/** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- TCP/IP笔记 二.网络层(1)
1. IP 1.1 配套协议 IP 是 TCP/IP 体系中两个最主要的协议之一 . 与 IP 协议配套使用的还有四个协议: (1)ARP (Address Resolution Protocol ...
- TCP/IP协议、UDP协议、 Http协议
开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化 ...
随机推荐
- python--pipe
1.pipe 除了使用队列外,还可以使用管道在进程间执行消息传递 pipe([]duplex) 在进程间创建一条管道,并返回元组(conn1,conn2),其中conn1和conn2是表示管道两端的C ...
- 基于多输出有序回归的年龄识别(CVPR_2016)
作为学习记录,将所做PPT摘录如下: 网络结构: 网络结构描述: 网络工作流程: 损失函数计算: 亚洲人脸数据集: 参考代码:
- java大批量数据导入(MySQL)
© 版权声明:本文为博主原创文章,转载请注明出处 最近同事碰到大批量数据导入问题,因此也关注了一下.大批量数据导入主要存在两点问题:内存溢出和导入速率慢. 内存溢出:将文件中的数据全部取出放在集合中, ...
- C# 系统应用之注冊表使用具体解释
在平时做项目时,我们有时会遇到注冊表的操作,比如前面我们须要获取IE浏览器地址栏的信息.获取"我的电脑"地址栏输入的目录信息.USB近期使用信息等.注冊表项是注冊表的基本组织单位, ...
- OpenCV 3.1
http://www.tuicool.com/articles/FRfMni2 http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.h ...
- oracle高性能的SQL语句的写法
1.当多表查询的时候,把数据量小的表放在最后面,ORACLE会把最后面的表当作基础表,因为表间连接时,最右边的表会被放到嵌套循环的最外层.最外层的循环次数越少,效率越高. 2.Oracle采用自下而上 ...
- vi 详解
1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: ...
- 【JMeter4.0学习(十)】之JMeter函数简单运用以及结合正则表达式提取器
下面来简单的举个栗子: 首先,把函数和正则表达式提取器放在一块来介绍,如下所示: 1.结构完整展示,下面再一步一步创建添加: 2.添加线程组: 3.首先添加HTTP请求1 4.添加结果树后,运行后查看 ...
- MDwiki 调研
下载解压 然后 mv mdwiki.html index.html 创建 一个index.md 然后就可以直接访问http://example.com/ 直接把你的md文件放在目录里面就可以了 cer ...
- ipmitool常用命令
然后查看ip等信息,使用如下命令: ipmitool lan print 远程访问 可使用如下命令尝试: ipmitool -I lanplus -H 10.108.125.227 -U Admini ...