TCP协议
TCP属于传输层
传输层对数据进行差错控制,保证传输数据完整准确
应用间的通信是通过与之绑定的端口进行通信
TCP是基于端口的通信协议
端口号0-65535,端口号为16位,全1即为最大。
IP中对每个数据包进行编号,而在TCP中为了保持数据准确会对每个数据字节按顺序编号
序号放置的是当前数据段的起始字段数
比如该数据段有100个字节,开始字节为201,序号就是201,确认号就是301
数据偏移不等于片偏移,概念也不同
Apache,iis默认80端口,FTP服务器默认21端口
TCP的三次握手
第一次发送的SYN=1,seq=x是没有数据的,只是一个请求连接的报文,如果主机B没有打开,就会发送一个RST包断开TCP握手
ACK=1时是确认对方发送的确认号有效,ack确定seq的序号的包,所以ack包都是在对方发送过来的序号加一,确定自己是收到对方的seq包的
TCP四次挥手
半关闭状态B仍可以向A发送数据,A不能回数据
TCP Retransmission:超时重传数据包
Td为发送数据包,是有效时间,此种方式对信道的时间利用率较低
RTT是等待返回数据包的平均时间
Ta是接收确认数据包后的处理时间
滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。
连续ARQ(Automatic Repeat reQuest)协议指发送方维持着一个一定大小的发送窗口,位于发送窗口内的所有分组都可连续发送出去,而中途不需要等待对方的确认。这样信道的利用率就提高了。而发送方每收到一个确认就把发送窗口向前滑动一个分组的位置。
a种:会把五个数据包全部发送并且全部确认收到后再发送数据包。如果1未确认发送到目标端口,而2,3,4,5确认收到后,超时重传会把5个数据包都重新发一遍
B种:如果1没有收到确认信息,就会超时重传并且发送窗口等待超时重传后再继续移动
TCP Dup是提醒包,提醒发送主机发送有错,该数据包是响应包的序号和请求包的确认号不同
TCP Fast Retransmission:快速重传数据包
RST=1,ACK=1表示接收到了数据包,但是要求断开重连
TCP ZeroWindow:接收窗口为0,表示无法接收信息
其后常跟着TCP window Update:开放窗口,逐渐扩大窗口量
TCP Keep-Alive,保持窗口开通,以使能够进行二次连接传输
对HTTP流进行分析:右键HTTP数据包,追踪HTTP流
可以看到有GET方式向服务器传参,请求访问该网站下的URL
GET和HOST可以组成一个完整的域名
UDP协议分析
DNS协议
本地DNS服务器类似ARP缓存表,客户机会在DNS服务器中先在“.”根域中找到.com的顶级域名,在找到.baidu.com的一级域名,再在.baidu.com中找到www对应的服务器,该服务器的IP就是对应的域名
在本地DNS服务器查询前,会先在本机的C:\Windows\System32\drivers\etc的Host文件中查询域名对应ip
对其中的标志位进行详细解读:
客户机的角度:一个请求包,一个服务器的IP返回包
Queries:请求(该包的请求为向DNS服务器请求wireshark.org的IP)
Answers:对请求的应答(返回了该网站的IP)
服务器角度:
收到客户机的请求包--在本地服务器未找到该域名对应的IP,向其他DNS服务器发起请求包--收到其他服务器的应答--返回客户机应答包
DHCP协议
交换机原理与路由
(loT物联网渗透)高级渗透:
路由器攻击:在同一交换机下可以划分VLAN,每个VLAN的数据不互通,跨VLAN的攻击涉及到路由器攻击
打印机渗透
LAN:同一局域网
MAC地址老化时间每个交换机都不同
MAC地址表不等于ARP缓存表,MAC地址表是MAC地址对应向外发送数据的端口(记住向外发送指向目标MAC地址的端口),而ARP缓存表是IP和MAC地址的对应表(解析目标IP的MAC地址)
在更换MAC地址时,会自动向本网段广播MAC地址,此时ARP缓存表和MAC地址表都会更新
交换机是数据链路层的设备,它只有MAC地址表,不能解析IP,三层交换机具有ARP缓存表,才可以解析IP为MAC地址
在交换机或路由器的控制台(console)中,可以用enable提权
这个地方打错了,line console 0是进入console接口模式,仅对console接口生效
Console接口是典型的配置接口。使用Console线直接连接至计算机的串口,利用终端仿真程序(一般使用Windows自带的“超级终端”)在本地配置路由器。
可进行网络管理的交换机上一般都有一个“Console”端口,它是专门用于对交换机进行配置和管理的。通过Console端口连接并配置交换机,是配置和管理交换机必须经过的步骤。
此处需要实践
fastethernet是端口,每个主机连接的端口不同,使用时进入端口并用no shutdown打开
路由寻址原理概述:
如何从主机A发到主机B?
交换机的MAC地址表以一个IP为一个接口,路由器的路由表以一个网段为一个接口
路由表,记录着到不同网段的信息
没有匹配到结果就发送和到缺省路由
· 路由A,地址192.168.1.1
· 子网掩码255.255.255.0
· 典型计算机B,地址192.168.1.129
· 目的地址为192.168.1.1/24 网段外部,例如114.114.114.114, 那么发送的链路层帧目的 MAC 为网关 MAC 地址(bc:d1:...),网络层目的IP仍为114.114.114.114。
在后一种情况使用网关通信的过程中,大概发生了几件事
1. 通过路由表查询得到,114.114.114.114 需要使用 192.168.1.1 作为网关进行通信,接口为 eth0。这也就是为什么有人说“网关就是一条路由”。
2. 通过 ARP 表查询得到,192.168.1.1 的 MAC 地址为 bc:d1:...
3. 向 eth0 接口发送如上所述链路层帧
在自己所在子网通信不需要路由器(网络内),不需要网关。
和自己所在子网之外通信(网络间),需要通过网关。
114.114.114.114在路由表内没有找到对应的MAC地址,就放到缺省路由0.0.0.0内,并由网关192.168.1.1发送向外界的路由器,在外界同一网段的路由器的路由表内找到了对应IP再在ARP缓存表内找到对应的MAC地址,如果没有,就ARP广播,最后再在MAC地址表内找到对应的端口发送出去
暂时忽略interface,,,,gateway是网关,可以视作路由器
gateway:网关,又称下一跳路由器。在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。【用来指明到达目的网络应该将路由传递给谁,你要和外界进行通信,必须要经过关口把手,你发给外界的数据包,只需要扔给网关,网关负责帮你和外界进行通信。如果是同网段的进行通信,gateway就是interface(注意:有的也会显示在连路上),在一个局域网内不需要路由】
interface:接口,接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。(即到达该目的地的本路由器的出口ip)
注意:网关必须位于和接口相同的子网(默认网关除外),否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁。
这个路由表只是主机A的路由表,在路由器上和主机B上都有路由表的。具体是如何路由的听完下一节课会讲,也会对端口进行讲解
对于主机A来说,接口就是主机A用于发送数据包的网络接口,所以就是他自己的IP
比如在这里配置路由器,同一路由器的不同接口具有不同的IP,而网关就是指R2的IP而不是哪个接口。
对于这个R2路由器来说,它的接口就是202.100.10.2和202.100.20.1,它的IP就是网关
*VLAN的介绍和配置(在GNS3内配置)
VLAN在交换机下划分不同的局域网,作用于二层网络,也就是交换机下
在配置VLAN的过程中,右键交换机,configrua配置VLAN
划分VLAN之后就相当于两个局域网,两个网段,没有路由转发的情况下不能相互PING通
VLAN是对端口划分
通常是用命令行配置VLAN,但是GNS3环境配置不够
*ACL配置(GNS3)
实例:禁止R1访问R3
配置R1和R3:
202.100.10.2是下一跳地址
配置解释:进入全局配置模式
进入0/0网卡,是R1与R2绑定的接口
配置0/0接口的IP
启用配置
退出0/0网卡
配置缺省路由,下一跳地址是R2和R1的接口
退出全局配置模式
保存
配置R2:
路由2有两个接口与外界连接,所以要配置两次,配置接口的IP和子网掩码
不用配置下一跳地址
配置完成后就可以在R1和R3间PING通,基础设置完成,下面配置ACL
写错了,要进入全局配置模式才能创建ACL条目
这里配置了不接收202.100.10.1(R1)的数据,但是在R3 PING R1时也PING不通,因为PING命令是发送一个ICMP包,在接收响应包时依旧是从R1发向R2,所以PING不通
ACL表是路由器的表,类似于操作系统的Iptables过滤规则
### 网络地址转换NAT
静态NAT表会把NAT内网IP转化为一个外网IP,再向目标IP发送,每个内网IP对应的外网IP是不一样的,在收到响应包时将外网IP对应就能发向指定机子,不可能多台主机对应一个外网IP
外网IP只需要一个,内网的IP和端口会临时生成一个和外网IP和端口的对应表。比如该图的表
了解即可
标准ACL的配置命令 标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL。标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。
要配置标准ACL,首先在全局配置模式中执行以下命令:
Router(config)#access-list access-list-number {remark | permit | deny} protocol source source-wildcard [log]
参数说明:
| 参数 | 参数含义 |
|---|---|
| access-list-number | 标准ACL号码,范围从0-99,或1300-1999 |
| remark | 添加备注,增强ACL的易读性 |
| permit | 条件匹配时允许访问 |
| deny | 条件匹配时拒绝访问 |
| protocol | 指定协议类型,eg:IP,TCP,UDP,ICMP等 |
| source | 发送数据包的网络地址或者主机地址 |
| source-wildcard | 通配符掩码,和源地址对应 |
| log | 对符合条件的数据包生成日志消息,该消息将发送到控制台 |
其次,配置标准 ACL 之后,可以在接口模式下使用 ip access-group 命令将其关联到具体接口:
Router(config-if)#ip access-group access-list-number {in | out}
| 参数 | 参数含义 |
|---|---|
| ip access-group | 标准ACL号码,范围从0-99,或1300-1999 |
| access-list-number | 标准ACL号码,范围从0-99,或1300-1999 |
| in | 参数in限制特定设备与访问列表中地址之间的传入连接 |
| out | 参数out限制特定设备与访问列表中地址之间的传出连接 |