实验1:以太网MAC帧

以上是以太网帧的格式,其中,LLC-PDU长度/类型表示:如果LLC-PDU为数据时,则表示以字节为单位的长度,如果LLC-PDU是上层协议时,表示的是上层协议类型。由于LLC-PDU最长只能是1500,那么,如果LLC-PDU长度/类型字段值小于或等于05DC(1500),则表示数据长度,如果LLC-PDU长度/类型字段大于05DC,则表示上层协议类型。下面是值与协议类型对照表
1  | 0800H: IP协议  | 
由于LLC-PDU包含了LLC帧首部的4个字节:DSAP(1B), SSAP(1B), 控制(2B ),因此如果LLC-PDU长度/类型字段值为0040时,LLC-PDU的数据字段只能为64-4=60字节。
LLC的控制字段:输入02H表示LLC信息帧(显示0200);(注:回车后变成0200,该帧变为:信息帧,控制字段的长度变为2字节)
windows cmd下输入ipconfig 命令可以看到以太网适配器的IP地址、子网掩码及默认网关;
windows cmd下输入route print 命令可以查看路由表
说明DSAP和SSAP的含义?如果编辑一个监控帧,如何设置控制字段?
(1)DSAP:目的服务访问点
SSAP:源服务访问点(2)LLC控制字段有16位,其中两位SS字段用来执行监控功能,00表示准备接受RR,10表示未准备接受RNR,01表示拒绝REJ;4位x位用于保留,设为0;以为P/F位,命令LLC/PDU传输或响应LLC/PDU传输。
说明为什么数据区不需要数据长度的限制?
以太网帧的协议类型/数据长度字段为0700表示自定义数据帧,对于此类数据帧没有长度限制。
解释路由表项的含义
在路由表项中查不到目的网络地址或主机地址的IP包,被自动送往网关路由器202.198.151.254, 跃点数表示传输过程中最多需要经过多少个网络才能到达目标,目的是防止无用的IP包在网上流散。
实验2:IP,IPV6
IP
IP是一个无连接的、不可靠的、点对点的协议,只能尽力(Best Effort)传送数据,不能保证数据的到达

以上是IP协议的格式。
首部长度:可以表示的最大长度是15个单位(一个单位占4字节),因此IP首部最大长度为60字节。
总长度:整个IP数据包的长度,不超过最大传输单元MTU
标志:占3位,目前只有前两位有意义
标志字段的MF(More Fragment):1表示后面还有分片
标志字段的DF(Don’t Fragment):0表示允许分片
片偏移:以8个字节为偏移单位
协议:1表示ICMP;6表示TCP;17表示UDP;
首部校验和:
如何计算机首部校验和:

每两个16位的计算过程采用反码加法算法,如
1  | 1100111  | 
IP数据包分片示例

如何编辑IP包
下面是编辑IP包的整个流程:
目的MAC地址->源MAC地址->源IP地址->目的IP地址->IP总长度->首部校验和
IPV6
由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
如何编辑IPV6包
与编辑IP包不同的是,不需要计算总长度,只需要计算有效载荷长度。
IP分片
在windows cmd下输入命令ping -l 3000 172.16.0.12 表示向主机172.16.0.12发送长度为3000的ICMP报文。发送完了之后,打开协议分析器,检查具有相同表示字段的IP包有几个,这些包的内容是什么。
最后发现有一个ICMP报文,两个IP报文。ICMP报文的帧长度为1410,则可以算出IP协议部分的长度为1410-14=1396,但是由于IP协议部分包含了8字节的ICMP首部,所以数据字段为1396-20-8=1368字节;第一个IP报文的帧长度为1410,则IP协议部分长度为1410-14=1396,数据部分长度为1396-20=1376字节;第二个IP报文的帧长度为290,则IP协议部分的长度为290-14=276字节,数据部分的长度为276-20=256。验算:1368+1376+256=3000。
实验3:ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
下面是ARP协议的工作过程的形象描述

ARP高速缓存
存放了最近IP地址到MAC地址之间的映射
windows cmd下输入arp -a 可以查看主机的arp缓存表
arp协议直接封装在以太网帧中,下面是arp报文的格式。

编辑arp包
以太网帧首部中,目的MAC地址是全1,在arp报文首部中,目的硬件地址是全0。
arp欺骗
arp欺骗主要是在arp包首部的源MAC地址和源IP地址做手脚。如果使得源MAC地址和源IP地址不匹配,则会对接收这个arp包的主机造成欺骗。
- 若A,C,D在同一个网段,则D发送一个ARP请求报文给A,在其他都正常的情况下,将ARP层的源IP地址改为C的IP地址。那么在A的ARP缓存表中记录了C的IP地址和D的MAC地址的映射,每次发给C信息时,都会经过D
 - 网关在发送ARP应答报文时,在ARP层将源MAC地址改为错误的MAC地址,那么主机就会收到网关IP和错误MAC的映射,导致发送的包永远也到不了网关,因此上不了网。
 - 主机给网关发送ARP应答报文时,在ARP层将源MAC地址改为错误的MAC地址,那么主机永远也不会收到网关的报文,因此也上不了网。
 
如何避免arp欺骗呢?
实验4:ICMP协议
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议封装在IP数据包中

1  | 
  | 
ping 202.198.151.151 测试网络联通性
tracert 202.198.151.151 测试目的主机路由线路的程序
如何编辑ICMP报文:就是填个ICMP首部的类型和代码字段,其他部分就按正常流程来。
实验5:UDP,DNS
UDP
UDP协议直接封装在IP数据包中:

UDP在计算校验和时,除了包含UDP的首部和数据以外,还包含了一个12字节的伪报头,伪报头包含IP报头的源IP和目的IP,让UDP检测数据确实已到达正确的目的端。
UDP的有效负载长度和IPV6的不一样,它包含了UDP报文的整个长度,而不仅仅是数据的长度。
DNS
在windows cmd下输入命令nslookup host34.netlab 可以查询域名为host34.netlab的服务器名称和ip地址。
在实验中编辑DNS报文的时候有几个点要注意:
UDP的源端口可以随便填写个大于1024的数,因为我们不要求本机的某个端口可以接受到DNS应答,只需要本机捕获到相应的DNS报文即可。
UDP的目的端口写53
在实际中,DNS的数据帧是要广播出去的,但在实验中,可以指定目的主机的MAC地址和IP地址
对DNS的编辑,主要是域名循环体的编辑,如果你要查询host34.netlab的ip地址,你可以弄3个域名循环体,第一个域名循环体的长度写6(host34的长度是6),然后域标记写host34,第二个域名循环体的长度写6(netlab的长度是6),然后域标记写netlab,第三个域名循环体的长度写0,表示结束。

实验6:TCP,端口扫描
下面是TCP协议的报文格式:

选项字段:长度可变,TCP最初只规定了一种选项,即最大报文段长度MSS,告诉对方我的缓存所能接收的报文段的数据字段的最大长度是MSS字节。MSS是TCP报文段中的数据字段的最大长度。
TCP三次握手
步骤如下:
- 打开TCP工具,切换到客户端模式。
 - 地址输入172.16.0.253,这时学校的子网内的服务器,可以接受http请求,所以端口写80。
 - 点击连接
 - 在客户端发送一个数据
 - 点击断开
 - 查看协议分析器,找一下,就可以发现TCP连接,发送数据和断开连接的过程。
 

有时候断开连接的时候,第二个主机的ACK和FIN放在一起了,表示第二个主机没有数据要发送了,可以直接断开,正常来说,第二个主机是要先发送ACK,再发送一点数据,然后再发送FIN的。
TCP端口扫描
TCP端口SYN扫描,如果端口开放会有应答,否则会有RST回答。
使用TCP工具连接到172.16.0.253来做实验。
UDP端口扫描
UDP端口扫描是借助于ICMP协议的端口不可达报文来实现。如果目的主机端口开放,没有ICMP差错报文,反之,会收到ICMP目的端口不可达差错报文。
使用UDP工具连接到172.16.0.253来做实验。
实验7:FTP,HTTP
FTP
FTP协议的控制端口是21,数据端口是(20,如果采用PORT模式,不确定,如果采用PASV模式)
Port模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。例如:Port172.16.0.16,192,13,表示新开的端口是192×256+13=49165。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的49165端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
HTTP
主页访问:通过get方法提取网站主页文件。
页面提交:通过post方法提交信息。
HTTP是应用层协议,是WWW服务的支撑协议。
HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
端口是80.