Web安全学习笔记 网络与协议上
Web安全学习笔记 网络与协议上
繁枝插云欣 ——ICML8
- 网络基础
- UDP协议
- TCP协议
- 路由算法
- 路由算法
2.1. 网络基础
计算机通信网的组成 
计算机网络由通信子网和资源子网组成
其中通信子网负责数据的无差错和有序传递
其处理功能包括
差错控制、流量控制、路由选择、网络互连等
其中资源子网是计算机通信的本地系统环境
包括主机、终端和应用程序等
资源子网的主要功能是
用户资源配置、数据的处理和管理
软件和硬件共享以及负载均衡等
总的来说
计算机通信网就是一个由通信子网承载的
传输和共享资源子网的各类信息的系统
通讯协议
为了完成计算机之间有序的信息交换
提出了通信协议的概念
其定义是相互通信的双方(或多方)
对如何进行信息交换所必须遵守的一整套规则
协议涉及到三个要素,分别为:
语法:
语法是用户数据与控制信息的结构与格式
以及数据出现顺序的意义
语义:
用于解释比特流的每一部分的意义
时序:
事件实现顺序的详细说明
OSI七层模型 
简介
OSI(Open System Interconnection)
共分为
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层七层
其具体的功能如下:
1.物理层
提供建立、维护和释放物理链路所需的机械
电气功能和规程等特性
通过传输介质进行数据流(比特流)的物理传输
故障监测和物理层管理
从数据链路层接收帧
将比特流转换成底层物理介质上的信号
2.数据链路层
在物理链路的两端之间传输数据
在网络层实体间提供数据传输功能和控制
提供数据的流量控制
检测和纠正物理链路产生的差错
格式化的消息称为帧
3.网络层
负责端到端的数据的路由或交换
为透明地传输数据建立连接
寻址并解决与
数据在异构网络间传输相关的所有问题
使用上面的传输层和下面的数据链路层的功能
格式化的消息称为分组
4.传输层
提供无差错的数据传输
接收来自会话层的数据
如果需要
将数据分割成更小的分组
向网络层传送分组并确保分组完整
和正确到达它们的目的地
在系统之间提供可靠的透明的数据传输
提供端到端的错误恢复和流量控制
5.会话层
提供节点之间通信过程的协调
负责执行会话规则
(如:连接是否允许半双工或全双工通信)
同步数据流以及当故障发生时重新建立连接
使用上面的表示层和下面的传输层的功能
6.表示层
提供数据格式、变换和编码转换
涉及正在传输数据的语法和语义
将消息以合适电子传输的格式编码
执行该层的数据压缩和加密
从应用层接收消息,转换格式
并传送到会话层
该层常合并在应用层中
7.应用层
包括各种协议
它们定义了具体的面向用户的应用:
如电子邮件、文件传输等
8.总结
低三层模型属于通信子网,涉及为用户间提供透明连接,操作主要以每条链路( hop-by-hop)为基础,在节点间的各条数据链路上进行通信。由网络层来控制各条链路上的通信,但要依赖于其他节点的协调操作。
高三层属于资源子网,主要涉及保证信息以正确可理解形式传送。
传输层是高三层和低三层之间的接口,它是第一个端到端的层次,保证透明的端到端连接,满足用户的服务质量(QoS)要求,并向高三层提供合适的信息形式。
2.2. UDP协议
主要特点
协议开销小、效率高
UDP是无连接的,即发送数据之前不需要建立连接
UDP使用尽最大努力交付,即不保证可靠交付
UDP没有拥塞控制
UDP支持一对一、一对多、多对一和多对多交互通信
UDP的首部开销小,只有8个字节
2.3. TCP协议
简介 
TCP
(Transmission Control Protocol)
(传输控制协议)
是一种面向连接的、可靠的
基于字节流的传输层通信协议
由RFC 793定义
三次握手
三次握手
(Three-Way Handshake)
是指建立一个TCP连接时
需要客户端和服务端总共发送3个包
以确认连接的建立
第一次握手客户端将标志位 SYN 置为1
随机产生一个值 seq=s
并将该数据包发送给服务端
客户端进入 SYN_SENT 状态
等待服务端确认
第二次握手服务端收到数据包后
由标志位 SYN=1 知道客户端请求建立连接
服务端将标志位 SYN 和 ACK 都置为1
ack=s+1,随机产生一个值 seq=k
并将该数据包发送给客户端以确认连接请求
服务端进入 SYN_RCVD 状态
第三次握手客户端收到确认后
检查ack值是否为s+1,ACK标志位是否为1
如果正确则将标志位 ACK 置为1
ack=k+1,并将该数据包发送给服务端
服务端检查ack值是否为k+1
ACK标志位是否为1
如果正确则连接建立成功
客户端和服务端进入 ESTABLISHED 状态
完成三次握手
四次挥手
四次挥手(Four-Way Wavehand)指
断开一个TCP连接时
需要客户端和服务端总共发送4个包
以确认连接的断开
第一次挥手客户端发送一个 FIN
用来关闭客户端到服务端的数据传送
客户端进入 FIN_WAIT_1 状态
第二次挥手服务端收到 FIN 后
发送一个 ACK 给客户端
确认序号为收到序号+1
服务端进入 CLOSE_WAIT 状态
第三次挥手服务端发送一个 FIN
用来关闭服务端到客户端的数据传送
服务端进入 LAST_ACK 状态。
第四次挥手客户端收到 FIN 后
客户端进入 TIME_WAIT 状态
接着发送一个 ACK 给服务端
确认序号为收到序号+1
服务端进入 CLOSED 状态
完成四次挥手
拥塞控制 
拥塞是指网络中报文数量过多
使得服务端来不及处理
以致引起这部分乃至整个网络性能下降的现象
严重时甚至会导致网络通信业务
陷入停顿即出现死锁现象
TCP采用拥塞控制算法来减少
或者避免拥塞现象的发生
TCP的拥塞算法有过多种实现
包括Tahoe、Reno、NewReno、Vegas
Hybla、BIC 、CUBIC、SACK
Westwood、PRR、BBR等
参考链接
RFC 793 TRANSMISSION CONTROL PROTOCOL
https://datatracker.ietf.org/doc/html/rfc793
RFC 2001 TCP Slow Start, Congestion Avoidance, Fast Retransmi t, and Fast Recovery Algorithms
https://datatracker.ietf.org/doc/html/rfc2001
RFC 3390 Increasing TCP's Initial Window
https://datatracker.ietf.org/doc/html/rfc3390
RFC 5681 TCP Congestion Control
https://datatracker.ietf.org/doc/html/rfc5681
TCP congestion control wiki
https://en.wikipedia.org/wiki/TCP_congestion_control
2.4. DHCP协议
简介 
动态主机配置协议
(Dynamic Host Configuration Protocol,DHCP)
是一个用于局域网的网络协议
位于OSI模型的应用层
使用UDP协议工作
主要用于自动分配IP地址给用户
方便管理员进行统一管理
DHCP服务器端使用67/udp,客户端使用68/udp。DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。客户端在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。 
DCHP 报文格式
DCHP 报文格式参考链接
DHCP Wiki
https://www.plesk.com/wiki/dhcp/
2.5. 路由算法
简介
路由算法是用于
找到一条从源路由器到
目的路由器的最佳路径的算法
存在着多种路由算法
每种算法对网络和路由器资源的影响都不同
由于路由算法使用多种度量标准
(metric)
所以不同路由算法的最佳路径选择也有所不同
路由选择算法的功能
源/宿对之间的路径选择
以及选定路由之后将报文传送到它们的目的地
路由选择算法的要求:
正确性:确保分组从源节点传送到目的节点
简单性:实现方便,软硬件开销小
自适应性:也称健壮性
算法能够适应业务量和网络拓扑的变化
稳定性:能长时间无故障运行
公平性:每个节点都有机会传送信息
最优性:尽量选取好的路由
自治系统AS(Autonomous System) 
经典定义:
由一个组织管理的一整套路由器和网络
使用一种AS内部的路由选择协议
和共同的度量以确定分组在该 AS 内的路由
使用一种 AS之间的路由选择协议
用以确定分组在AS之间的路由
尽管一个 AS使用了多种内部路由选择协议和度量
但对其他 AS表现出的是一个单一的
和一致的路由选择策略
两大类路由选择协议
因特网的中
路由协议可以分为
内部网关协议 IGP(Interior Gateway Protocol)
外部网关协议 EGP(External Gateway Protocol)
IGP是在一个AS内部使用的路由选择协议
如RIP和OSPF协议
是域内路由选择 (interdomain routing)
当源主机和目的主机处在不同的AS中
在数据报到达AS的边界时
使用外部网关协议 EGP 将路由选择信息
传递到另一个自治系统中
如BGP-4
是域间路由选择 (intradomain routing)
RIP
路由信息协议
(Routing Information Protocol, RIP)
是一种基于距离向量的路由选择协议
RIP 协议要求网络中的每一个路由器
都要维护从它自己到自治系统内
其他每一个目的网络的距离和下一跳路由器地址
OSPF
开放最短路径优先
(Open Shortest Path First,OSPF)
这个算法名为“最短路径优先”是因为
使用了 Dijkstra 提出的最短路径算法SPF
只是一个协议的名字
它并不表示其他的路由选择协议
不是“最短路径优先”