TCP/IP参考模型:
应用层
传输层
网际层
网络访问层
抓包工具 sniffer抓包 decode 合并中间的分支
DLC 网络访问层 IP地址与物理地址的映射,以及将IP地址封装成帧
IP 网际层
TCP 传输层
HTTP应用层
IP报头结构:
版本 4
报头长度4
优先级和服务类型8
数据包总长度 16
标识 15
标志和偏移量 16
存活期 8
协议 8
报头校验 16
源IP地址 32
目的IP地址32
选项 0或32
数据 (可变)
【ICMP协议】
IP不提供可靠的传输服务,也不提供端到端或点到点的确认,如果出错可以通过ICMP报告来看,它在IP模块中实现。TCP/IP协议设计了ICMP就是为了弥补IP协议的不足。
它是TCP/IP协议族的一个子协议,用于在IP主机和路由器之间传递控制消息
控制消息指网络不通,主机可否达,路由是否可用的等。
这些控制消息传递的并不是用户数据,但是对用户数据的传输起着重要作用
作用:负责差错控制,拥塞控制,传输控制
工作过程:ping就是ICMP的工作过程
tracert命令也是基于ICMP协议的
相应请求8:本机发送一个ICMP Echo Request的包,包有64字节
相应应答0:受方返回一个ICMP Echo Reply,包含了接收到数据拷贝和一些其他命令
ICMP报文时包含在IP数据报中,属于IP的一个用户,所以IP报头就在ICMP报文前面
ICMP报文包括:IP头部,ICMP头部和ICMP报文
IP头部中Protocol=1说明是ICMP报文
ICMP头部中的type说明ICMP报文的作用和格式
code说明报文的类型
【ARP协议--地址解析协议】
在局域网中,网络中实际传输的是帧,帧里面包含了目的主机的MAC地址,ARP就是用来获取目的主机MAC地址的。
ARP的功能就是通过目标主机的IP查询其MAC地址。负责将相应的IP地址解析成MAC地址。
arp -a 查看arp缓存表
arp -d 删除arp缓存表
如果不知道目的mac,会首先发arp包得到目的IP对应的mac,再发ICMP包
实例:通过思科的packet tracer,在模拟模式中来捕获ARP和ICMP的包,如果之前已经ping过,ARP缓存表会有ip和mac地址对应关系,这样捕获不到ARP包。
如果之前没有ping或arp -d清空ARP缓存表,这样局域网中192.168.1.1 ping192.168.1.1才能捕获到ARP包。
dynamic说明是动态的,过一段时间,ARP的缓存表会消失。
ping的第一个包的时间比之后的三个包的时间长,因为首先要发送arp请求知道目的mac
【代理ARP和RARP】proxy arp
因为路由器有阻隔广播的作用,如果我们要访问一台远端的主机,那么我们封装的并不是远端的目的MAC地址,而是我们网管的MAC地址。
如果当我们的网管出现故障了,怎么办?那么就需要为它配置一个新的网关。
代理ARP在这种情况下,会自动的帮助某个子网下的主机,不需要配置网关,就也可以访问远端的主机。
代理ARP,就是在网络增加一台路由器,而不影响它的路由表
不足:明显增加网络分段中的业务传输量,主机的ARP表就会比平常大很多
思科的路由器默认是开启代理ARP功能的。
RARP 反向地址解析协议 将MAC地址解析成IP地址
但是不能跨路由器,也不能实现不同网段直接的请求。因此我们使用BOOTP协议和DHCP协议。
DHCP和BOOTP协议差不多,但是DHCP协议更强,所以当今普遍使用的就是DHCP。
ARP协议是跨越OSI模型的二层和三层的,因此处于网络层的防火墙对ARP攻击就显得无能为力了。
简述一下ARP欺骗过程?
PC1--------SW1--------PC2
(1.1 AA) | (1.2 BB)
|
PC3(1.3 CC)
假设这里有一台交换机SW1链接PC1-1.1(mac AA)和PC2-1.2(MAC BB),还有一台PC3-1.3链接SW1(MAC CC)
,正常情况下,PC1-1.1要去防伪PC-1.2,它要知道PC-1.2的MAC地址,会一个ARP的查询包。ARP查询包是广播的,PC-1.2和PC-1.3都会收到,正常情况下,PC-1.3会把这个包丢弃,因为PC-1.1是要知道PC-1.2的MAC地址。它并不想知道PC-1.3的MAC地址。那么PC2就返回MAC地址BB给PC1.1。
假设PC3是一台欺骗计算机,在网络中不断地说“我是1.2,我是1.2……”而ARP缓存表的类型是dynamic,动态的。等时间长了,那PC1学到的MAC地址就是PC3对应的MAC地址了,就是CC了,而不是BB。1.1去访问1.2,对数据进行封装,封装PC-1.3的MAC地址,那发给PC-1.2的所有数据就到了PC-1.3。
【UDP】用户数据报协议,是TCP/IP协议中无连接的传输协议。
源端口 目的端口 长度 校验 数据(可变)
简单的传输协议,没有确认机制,也没有传输保证等。错误处理和重传机制要由上层来保证
UDP应用于对可靠性要求不高,网络延迟比较小的场合。如语音和视屏的传输。
组播一般都采用UDP,如一些教学的软件“电子教室”等,老师只要发送一份数据到广播组,那么所有的学生都可以加入这个组,并且接受老师的广播教学。
windows自带的netmeeting也是使用的UDP协议,教师可以通过他的共享自己的桌面进行教学。
【TCP协议】
TCP是面向连接的传输协议,提供可靠的数据传输。开始传输数据之前,必须建立端点之间的连接。
源端口 目的端口 序列号 确认号 头长度 保留 代码位 window窗口 校验 紧急 选项 数据(可变)
TCP/IP协议组的常用协议:
http/ftp/smtp/pop3/telnet/DNS DNS/TFTP
| |
TCP UDP
IP、ICMP、ARP
internet LAN Many LANS
三次握手:
1.发送SYN(seq=x ctrl=syn)
2.收到SYN,发送SYN和ACK(seq=y ack=x+1 ctrl=syn,ack)
3.发送ACK(seq=x+1 ack=y+1 ctrl=ack)
TCP三次握手不仅解决了序列号的问题,还解决了窗口大小,网络延时等其他问题。
窗口大小并不是固定的,而是根据我们之间的额链路的宽带的大小,这个时候链路是否拥塞,接受方是否能够处理这么多的数据决定的
所以滑动窗口是一种流量控制,允许源设备在向目的设备发送一定量的数据之后接受一个确认。
【IP地址】
IP地址有32位,每一段是一个字节,一个字节=8位。网络号+主机号两部分组成
IP地址分类:
A类地址中0不允许使用,127作为测试TCP/IP协议的环回地址,因此A类地址实际可以用的是1-126
网络地址:网络地址不变,主机位全0的ip地址代表网络的本身
广播地址:网络地址不变,主机位全1的ip地址代表网络的广播地址
VLSM变长子网掩码
CIDR无类域间路由
私有地址是无法连接到internet的。因为我们需要使用代理或者NAT的能录把私有地址转换成公有地址。
原则上讲:私有地址是可以任何地址,但是有一个问题。但如果和公网的ip地址冲突,则无法访问该公网。
10.x.x.x
172.16.x.x-172.31.x.x
192.168.x.x
IP子网划分:
让1.1能ping通2.1的方法:
修改2.1为1.3
添加一个路由器
修改子网掩码为252
IP地址和掩码地址按位与运算得到网络位
全0的子网掩码和全1的子网掩码默认是不可以使用
【封装和解封装】
PC1 telnet远程到server
1.PC1封装数据包
2.PC1把数据包发给HUB
3.R1收到数据包发往R2
4.R2收到数据包
5.R2把数据包发给交换机
6.Server收到数据包
7.对数据包做出回应
193.1.1.2/24首先要检查本地的ARP缓存,如果自己本地ARP缓存中没有195.1.1.3/24对应的MAC地址,就会发送一个ARP的请求包来获取对应的MAC地址,但是它发现server并不是和自己在同一个网络当中的,那么它就会记录本地网关的IP所对应的MAC地址。当PC1有了本地网关的MAC地址就对数据进行封装。
会话层将数据流传送到传输层,由传输层进行分段并添加源端口和目的端口,分完段交给网络层,网络层就会在数据包添加源IP地址PC1的IP和目的IP地址Server的IP,再发往数据链路层,添加源MAC和目的MAC。此时源MAC是PC1的MAC,目的MAC是网关R1的MAC。CRC冗余校验,到了数据链路层,报头也就填满了,填满了就会发往物理层。物理层转换成1010开头的01代码发到集线器当中去,集线器把数据发往出自己以外的所有的端口,路由器接受到了比特流以后。路由器是三层的设备,将数据流解封装到数据链路层再解封装到网络层,就会发现目的的IP地址是195开头的,并不是和自己一个网段当中的,路由器发现了目的的IP地址以后,再次进行封装,发往R2,R2收到以后解封装,解到网络层,发现195是在自己的网络当中的,就发给网络中的交换机,交换机是二层的设备,将数据包从物理层解封装到数据链路层,看看对应的目的MAC,然后发给Server,这时候Server就收到了PC1的数据包,并作出回应。
-----------------------------------------------------------
目的 源 目的IP 源IP 目的端口 源端口 数据 CRC
------------------------------------------------------------
网关 PC1
同种设备用交叉线,异种设备用直通线
PC与路由器相连,连路由器的con0口用控制线;连路由器的以太口用交叉线。