文档章节

IETF组织和DHCP协议简介

方治兵
 方治兵
发布于 2014/01/09 11:45
字数 1486
阅读 306
收藏 3

一、IETF简介

研究网络的人一定要知道IETF这道这个组织,IETF(互联网工程任务组),成立于1985年底,是全球互联网最具权威的技术标准化组织,主要任务是负责互联网相关技术规范的研发和制定,当前绝大多数国际互联网技术标准出自IETF。

以下内容引自百度百科(特此申明):

互联网工程任务组

IETF

IETF[1]

松散的、自律的、志愿的民间学术组织。

IETF是一个由为互联网技术发展做出贡献的专家自发参与和管理的国际民间机构。它汇集了与互联网架构演化和互联网稳定运作等业务相关的网络设计者、运营者和研究人员,并向所有对该行业感兴趣的人士开放。任何人都可以注册参加IETF的会议。IETF大会每年举行三次,规模均在千人以上。

二、IETF与互联网技术人员的关系

相信搞Internet的技术人员都会经常登录tools.ietf.org/html,在这里你可以查看很多网络技术规范,以及新老版本之间的差异。前一段时间搞DHCP时就需要时不时上去看看。

三、简单介绍下DHCP协议

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议(RFC2131),前身是BOOTP,是一个不太完善的网络应用层协议,主要提供路由动态给各Host(在Android上也可叫Station)分配地址的协商机制,我们知道在日常生活我们经常采用有线会无线网络上网,特别是智能机时代的到来使得我们更加紧密的和网络绑定在一起特别是WLAN网络,日益普及的Android只能时代,我们能够更加方便快捷的网上冲浪、享受微薄、QQ、各种小游戏的快乐,大都会选择WLAN网络。

The Dynamic Host Configuration Protocol (DHCP) provides a framework
   for passing configuration information to hosts on a TCPIP network.
   DHCP is based on the Bootstrap Protocol (BOOTP)

在WLAN技术中有一个关键技术技术DHCP,并且我们日常在Android设备上使用的也是动态主机分配IP,很当便。当然Android设备上也支持静态IP方式。

鄙人曾经也在Android平板/电视上开发过有线局域网,但不管那种方式目前IP分配机制分三种:动态主机分配、静态分配、自动分配(这种方式大多会用在公司集群网络中),动态主机分配和自动分配的显著区别是后者具用永久性,前者具有周期性,存在一定的租赁周期,租赁周期到了要么续约要么释放,其它主机可以在IP池中抢占。

下面就DHCP的交互流程做简单介绍,具体内容请上http://tools.ietf.org/html/rfc2131.html仔细研读;

(一)DHCP报文格式

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     op (1)    |   htype (1)   |   hlen (1)    |   hops (1)    |
   +---------------+---------------+---------------+---------------+
   |                            xid (4)                            |
   +-------------------------------+-------------------------------+
   |           secs (2)            |           flags (2)           |
   +-------------------------------+-------------------------------+
   |                          ciaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          yiaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          siaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          giaddr  (4)                          |
   +---------------------------------------------------------------+
   |                                                               |
   |                          chaddr  (16)                         |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                                                               |
   |                          sname   (64)                         |
   +---------------------------------------------------------------+
   |                                                               |
   |                          file    (128)                        |
   +---------------------------------------------------------------+
   |                                                               |
   |                          options (variable)                   |
   +---------------------------------------------------------------+

名词解释:

   FIELD      OCTETS       DESCRIPTION
   -----      ------       -----------

   op            1  Message op code / message type.
                    1 = BOOTREQUEST, 2 = BOOTREPLY
   htype         1  Hardware address type, see ARP section in "Assigned
                    Numbers" RFC; e.g., '1' = 10mb ethernet.
   hlen          1  Hardware address length (e.g.  '6' for 10mb
                    ethernet).
   hops          1  Client sets to zero, optionally used by relay agents
                    when booting via a relay agent.
   xid           4  Transaction ID, a random number chosen by the
                    client, used by the client and server to associate
                    messages and responses between a client and a
                    server.
   secs          2  Filled in by client, seconds elapsed since client
                    began address acquisition or renewal process.
   flags         2  Flags (see figure 2).
   ciaddr        4  Client IP address; only filled in if client is in
                    BOUND, RENEW or REBINDING state and can respond
                    to ARP requests.
   yiaddr        4  'your' (client) IP address.
   siaddr        4  IP address of next server to use in bootstrap;
                    returned in DHCPOFFER, DHCPACK by server.
   giaddr        4  Relay agent IP address, used in booting via a
                    relay agent.
   chaddr       16  Client hardware address.
   sname        64  Optional server host name, null terminated string.
   file        128  Boot file name, null terminated string; "generic"
                    name or null in DHCPDISCOVER, fully qualified
                    directory-path name in DHCPOFFER.
   options     var  Optional parameters field.  See the options
                    documents for a list of defined options.

(二)完整的交互流程

1.第一次连接该ap时的流程

 Server          Client          Server
            (not selected)                    (selected)

                  v               v               v
                  |               |               |
                  |     Begins initialization     |
                  |               |               |
                  | _____________/|\____________  |
                  |/DHCPDISCOVER | DHCPDISCOVER  \|
                  |               |               |
              Determines          |          Determines
             configuration        |         configuration
                  |               |               |
                  |\             |  ____________/ |
                  | \________    | /DHCPOFFER     |
                  | DHCPOFFER\   |/               |
                  |           \  |                |
                  |       Collects replies        |
                  |             \|                |
                  |     Selects configuration     |
                  |               |               |
                  | _____________/|\____________  |
                  |/ DHCPREQUEST  |  DHCPREQUEST\ |
                  |               |               |
                  |               |     Commits configuration
                  |               |               |
                  |               | _____________/|
                  |               |/ DHCPACK      |
                  |               |               |
                  |    Initialization complete    |
                  |               |               |
                  .               .               .
                  .               .               .
                  |               |               |
                  |      Graceful shutdown        |
                  |               |               |
                  |               |\ ____________ |
                  |               | DHCPRELEASE  \|
                  |               |               |
                  |               |        Discards lease
                  |               |               |
                  v               v               v

2.再次连接该ap的流程

                Server          Client          Server

                  v               v               v
                  |                |               |
                  |              Begins            |
                  |          initialization        |
                  |                |               |
                  |                /|\             |
                  |   _________ __/ | \__________  |
                  | /DHCPREQU EST  |  DHCPREQUEST\ |
                  |/               |              \|
                  |                |               |
               Locates             |            Locates
            configuration          |         configuration
                  |                |               |
                  |\               |              /|
                  | \              |  ___________/ |
                  |  \             | /  DHCPACK    |
                  |   \ _______    |/              |
                  |     DHCPACK\   |               |
                  |          Initialization        |
                  |             complete           |
                  |               \|               |
                  |                |               |
                  |           (Subsequent          |
                  |             DHCPACKS           |
                  |             ignored)           |
                  |                |               |
                  |                |               |
                  v                v               v

以上图表很清楚得表达了DHCP的一个完整的交互过程,开发人员可以tcpdump工具抓取网络数据包进行分析,为了从诺大的数据报文中只匹配出DHCP报文,请在wireshark搜索条件中输入BOOTP进行匹配,从中可以清楚的看到交互的流程和每帧数据报文。这些对于想优化DHCP很有帮助,我曾经在一个Android手机项目中遇到一个问题:我们的机器比对比机在连接同一ap时概率性的慢几秒,起初怀疑是ip地址池已耗尽,但是登录路由后发现ip表未分配还很多,最后我们发现为了省电手机功率教对比机低,所以距离稍远时较差,同时我们通过分析空口数据报文和DHCP报文时发现我们会多次发送DHCPDISCOVER给路由器,都未获的应答,timeout时间时30s,所以我们优化了发送DHCPDISCOVER间隔时次数的算法,对比结果要强于对比机,

后续有时间的话,后续章节会从android WLAN和DHCP代码的角度来分析下Android 4.4 (KatKit)上的流程,并且多附图和例子。

ps:

日常我们常用到的网络协议如下
ip rfc791
tcp rc793
udp rfc768
icmp rfc792
ftp rfc959
http1.1 rfc2616





© 著作权归作者所有

共有 人打赏支持
方治兵
粉丝 5
博文 5
码字总数 4795
作品 0
昌平
私信 提问
加载中

评论(2)

方治兵
方治兵

引用来自“羊半仙”的评论

IETF只是推荐标准,并不保证严谨,他们还制定过一个用信鸽传送ip数据报的协议

是得,就是参考
狗头666
狗头666
IETF只是推荐标准,并不保证严谨,他们还制定过一个用信鸽传送ip数据报的协议
思科向 IETF 提交 TrustSec 标准草案

也许是为了笼络更多设备厂商,思科近日以IETF意见征询草案(RFC)的形式发表了其TrustSec可信网络安全协议。 在IETF网站发布的RFC草案中,TrustSec被命名为“资源组标签交换协议”,简称SXP...

oschina
2014/02/06
1K
6
思科向IETF提交TrustSec标准草案

也许是为了笼络更多设备厂商,思科近日以IETF意见征询草案(RFC)的形式发表了其TrustSec可信网络安全协议。 在IETF网站发布的RFC草案中,TrustSec被命名为“资源组标签交换协议”,简称SXP...

张霖
2014/02/05
0
0
Linux 下 DHCP 服务器的灾难备份

概述 动态主机设置协议 (DHCP) 用于为用户提供网络参数配置,其最重要的功能就是动态分配 IP 地址。作为一种核心的网络服务,要求其具有高鲁棒性,高灵活性,简单说就是具有冗余备份功能。传...

红薯
2010/08/22
298
1
IPv6相对于IPv4的优势是什么

目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。不过随着近互...

wwww6662003
2014/05/05
0
0
外媒称《魔兽世界》将采用IPv6协议

国外媒体日前报料称,美国国际数据集团已经采纳了新一代IPv6协议,《魔兽世界》正在向互联网服务提供商申请使用这一协议。文章称,因为能提供这一协议的互联网服务提供商数量还很有限,虽然眼...

jobell
2011/05/13
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
20分钟前
2
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
42分钟前
1
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
50分钟前
2
0
对比剖析Swarm Kubernetes Marathon编排引擎

Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目。Docker原生集群(Swarm)同时包括了(Docker Engine \/ Daemons)...

Linux就该这么学
51分钟前
2
0
Mybatis的结果集处理

此时我们已经可以把整段的SQL语句取出,但还并没有在数据库中去执行,我们可以先来分析一下配置文件中SQL语句执行后的结果集是如何处理的。 Mybatis会将结果集按照映射配置文件中定义的映射规...

算法之名
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部