题外话:本来想按照互联网的层级自下向上回顾这些协议的,但是今天实在得破个例,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的更多相关文章

  1. <再看TCP/IP第一卷>关于网络层及协议细节---IP协议

    说到关于IP协议,就必须先说IP协议的两个特性: (一)不可靠性(unreliable) 不可靠性的意思是它不能保证IP数据报能成功地到达目的地,IP所能做的只是提供最好的传输服务,IP有一个简单的错 ...

  2. <再看TCP/IP第一卷>关于链路层的知识细节及相关协议

    在TCP/IP协议族中,链路层的主要有三个目的: (1)为IP模块发送和接受数据报 (2)为ARP模块发送ARP请求和接受ARP应答 (3)为RARP发送RARP请求和接受RARP应答 TCP/IP支 ...

  3. <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方

    在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...

  4. <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节

    题外话:刚刚过去的半个月实在是忙得我喘不过来气,虽然手里还压着几个项目得在期末考试之前做完,但是想想还是更新一下随笔,稍微换个心情.另外小吐槽一下那些在博客园里原封不动抄书当随笔的人,唉真是....算 ...

  5. 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 ...

  6. 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造

    在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...

  7. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  8. TCP/IP笔记 二.网络层(1)

    1. IP 1.1 配套协议 IP 是 TCP/IP 体系中两个最主要的协议之一 . 与 IP 协议配套使用的还有四个协议:   (1)ARP (Address Resolution Protocol ...

  9. TCP/IP协议、UDP协议、 Http协议

    开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化 ...

随机推荐

  1. mariadb在线热备份做主从

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noar ...

  2. python常见面试题(二)

    1. 到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需 ...

  3. dockerfile+ubuntu+nginx搭建web环境

    准备目录 [root@izchz ~]# mkdir /usr/local/dockerfile1 该目录下准备Dockerfile文件 FROM ubuntu MAINTAINER xbf RUN ...

  4. Atitit.远程接口 监控与木马   常用的api 标准化v2 q216

    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216 1. 木马与远程接口 监控的常用的api2 1.1. 文件复制2 1.2. 屏幕定时截图2 1.3. 邮件发送2 1.4.  ...

  5. Atitit.ioc 动态配置文件guice 设计原理

    Atitit.ioc 动态配置文件guice 设计原理 1. Bat启动时注入配置文件1 2. ioc调用1 3. Ioc 分发器 配合 apche  MethodUtils.invokeStatic ...

  6. python .py .pyc .pyw .pyo .pyd区别

    .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python.exe 解释,可在控制台下运行.当然,也可用文本编辑器进行修改. .pyc 文件 以 .pyc 作扩展名的文件是 ...

  7. python使用mysql数据库(虫师)

    转自虫师 http://www.cnblogs.com/fnng/p/3565912.html 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文 ...

  8. Java IO、网络编程、NIO、Netty、Hessian、RPC、RMI的学习路线

    好久没看Java IO这块的内容,感觉都快忘得差不多了.平成编程也没有设计到太多的Java基础知识,所以这里希望可以抽点时间回顾一下,让艾宾浩斯记忆曲线不要下降的太快. 回顾这个主要还是以总结为主,能 ...

  9. Matlab典型论坛

    Matlab典型论坛 http://www.ilovematlab.cn/forum.php?tid=271705&goto=lastpost

  10. Openstack(Kilo)安装系列之环境准备(一)

    本文采用VMware虚拟环境,使用CentOS 7.1作为openstack的基础环境. 一.基础平台 1.一台装有VMware的windows系统(可联网) 2.CentOS 7.1 64bit镜像 ...