<再看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),一种概念模型,由国际标准化 ...
随机推荐
- Spring学习二----------IOC及Bean容器
© 版权声明:本文为博主原创文章,转载请注明出处 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的 ...
- Atitit.mysql 5.0 5.5 5.6 5.7 新特性 新功能
Atitit.mysql 5.0 5.5 5.6 5.7 新特性 新功能 1. MySQL 5.6 5 大新特性1 1.1. 优化器的改进1 1.2. InnoDB 改进1 1.3. 使用 ...
- python easy install时,使用aliyun阿里云镜像提示主机名不匹配的问题
因网络问题,因此设置 easy_install 使用阿里云的源, ## 更新 easy_install 源 tee ~/.pydistutils.cfg <<-'EOF' [easy_in ...
- poj3411--Paid Roads(bfs+状压)
题目链接:id=3411">点击打开链接 题目大意:有n个点.m条有向边,经过边须要一个花费,a b c p q代表 a到b的一条道路,假设经过这条边之前经过c点,那么须要p的花费,否 ...
- gulp配置,实例演示
项目完成后的目录 我们所需要的插件为:gulp-minify-css gulp-concat gulp-uglify gulp-rename del 如下图所示,完成后的项目目录结构: 附加,获取pa ...
- secureCrt 开启Linux上的oracle服务
IP : 192.168.0.21 user: root pwd: 123456 --------------------------------------------------- ...
- 在Mac上为自己手动编译安装一套PHP7的开发环境
首先你得去官网下载php7 beta1的版本 这里由于我是在mac上安装,所以就去下载linux相关的版本,地址也直接附上了php7 beta1windows版的官方也有发布详情猛戳:这里 解压安装包 ...
- 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作
当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...
- Java NIO —— Buffer(缓冲区)
Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.注意:Buffer是非线程安全类. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffer ...
- 自定义circleindicator
在此申明,并不是自己写的,只是为了方便日后使用 我使用的circleindicator是从大神的gitHub中弄来的, 使用如下: 一.在配置中导入 compile 'me.relex:circlei ...