网络基础
一、数据的封装&解封
1. 封装
2. 解封
二、帧
数据链路层为网络层提供可靠的数据传输,传输单位为帧。
1. 概述
帧格式:指根据不同协议规定的帧的格式。通常由“帧头+数据信息”两部分组成。帧格式主要有以太网帧格式、数据帧格式、802.3帧格式(IEEE820.3)、MAC帧格式(802.11)。
MAC地址:物理地址,全球唯一,长度48位,6字节;
类型:识别上层协议为上层协议提供服务,类型有,0x0800代表IP协议、0x0806代表ARP协议;
MTU:最大传输单元(Maximum Transmission Unit)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小,最大为1500字节
2. 交换机(Switch)
1. 概述
为接入交换机的任意两个网络节点提供独享的电信号通路,把要传输的信息送到符合要求的相应路由上。
2. 交换机的工作原理
AA第一次向DD发送数据帧:
- AA通过F0/1端口传入交换机switch01,交换机第一次收到AA发来的数据包,学习并建立MAC地址表,得知AA的目标MAC为DD,然后在MAC地址表中查询是否存在DD的地址,结果没有,交换机就向每个网络节点广播转发,广播到BB是无效的,只能广播转发到下一个交换机switch02;
- 交换机switch02收到以后,首先会学习并建立自己的MAC地址表,并在地址表查找是否存在DD的地址,发现没有DD,然后广播转发寻找DD,最后通过F0/1端口找到DD。
DD第一次向AA发送数据帧:
- DD通过F0/1端口传入交换机switch02,交换机第一次收到DD发来的数据包,学习并建立MAC地址表,得知DD的目标MAC为AA,然后在MAC地址表中查询是否存在AA的地址,结果发现存在,交换机就向直接单播到F0/2端口;
- 交换机switch01收到以后,首先会学习并建立自己的MAC地址表,并在地址表查找是否存在AA的地址,发现存在AA,然后单播转发找到AA。
注意:
- 交换机收到一个数据帧后,首先学习帧中的源MAC地址形成MAC地址表;
- MAC地址表老化时间默认为300秒。从一个地址记录加入地址表以后开始计时,如果在老化时间内各端口未收到源地址为该MAC地址的帧,那么,这些地址将从动态转发地址表(由源MAC地址、目的MAC地址和它们相对应的交换机的端口号)中被删除。静态MAC地址表不受地址老化时间影响。
3. 交换机的端口
E:10MB
F:100MB
G:1000MB
Te:10000MB
F0/1:0为模块号,1为接口号。
端口状态:up/down
down的三种可能:1)人工down掉;2)速率不匹配;3)双工模式不匹配。
单工模式:只能单向通信(如收音机、BB机);
半双工模式:可以双向通信,但是不能同时进行通信;
全双工模式:可以同时进行双向通信。
4. 交换机基本工作模式
第一次网络配设备,需要console线。
- 用户模式
Switch>
可以查看交换机的基本信息,不能做任何修改配置。 - 特权模式
Switch>enable
Switch#
可以查看所有配置,不能修改配置,但可以做测试、保存、初始化等操作。 - 全局配置模式
Switch#configure terminal
Switch(config)#
默认不能查看配置,可以修改配置,且全局生效。 - 接口配置模式
Switch(config)#interface fastEthernet 接口号
Switch(config-if)#
默认不能查看配置,可以修改配置,且对该端口生效。 - console口/线/控制台模式
Switch(config)#line console console号
Switch(config-line)#
默认不能查看配置,可以修改配置,且对console口生效。
5. Cisco系统中交换机基本命令
所有命令都可以支持命令缩写执行,Tab键可以补全命令。
Switch>首写字母? 提示以该字母开头的所有命令
Switch>exit 退出一级
Switch>end 直接退到特权模式
Switch>en 进入特权模式
Switch(config-if)#shutdown 关闭接口
Switch(config-if)#no shutdown 开启接口
Switch(config)#hostname 交换机名 修改交换机名
Switch(config)#enable password 密码 设置特权密码(明文)
Switch(config)#enable secret 密码 设置加密密码
Switch(config-line)#password 密码 设置用户密码
Switch(config-line)#login
Switch(config)#show mac-address-table 查看mac地址
Switch(config)#show ip interface brief 查看端口状态列表
删除某配置
no hostname 删除用户名配置
no password 删除密码配置
注意:删除配置的参数如果唯一可以不需要加参数(会报错)
- 注意:
我们发现有些命令需要进入特权模式才能使用,在任意模式下使用do 加上其他命令也可以使用!
6. running-config&startup-config
交换机重新开机会导致以前的配置文件全部失效(reload)。
交换机开机过程:先去内存中查找startup-config文件是否存在,如果不存在,则创建新的running-config,如果存在,则复制到内存中并改名为running-config。
保存配置:
Switch#copy running-config startup-config
或
write
查看 running-config / startup-config文件:
show running-config
show startup-config
清空初始化配置:
erase startup-config
7. 三层端口
为三层端口配IP
Router(config-line)#ip add IP地址 网关
Router(config-line)#no shutdown
开启虚拟终端,远程控制
Router(config)#line vty 0 4
开启ssh或telnet端口或全部开启或全部关闭
Router(config-line)#transport input ? 查看命令
Router(config-line)#transport input ssh/telnet/all/none
正确开启ssh端口
Router(config)#ip domain-name www.chen.com 设置一个域名
Router(config)#crypto key generate rsa 生成rsa算法的密钥
连接ssh端口:
PC>ssh -l username 目标ip
8. 为交换机配置管理ip
conf t
int vlan 1
ip add 10.1.1.254 255.255.255.0
no shut
9. 为交换机配置默认ip
跨网段管理交换机
conf t
ip default-gateway ip地址
三、IP包头
位于网络层
IP数据包长度可变(20字节–60字节)。
- 版本(Version):长度4比特。表示IP的版本号:IPv4(0100)、IPv6(0110);
- IP包头长度(Header Length):长度4比特。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即
本区域值 = IP头部长度(单位为bit)/ (8*4)
,因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。 - 服务类型(Type of Service):长度8比特。按位被如下定义:PPP DTRC0(3bit表示优先权,4bit表示服务类型(D 时延、T 吞吐量、R 可靠性、M 传输成本),1bit未用位置为0);
- IP包总长(Total Length):长度16比特。 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度为16个1=65535bytes。
- 标识符(Identifier):长度16比特。该字段和标记(Flags)和段偏移量(Fragment Offset)字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。
- 标志(Flags):长度3比特。该字段第一位不使用。第二位是DF(Don’t Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,1表示后面还有分片,0表示最后一片报文。
- 段偏移量(Fragment Offset):长度13比特。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。(1500字节分割)
- 生存时间(TTL):长度8比特。当IP包进行传送时,先会对该字段赋予某个特定的值。最大为8个1即255,当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。
路由追踪:
这个字段可以 防止IP报文在网络中循环无限传输,占用带宽等问题。
- 协议号(Protocol):长度8比特。标识了上层所使用的协议。
常用的协议号:
1 ICMP
6 TCP
17 UDP - 首部校验和(Header Checksum):用来使接收端检验收到的报文是否正确,只对IP首部计算校验和不包含后面的数据字段。
原因是IP的上层协议比如ICMP、IGMP、TCP、UDP协议的各自首部中均含有同时覆盖首部和数据的校验和。 - 可选项(Options):这是一个可变长的字段。该字段属于可选项,主要用于测试,由起源设备根据需要改写。
四、路由
1. 概述
跨越从源主机到目标主机的一个互联网来转发数据包的过程,也就是路由器为IP包选择路径的过程。
2. 路由原理(一)
路由器为数据包选择路径的唯一依据是路由表。
在路由表中可以查到需要的IP地址,就转发;
没有查到就返回错误,需要手动配置路由表,下一跳IP地址。
例如下面的拓扑图中,一共有7个网段,从10网段发送一个数据包到70网段:
C(connected):表示直连地址,直接与路由器相连的网络;
S(static):表示静态路由,是指手动设置的静态路由项;
S*:表示默认静态路由。
- 先在路由表中查找,只有两个直连地址;
- 需要手动配置静态路由项,下一跳IP地址(和当前路由器连接的另一台路由器的接口的IP地址)为20.1.1.2。
默认静态路由:
3. 路由原理(二)
主机AA-AA想向CC-CC发送数据
- 主机AA-AA,发送一个数据帧:
____ AA-AA 10.0.0.1 40.0.0.1 (目标MAC地址 源MAC地址 源IP 目标IP)
,目标MAC地址未知; - 主机AA-AA发送ARP广播报文,路由器回应,此时在主机AA-AA上生成ARP缓存表:
10.1.1.254 AA-11
- 将获得的MAC地址填入数据帧中进行发送:
AA-11 AA-AA 10.0.0.1 40.0.0.1
; - 发送到路由器后,路由器首先检查目标MAC地址与自己端口MAC地址是否匹配,如果匹配则解封装,将IP包送到路由器内部;
- 路由器检查IP包头的目标IP地址,查看路由表,如果匹配成功,将IP包路由到出接口,如果没有则丢弃并向源IP反馈错误信息;
- 封装帧:将帧数据的目标MAC地址变为下一跳IP地址,源MAC地址变为路由出口MAC地址即:
BB-11 AA-12 10.1.1.1 40.1.1.1
; - 再继续路由到下一个路由器,路由器重复4、5、6操作;
- 直到找到目标主机,解析数据包,完成数据传输。
五、ARP协议
1. 概述
地址解析协议,即ARP(Address Resolution Protocol),位于网络层,是将IP地址解析为MAC地址的一个协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
2. 广播&广播域
- 广播:将广播地址作为目的地址的数据帧
- 广播域:网络中能接收同一广播所有节点的集合
MAC广播地址:FF-FF-FF-FF-FF-FF
IP广播地址:255.255.255.255
3. IP解析为MAC地址过程
- PC1发送数据给PC2,先看ARP缓存中有没有PC2的MAC地址;
- 若没有,则PC1发送ARP请求(广播);
- 所有主机收到ARP请求消息
- PC2回复应答(单播),其他主机丢弃
- PC1将PC2的MAC地址保存到ARP缓存中,发送数据
4. windows的arp命令
arp -a 查看arp缓存表
arp -d 清除arp缓存
arp -s arp绑定
5. ARP攻击&欺骗
无论是ARP攻击还是ARP欺骗都是通过发送伪造ARP报文(广播或单播)来实现的。ARP协议没有验证机制!
5.1 ARP攻击
虚假的ARP报文的MAC地址是伪造的不存在的,arp攻击得到主要目的是使网络无法正常通信/断网。
5.2 ARP欺骗
虚假的ARP报文的MAC地址是攻击者自身的MAC地址,ARP欺骗并不是使网络无法正常通信,目的是实现监听、篡改、窃取、通过转发流量可以对流量进行控制和查看,从而得到机密信息。
ARP欺骗网关:
ARP欺骗主机:
6. ARP防御
- 静态ARP绑定:手工绑定,建立静态表
ARP -S IP MAC
; - ARP防火墙:ARP防火墙通过在系统内核层拦截虚假ARP数据包以及主动通告网关本机正确的MAC地址,可以保障数据流向正确,不经过第三者。自动绑定静态ARP,主动防御。
- 硬件级ARP防御:交换机支持动态的ARP绑定(配合DHCP服务器)
六、ICMP协议
Internet控制报文协议,面向无连接的协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
典型实例:ping 和 tracert命令,ping 用来测试网络可达性,tracert 用来显示到达目的主机的路径,它俩都利用 ICMP 协议来实现网络功能。
ICMP协议封装格式:
ICMP头:ICMP类型+代码
ICMP类型字段
0 ping应答
8 ping请求
3 目标主机不可达
11 TTL超时
七、NAT协议
1. 概述
- IP地址分为公网IP和私网IP
公网IP可以直接访问互联网,公网IP世界只有一个,私网IP可以重复。公网IP只能在公网上使用,公网上不允许出现私有IP;私网IP只能在内网中使用。
私有网络三个IP地址块:
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
- NAT(Network Address Translation,网络地址转换):用来将私网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信,一般在路由器或防火墙上配置。
2. 三种实现方式
1. 静态转换 Static
是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,某个私有IP地址只转换为某个公有IP地址。
应用场景:外部网络对内部网络中某些特定设备(如服务器)的访问。
- 需定义内外网接口
内网到外网:转换源IP;外网到内网:转换目标IP - PC(192.168.1.1)访问外网服务器
发送IP包(192.168.1.1 200.1.1.1(源IP 目标IP)),根据内网到外网要转换源IP;查询NAT转换表,将源IP转换为100.1.1.1,再进行外网路由,直到服务器;
服务器发送响应包(200.1.1.1 100.1.1.1(源IP 目标IP)),根据外网到内网要转换目标IP;查询NAT转换表,将目标IP转换为192.168.1.1,再到内网,完成响应。
我们发现静态NAT转化表只有PC(192.168.1.1),没有其他的PC,当其他PC发送数据包出去后,不能收到响应!
2. 动态转换 Dynamic
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的、随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址,动态转换需要一个动态映射关系即内部地址池和外部地址池之间的映射。
当有内网需要访问外网时,先匹配内部地址池的IP地址,如果内部地址池中有该IP,则使用内部池和外部池地址构成NAT转换表,假设外部地址池只有一个可供使用的地址时,当有人正在使用时,其他人还是不能访问外网,一旦第一个人使用结束,24小时后,外部地址池会重新得到10.1.1.1,供其他人使用。
3. 端口多路复用 PAT
在动态转换上加上复用(OverLoad),指改变外出数据包的源端口并进行端口转换,虽然内部网络的所有主机均共享一个合法外部IP地址实现对Internet的访问,但可以根据生成的不同端口号作为响应包依据。
例如:
PC发送:192.168.1.1 200.1.1.1 3000 80
(源IP 目标IP 源端口号 目标端口号)
根据端口多路复用NAT转换为:100.1.1.1 200.1.1.1 1 80
(源IP 目标IP 源端口号 目标端口号)
回复数据包:根据随机生成的端口号响应。
3. NAT命令
定义内网端口:
int f0/0
ip nat inside
exit
定义外网端口:
int f0/1
ip nat outside
exit
配置PAT:
# 定义内部地址池:允许192.168网段的IP
acc 1 permit 192.168.0.0 0.0.255.255
# PAT动态映射
conf t
ip nat inside source list 1 int f0/1 overload
配置静态端口转换:
# 注意协议和端口号对应(tcp-->80)
conf t
ip nat inside source static tcp 192.168.1.1 80 100.1.1.1 80
八、动态路由协议
1. 动态路由
不需要手工写路由,路由器之间互相学习!
根据拓扑变化,更新路由信息:
2. 动态路由协议
路由器之间用来交换信息的语言。
度量值:跳数、带宽、负载、时延、可靠性、成本。
从R1到R3
根据跳数,选择R1和R3直连路由路线;
根据带宽,选择经过R2路由路线。
3. 分类
- 距离矢量路由协议
依据从源网络到目标网络所经过的路由器的个数选择路由:RIP、IGRP - 链路状态路由协议
综合考虑从源网络到目标网络的各条路径额的情况选择路由:OSPF、IS-IS