一个完整的网络访问过程

环境:

目前的网络环境为一台全新的用于公司内网中的客户机,公司的服务器设备有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等参数。可以在内网中通信。

客户机发送discovery广播包.png

DHCP服务器接收.png

包内容:


discovery包内容.png

第二阶段:

接着,客户机打开浏览器,在地址栏输入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服务器,再回发数据包。

报文格式如下:

格式.png

请求包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.客户机收到数据通过浏览器的渲染功能显示网页

你可能感兴趣的:(一个完整的网络访问过程)