环境:
目前的网络环境为一台全新的用于公司内网中的客户机,公司的服务器设备有DHCP服务器,DNS服务器。我们接下来描述的过程为:客户机在插上网线的那一刻,到访问百度首页的整个网络过程。
第一阶段:
1.插上网线时,客户机会发送DHCP discovery广播包,请求IP地址
【大喇叭喊谁能提供IP地址】
2.DHCP服务器收到请求 发送 DHCP offer广播包,告诉客户机说我这有IP地址。
【大喇叭喊我能提供IP地址,谁先喊谁先提供】
3.客户机收到该广播包,并且发送DHCP Requset广播包,同时请求IP地址相关参数(网关,dns,子网掩码等)。如果该网络有多台DHCP服务器,则其他的服务器不会响应这个请求。
【听到好多人喊,再大喇叭喊我用第一个回我的那个人提供的IP地址,其他都回吧,同时请求相关参数】
4.服务器收到广播包,然后发送 DHCP ACK包,即向客户机发送IP地址,网关,dns,子网掩码相关参数。
该过程完成后,客户机就有了IP地址,子网掩码,网关,dns等参数。可以在内网中通信。
包内容:
第二阶段:
接着,客户机打开浏览器,在地址栏输入www.baidu.com后回车。
1.客户机先去访问缓存,接着访问host文件,由于是全新的机器,所以两处文件都没有数据。
2.客户机需要知道百度的IP地址,所以去访问DNS服务器。假设DNS服务器跟客户机在一个网段内。DNS服务器的地址从DHCP服务器那里已经继承过来,知道了DNS服务器的IP地址还不能发送数据,还需要是的DNS服务器的MAC地址。接着客户机发送arp广播包获取DNS服务器的MAC地址。
【大喇叭喊IP地址为x.x.x.x的人你的MAC地址是多少,DNS收到后就会回应MAC地址】
3.获取完MAC地址之后客户机即可组织发送数据,向DNS服务器请求百度的IP地址。客户机会先发送一个NDS请求包,DNS服务器收到后会先看缓存,如果缓存里面有百度的地址,那么就会回发给客户机NDS回复包。如果缓存里没有,那么DNS服务器就会看自己负不负责解析baidu.com 这个域名,不负责那就转发给远程DNS服务器,再回发数据包。
报文格式如下:
请求包Queries区域的字段有:
name:域名
name length:域名长度
label count:
type:资源记录类型,一般是A,也就是A记录,代表主机
class:Internet,一般是IN
NDS回复包比请求包多一个Answers区域,字段有:
name:域名
type:同上
class:同上
time to live:缓存时间,秒
data length:解析IP地址的大小,4个字节
address:IP地址
4.使用ARP协议获取默认网关的MAC地址。
第三阶段:
5.客户机将数据包发送给网关,路由器根据路由协议及路由表选择一条最优路径,将客户机数据转发给所获取IP地址的百度服务器的目的网关,该网关再将数据转发给那个获取IP的百度服务器,进行TCP三次握手
6.客户机使用http协议发送请求数据给web服务器
7.百度web服务器收到请求后查找相应的结果,然后原路返回给客户机
8.客户机收到数据通过浏览器的渲染功能显示网页