本系列博客以计算机网络相关实验为主,包括windows命令实验、wireshark实验、Packet Tracer路由交换实验,也是自己整个学习过程中的一个记录,望不吝赐教。
计算机网络实验03 windows命令实验之 DHCP、netstat 命令
5 DHCP
5.1命令功能简述
5.1.1 协议理解5.1.2 分配IP地址的方式 5.2 格式、参数及选项简述
5.2.1 DHCP报文格式5.2.2 DHCP报文格式字段说明 5.3 实验描述
5.3.1 了解 DHCP 工作过程和原理5.3.2 Wireshark对DHCP过程进行抓包5.3.3 DHCP工作过程小结5.3.4 在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?5.3.5 在一个固定地方的网络配置采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗? 6 Netstat
6.1 命令功能简述6.2 格式、参数及选项简述
6.2.1 语法格式6.2.2 参数说明 6.3实验描述
6.3.1 Windows 系统将一些常用的端口与服务记录在 C:WINDOWSsystem32driversetcservices 文件中,请查看该文件了解常用的端口号分配6.3.2 使用 netstat -an 命令,查看计算机当前的网络连接状况6.3.3 由于开始不明白netstat -an返回的内容,由此介绍网络连接状态的内容6.3.4 netstat命令小结 5 DHCP 5.1命令功能简述 5.1.1 协议理解
DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配 IP 地址给用户;用于内部网管理员对所有电脑作中央管理。
简单的说,DHCP 可以让计算机自动获取/释放网络配置。
(1)手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。
(2)自动配置方式:当DHCP客户端第一次想服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。
(3)动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。
整个报文的封装格式,包括链路层头、IP头、UDP头和DHCP报文,其中DHCP主要的数据都封装在DHCP报文中。
一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。
我的操作:
使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取。操作过程如下图所示。
我的分析:
整个过程在ipconfig中(1.3.1)有过分析。
ipconfig /renew按回车后稍稍等待一会儿,我们的电脑又会重新获取了IP地址,又重新可以上网了。使用renew参数获得的IP地址一般与之前的IP地址是相同,因为只有在这个IP地址被占用的时候,DHCP服务器才会重新为这台电脑分配IP。
一般情况下,这两个参数是一起使用的,ipconfig/release为释放现有的IP地址,ipconfig/renew命令则是向DHCP服务器发出请求,并租用一个IP地址。但是一般情况下使用ipconfig/renew获得的IP地址和之前的地址一样,只有在原有的地址被占用的情况下才会获得一个新的地址。
为了更加详细了解DHCP的工作过程,这里我用wireshark进行操作。
我的操作:
1.在Wireshark中点击start开始抓包,在过滤栏输入bootp,使其只显示DHCP数据包。
2.在cmder中输入ipconfig /release 断开网络连接。(这里不再重复放图)
Wireshark中截获到一个DHCP Release数据包。(即下图第一行所示Release)
3.在cmd中输入ipconfig /renew 请求网络连接。(然而直接上,没等我进行此步操作,电脑自己就又把网络连上去了)
可以看到在Wireshark中新增了4个DHCP数据包:数据包1:DHCP Discover,数据包2:DHCP Offer,数据包3:DHCP Request,数据包4:DHCP ACK。
4.为了后续分析使用,我们再执行一次ipconfig /renew:
可以看到Wireshark中新增了3个数据包:DHCP ACK;DHCP Request;DHCP ACk;
如果再次使用ipconfig /renew,每执行一次会新增2个数据包:DHCP Request;DHCP ACk。
我的分析:
ipconfig /renew这条命令产生的4个DHCP数据包,这4个数据包代表了客户机和DHCP服务器的交互过程,也是IP动态分配的过程。
1.Client端使用IP地址0.0.0.0发送了一个广播包,可以看到此时的目的IP为255.255.255.255。Client想通过这个数据包发现可以给它提供服务的DHCP服务器。
从下图可以看出,DHCP属于应用层协议,它在传输层使用UDP协议,目的端口是67。
2.当DHCP服务器收到一条DHCP Discover数据包时,用一个DHCP Offerr包给予客户端响应。
DHCP服务器仍然使用广播地址作为目的地址,因为此时请求分配IP的Client并没有自己ip,而可能有多个Client在使用0.0.0.0这个IP作为源IP向DHCP服务器发出IP分配请求,DHCP也不能使用0.0.0.0这个IP作为目的IP地址,于是依然采用广播的方式,告诉正在请求的Client们,这是一台可以使用的DHCP服务器。
DHCP服务器提供了一个可用的IP,在数据包的Your (client) IP Address字段可以看到DHCP服务器提供的可用IP。
除此之外,如图中红色矩形框的内容所示,服务器还发送了子网掩码,路由器,DNS,域名,IP地址租用期等信息。
3.当Client收到了DHCP Offer包以后(如果有多个可用的DHCP服务器,那么可能会收到多个DHCP Offer包),确认有可以和它交互的DHCP服务器存在,于是Client发送Request数据包,请求分配IP。此时的源IP和目的IP依然是0.0.0.0和255.255.255.255。
4.服务器用DHCP ACK包对DHCP请求进行响应。
在数据包中包含以下信息,表示将这些资源信息分配给Client:
Your(client) IP address:分配给Client的可用IP。
后面有许多项option信息,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,后面几项是:Subnet Mask:Client端分配到的IP的子网掩码;Router:路由器;Domain Name Server:DNS,域名服务器;Domain Name:域名;IP Address Lease Time:IP租用期。
5.3.3 DHCP工作过程小结5.3.4 在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?1、客户端通过广播发送DHCP Disccover报文寻找服务器端
2、服务器通过单播发送DHCP offer报文向客户提供IP地址等信息
3、客户端通过广播发送DHCP Request报文告知服务端本地选择使用哪个IP
4、服务器通过单播发送DHCP Ack报文告知客户端IP地址是合法可用的
答:这是Windows操作系统为了防止主机脱网,为网卡设置169.254.x.x的保留IP,此时就算由于某种原因计算机不能获取 DHCP 服务器的配置数据时,他们还通过保留地址还可以互相通讯。自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,要真正的接入Internet还需要本身计算机的正确IP地址。
自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址。意义:假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。
5.3.5 在一个固定地方的网络配置采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?答:动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上网,不需要获取IP地址,该IP在ISP装机时会划分一个IP地址给你,让计算机在连接网络时不再自动获取网络地址,避免了网络连接上的困扰。
动态IP和静态IP对网速的影响,ISP对每个用户所提供的网速,并不是从IP地址限定的,而是从用户连接到ISP的物理线路上进行限定的。
6 Netstat 6.1 命令功能简述 无论是使用 TCP 还是 UDP,任何一个网络服务都与特定的端口(Port Number)关联在一起。因此,每个端口都对应于某个通信协议/服务。
netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
6.2.2 参数说明NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
(使用 netstat -help(netstat -h) 或者netstat -? 可查看netstat的命令信息)
Netstat 可以用来获得系统网络连接的信息(使用的端口,在使用的协议等 ),收到和发出的数据,被连接的远程系统的端口,Netstat 在内存中读取所有的网络信息。在Internet RFC标准中,Netstat 的定义是: Netstat 是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
6.3.4 netstat命令小结1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN.侦听来自远方TCP端口的连接请求。
2)、SYN_SENT:客户端通过应用程序调用connect进行active
open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT.在发送连接请求后等待匹配的连接请求。
3)、SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN.
之后状态置为SYN_RECV。在收到和发送一个连接请求后等待对连接请求的确认。 4)、ESTABLISHED:
代表一个打开的连接,双方可以进行或已经在数据交互了。代表一个打开的连接,数据可以传送给用户。
5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态.等待远程TCP的连接中断请求,或先前的连接中断请求的确认。
6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT.等待从本地用户发来的连接中断请求
7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2 .从远程TCP等待连接中断请求。
8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个FIN,等待对方的ACK.就进入了LAST-ACK ,等待原来发向远程TCP的连接中断请求的确认。
9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。等待足够的时间以确保远程TCP接收到连接中断请求的确认。 10)、CLOSING:等待远程TCP对连接中断的确认
11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束.
12)、UNKNOWN: 未知的Socket状态。
打开的计算机端口,就是向 Internet 打开的一个通道。通过 netstat 命令,我们可以了解当前计算机哪些端口是打开的,从而找出一些恶意后台程序,分析其所作所为,并且可以进一步将相关端口关闭,降低安全风险。