1、OSI模型
OSI ——开放式系统互联参考模型
ISO——国际标准化组织
OSI七层模型:
应用层 ——> 人机交互;抽象语言—>编码
表示层——> 数据格式、压缩、加密、呈现格式;编码—>二进制
会话层——> 建立会话;应用程序内部的区分地址(无标准格式)
上三层—产生数据
下四层—传递数据
传输层——> 端到端传输、可靠传输
网络层——> 路由,寻找最佳路径
数据链路层——> 建立链路转发、MAC寻址
物理层 ——> 二进制传输 (脉冲信号)、接口、电器、电压、线路
2、TCP/IP模型
四/五层模型 —— IETF 组织——事实上的模型,现有协议后有模型
上三层统一为应用层——数据报文
传输层——数据段
网络层——数据包
数据链路层——数据帧
物理层——比特流
3、IP的编址
网络位 主机位
1)IANA
主类
A 单播 0XXXXXXX /8 1-126 10.0.0.0/8 127.0.0.0/8(回环地址)
B 单播 10XXXXXX /16 128-191 172.16.0.0-172.31.0.0/16
C 单播 110XXXXX /24 192-223 192.168.0.0-192.168.255.0/24
D 组播 1110XXXX 224-239
E 科研保留
2)无类/可变长子网
引入了掩码,规则:1表示网络位,0表示主机位
192.168.1.0 255.255.255.0
例题1:
10.1.1.0/24 划出10个子网
思路:借位,把主机位借为网络位
借位:2^4=16>10 ;网络位:24+4=28
XXXX
只要10个子网:
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000 0001——>0000 27 10.1.1.0/27 255.255.255.224
0010 0011——>0010 27 10.1.1.32/27
0100 0101——>0100 27 10.1.1.64/27
0110 0111——>0110 27 10.1.1.96/27
1000 1001——>1000 27 10.1.1.128/27
1010 1011——>1010 27 10.1.1.160/27
1100 10.1.1.192/28 255.255.255.240
1101 10.1.1.208/28
1110 10.1.1.224/28
1111 10.1.1.240/28
例题2:
10.1.1.210/28 10.1.1.226/28 是否在一个网段?
前24位都相同,所以只看第25~28位
10.1.1.210/28——128+64+16<210<128+64+32——>网段为10.1.1.1101 0000
10.1.1.226/28——128+64+32<226<128+64+32+16——>网段为10.1.1.1110 0000
所以,不在同一网段
例题3:
10.1.1.130/28 网段是什么,段广播是什么?
130=128+2
网段是10.1.1.128——10.1.1.1000 0000
段广播是10.1.1.143——10.1.1.1000 1111
4、TCP
1) TCP三次握手详解
C ——> syn seq=10000 S
C seq=200 syn seq=10001 ack<—— S 半开队列 计时器
C ——> ack seq = 201 S 全连队列
三次握手(Three-way Handshake)是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。
进行三次握手:
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。
首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。
在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。
确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。
发送第一个SYN的一端将执行主动打开(active open),接收这个SYN并发回下一个SYN的另一端执行被动打开(passive open)。
2)为什么需要三次握手,两次不行吗?
第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。
3)syn
syn半开攻击,发送大量syn包不回确认ack,导致半开队列被占满,服务器无法提供连接服务
防御:syn_cookie 技术 记录syn半开连接者的IP,下次连接时不会将其放入半开队列(等于丢弃)
分布式的半开攻击用以上技术不能防御,只能依赖于僵尸网络库,或者代理技术,流量清洗技术来防御。
4)TCP四次断开详解
标准
C ——>FIN seq=3000 S
C seq=3001 ack <—— S
C seq=4000 FIN <—— S
C ——>ack seq=4001 S
可以三次 把fin ack一次发送;也可以俩次,一般是服务为了节约资源
第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。
即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。
收到一个FIN只意味着在这一方向上没有数据流动。客户端执行主动关闭并进入TIME_WAIT是正常的,服务端通常执行被动关闭,不会进入TIME_WAIT状态。
5)为什么需要四次断开?
因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。
syn ack rst fin
窗口
拥塞控制
拥塞避免
慢启动
快重传
5、UDP
1)UDP概述
UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的传输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
(1)UDP头部(标准长度8字节)
UDP数据包每次能够传输的最大长度 = MTU(1500B) - IP头(20B) -UDP头(8B)= 1472Bytes。
2)UDP协议的特点
每个分组都携带完整的目的地址;
发送数据之前不需要建立链接;
不对数据包的顺序进行检查,不能保证分组的先后顺序;
不进行分组出错的恢复和重传;
不保证数据传输的可靠性。
6、OICQ
协议说明:
协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成
发送者和接收者是系统内的程序种类,OICQ服务器0x01,传真服务器0x02,WEB服务器0x03,打印服务器是
0x04,聊天服务器是0x05,OICQ用户是0x0A。
OICQ用户到OICQ服务器的通讯协议 引导符 (0x81+0x0A+0x01)
报文类型 报文内容 报文说明
7、DHCP 动态主机配置协议
1)DHCP工作原理
2)DHCP租期更新
3)DHCP重绑定
4)IP地址释放
5)DHCP配置
1. DHCP 全局配置
dhcp enable //开启DHCP服务
ip pool K //创建地址池
gateway-list 10.1.1.1
network 10.1.1.0 mask 255.255.255.0
dns-list 8.8.8.8
domain-name huawei.com
interface GigabitEthernet0/0/0
ip address 10.1.1.1 255.255.255.0
dhcp select global //接口关联全局配置
2. DHCP接口配置
dhcp enable //开启DHCP服务
interface GigabitEthernet0/0/1
ip address 20.1.1.1 255.255.255.0
dhcp select interface //接口启用当前接口ip的网段及网关为基础的DHCP
dhcp server dns-list 8.8.8.8
dhcp server domain-name huawei.com
3. DHCP根据mac地址分配固定IP
ip pool A
gateway-list 100.1.1.1
network 100.1.1.0 mask 255.255.255.0
static-bind ip-address 100.1.1.100 mac-address 5489-98c4-6891 //根据MAC分配IP
8、静态路由
路由来源
- 链路层自发现-直连 0
- 静态路由 60
- 动态路由
- IGP
- rip 100
- ospf 10 150
- eigrp
- isis 15
- EGP
- BGP 255
- IGP
ip route-static 目标网段 掩码 下一跳/出接口
ip route-static 10.1.1.0 24 20.1.1.1
ip route-static 10.1.1.0 24 30.1.1.1 pre 30
1)基础配置
[Huawei]ip route-static 1.1.1.0 24 12.1.1.2
[Huawei]ip route-static 2.2.2.0 24 GigabitEthernet 0/0/1
目标网络号 下一跳或出接口
下一跳:流量从本地发出后下一个进入的路由器接口ip地址。
出接口:流量从本地路由器发出的接口。
建议:在MA网络中建议下一跳写法;在点到点网络中建议出接口写法
MA多路访问网络—在一个网段中,节点的数量不限制
点到点—在一个网段中,节点数量只能为两个
2)汇总—当到达部分连续子网时,若基于相同的下一跳访问;可以将这些目标网络进行汇总计算后;仅配置到达汇总网段的路由即可—减少路由表条目的数量。
3)路由黑洞 – 汇总地址中包含了网络中当下不存在的地址网段时;当中早该丢弃的流量,还需要在网络中传播一段时间;才能被丢弃,浪费了链路资源;–尽量合理规划ip地址,精确的汇总计算。
4)缺省路由 —一条不限定目标的路由;查表时,路由器在查询完本地所有直连、静态、动态路由后,若依然没有可达路径才使用该条目。
5)空接口防环路由 — 当路由器黑洞与缺省路由相遇后,必然出现环路。
[R1]ip route-static 1.1.0.0 22 NULL 0
6)浮动静态路由—通过修改默认的优先级,起到静态路由备份的效果。
[r2]ip route-static 1.1.0.0 22 23.1.1.1 preference 61
默认静态路由优先级为60;越小越好
7)负载均衡 –当路由器访问同一个目标,拥有多条开销相似路径时;可以让设备将流量拆分后延多条路径同时传输,起到带宽叠加的作用。
9、作业
1)要求
2)解题
(1)拓扑规划
(2)IP地址规划
10.1.1.0/24
64 X 4 = 256
XX
00 10.1.1.0/26
01 10.1.1.64/26 01XXXXYY
01XXXXYY ——>01000000 01000100 01001000 01001100 01010000
10.1.1.64/30 10.1.1.68/30 10.1.1.72/30 10.1.1.76/30 10.1.1.80/30
10 10.1.1.128/26——>32个 10.1.1.128/27、PC4 ; 10.1.1.160/27、PC5
11 10.1.1.192/26 pC3所在网段
(3)配置DHCP动态路由
在R4上:
[r4-GigabitEthernet0/0/0]dhcp select interface
在R5上:
[r5-GigabitEthernet4/0/0]dhcp select interface
[r5]ip pool pc4
[r5-ip-pool-pc4]network 10.1.1.128 mask 27
[r5-ip-pool-pc4]gateway-list 10.1.1.158
[r5-ip-pool-pc4]static-bind ip-address 10.1.1.133 mac-address 5489-983D-52CA
(4)配置静态路由
pc3——>pc4:
[r4]ip route-static 0.0.0.0 0 10.1.1.66
[r3]ip route-static 10.1.1.128 27 10.1.1.69
[r1]ip route-static 10.1.1.128 27 10.1.1.81
pc3——>pc5:
[r3]ip route-static 10.1.1.160 27 10.1.1.74
[r2]ip route-static 10.1.1.160 27 10.1.1.78
pc4、pc5——>pc3:
[r5]ip route-static 10.1.1.192 26 10.1.1.82
[r1]ip route-static 10.1.1.192 26 10.1.1.70
[r3]ip route-static 10.1.1.192 26 10.1.1.65
(5)保证pc3与pc4、pc5通信具有冗余性
[r5]ip route-static 10.1.1.192 26 10.1.1.77 preference 70
[r2]ip route-static 10.1.1.192 26 10.1.1.73