中科大郑烇《计算机网络》视频课程笔记
- 总括
- 1.1Internet
- 1.2网络边缘
- 1.3网络核心
- 1.4接入网和物理介质
- 1.5 Internet结构和ISP
- 1.6 分组和延时
- 1.7 协议层次和服务模型
- 2.1 应用层原理
- 2.2 Web和HTTP
- 2.3 FTP
- 2.4 Email
- 2.5 DNS
- 2.6 P2P应用
- 2.7 CDN
- 2.8 TCP Socket编程
- 2.9 UDP Socket编程
- 3.1 概述和传输层服务
- 3.2 多路复用和解复用
- 3.4 可靠数据传输(RDT)的原理
- 4.1 网络层:数据平面
- 4.2 路由器组成
- 4.3 IP协议
- 5.2路由选择算法
- 6.1 数据链路层
- 6.2 多点访问协议(MAC)
- 6.4 LANS
- 6.6 数据中心网络
- 8.1 加密原理
- 8.2 报文完整性
- 8.3 密钥分发和证书
- 8.4 防火墙
- 8.5 IDS:
- 8.6 安全威胁
总括
-
协议是保证各设备间可以互操作的统一标准
-
应用层协议:直接提供给应用进程使用的协议,DNS、HTTP
-
传输层协议:进程到进程之间使用,TCP(面向可靠连接),UDP(面向不可靠连接)
-
网络层协议:主机到主机(E2E),分为传统协议(IP和路由协议,路由器将IP报文分组,然后查路由表转发)和SDN(数据定义网络,分为数据平面(交换机)和控制平面(网络操作系统))
-
数据链路层协议:点到点(P2P)
-
物理层协议:数字信号转化为物理信号
1.1Internet
- 分布式应用和为其提供通信的基础设施的集合,是网络的网络(通过路由器将网络连接到一起)
- 由节点和边组成,节点包括主机节点和数据交换节点(交换机、路由器和负载均衡设备),边包括接入网、骨干链路网和协议
1.2网络边缘
-
网络由边缘、核心和接入三部分组成
-
客户/服务器模式、p2p模式(节点既请求服务,也提供服务)
-
TCP:面向无连接,可靠,HTTP、Web、Telnet、SMTP
-
UDP:流媒体、远程会议、DNS
1.3网络核心
- 路由器的网状网络
- 数据传输方式:电路交换和分组交换
1.3.1电路交换
- 建立连接——数据传输——释放连接
- 如打电话,需要找到一条A到B的路径,并独占该路径
- 速度快、实时、资源利用率低、建立连接时间长
1.3.2分组交换
-
分组交换分为虚电路和数据包两种方式
-
将数据包分组成更小的数据包进行传输,采用存储转发的机制,不用建立专用通信线路
-
如A将数据包P转发给E,拆分为p1,p2,p3,按照路由选择算法,A将p1丢给B路由器,最终汇总到E
-
存在延时,可能造成通信阻塞,存在重复无用数据,可能丢包,但资源利用率高
-
网络核心的关键功能:路由和转发
1.4接入网和物理介质
- 住宅接入:modem调制解调,利用电话线传播数据,不能同时上网和打电话(DSL方式通过区分电信号和上网信号的频率可以同时传播)
- 企业接入网:局域网,Ethernet,以太网
- 无线接入网络:WLANs和广域无线接入
- 物理介质:双绞线、同轴电缆、光纤
1.5 Internet结构和ISP
- 互联网另一种划分方式:由多个ISPs网络组成(ISP是子网络,比如学校教育网)
- ISP运营商提供网络,ICP运营商提供服务,为了提高服务质量,IPC会选择部署数据中心,通过专网连接
- IXP是不同ISP的对等接入点
1.6 分组和延时
- 在路由器缓冲区的分组队列,分组到达链路的速率超过链路输出的能力,会产生延时
- Traceroute诊断程序,可以通过tracert命令测试延时,测试每一跳的往返延时(RTT),利用了ICMP报文(通过TTL定时)
- 分组到达时,如果缓冲区不够,则分组会被丢失
1.7 协议层次和服务模型
1.7.1服务
- 服务是底层向上层实体提供它们之间通信的能力,分为服务用户和服务提供者
- 原语是上层使用下层服务的形式,服务都是通过原语来进行交互的
- 服务访问点SAP,是上层使用下层服务的层间接口(地点),如邮箱、端口
- 分为面向连接和无连接的服务
1.7.2 协议
- 协议是对等层实体之间在相互通信的过程中,需要遵循的规则的集合
- 服务和协议的区别:服务是垂直的,协议是水平的
- 关系:本层协议的实现靠下层的服务实现,协议实现的目的是为上层提供更好的服务
- 本层为上层提供的服务包括下面所有层向上提供的服务以及本层间的协议
1.7.2 数据单元(DU)
- 上层交给下层的要传输的数据成为SDU(服务数据单元),穿过SAP时要加入上层的ICI(接口控制信息)
- 穿过SAP后,上层的SDU在头部加上本层用于控制的交换信息(ICI,本层的ICI可能来自于上层的ICI),合成PDU(协议数据单元),又作为下下层的SDU
- 当SDU很大时,需要将其拆分为小块的SDU,再加上ICI形成PDU,一对多
- 当SDU很小时,可以将若干个SDU组合为大的SDU,再加上ICI形成PDU,多对一
- 每一层的PDU称呼:应用层叫报文,传输层叫报文段,网络层叫分组(无连接模式下叫数据报),链路层叫帧,物理层叫位
1.7.3 Internet协议栈
从下到上:
-
物理层和链路层被封装在网卡中,实现数字信号转化和帧数据的拆分和恢复。
-
网络层提供的服务:以分组为单位,提供端到端的数据传输,功能是路由和转发,路由是全局的(如何找路),转发是局部的(从哪个端口进哪个出)
-
传输层提供的服务:在网络层提供的端到端数据传输基础上,对数据进行应用程序的区分;将网络层不可靠的服务转为可靠的服务。
-
应用层提供的服务:在传输层基础上,实现各种网络应用
1.7.4 ISO/OSI参考模型
- 相比TCP/IP协议栈,在应用层下加了表示层和会话层(从应用层细分出来的),分别实现表示转换和会话管理的功能
1.7.5 封装和解封装
-
源端做封装,目标端做解封装,路由器做三层的封装和解封装,交换机做两层的封装和解封装
-
传输层交给网络层后,数据头加上目标和源IP地址
-
网络层交给数据链路层后,数据头加上目标和源MAC地址
-
路由器是网络交换设备,每张网卡对应一个网络,工作在网络层;交换机工作在数据链路层
-
交换机负责连接网络设备(如交换机、路由器、防火墙、无线AP等)和终端设备(如计算机、服务器、摄像头、网络打印机等);路由器实现局域网与局域网的互联,局域网与Internet的互联;而防火墙作为一个安全网络设备,作用于内部网络与内部网络之间,或者内部网络与Internet之间。
2.1 应用层原理
2.1.1 客户-服务器模式
- 服务器运行在固定IP和知名端口
- 客户端可能是动态IP
2.1.2 对等模式(P2P)
- 在不同的会话里,节点扮演客户/服务器角色
2.1.3 进程通信
- 进程标识和寻址:IP、TCP or UDP、端口
- 传输层提供的服务(层间接口携带的信息):报文、发送方和接收方的IP+TCP/UDP端口
- Socket:应用层和传输层的层间接口,目的是减少层间接口携带的信息,方便管理;用个代号标示通信的双方或单方(即socket,类似与文件句柄)
- 如何实现应用:通过应用层协议定义报文格式和程序响应
2.1.4 TCP Socket
- TCP的套接字是4元组的一个具有本地意义的会话标示(整数)
- 4元组包括源IP/端口和目标IP/端口
- 通过socket告诉传输层报文段的端口号,告诉网络层数据包的IP值
- 同一个进程同一个端口可能具有不同的socket
2.1.5 UDP Socket
- 每个报文都是独立传输的,前后报文可能给不同的进程
- UDP socket包括本地IP和端口
- 发送报文时,需要包含数据本身,UDP Socket和目标IP/端口
2.1.6 应用层协议
- 定义了应用教程交换的报文类型、语法(报文中各个字段及描述)、语义(字段取值的含义)、进程对报文响应的规则
- 分为公开协议和私有协议
- 需要传输层提供的服务指标:数据丢失率、延迟、吞吐、安全性
2.1.7 安全TCP
- TCP和UDP都是明文传输的
- SSL在TCP上实现,提供加密的TCP连接,工作在应用层,采用SSL库
- 比如https,就是浏览器通过SSL传输数据
2.2 Web和HTTP
2.2.1Web应用
- Web应用是借助浏览器来运行的程序
- Web页:由互联网对象组成,含有一个基本的HTML文件,该文件又包含若干对象的引用链接
- 通过URL对对象进行引用:访问协议、用户名和口令、主机名、路径名、端口号
2.2.2 HTTP协议
- 超文本传输协议,是Web的应用层协议
- HTTP基于TCP连接建立套接字,在浏览器(HTTP客户端)与Web服务器(HTTP服务器)间交换HTTP报文
- HTTP是无状态的,服务器不维护任何客户信息
2.2.3 响应时间模型
- 往返时间RTT,HTTP的响应时间包括发起TCP连接的RTT、HTTP请求的RTT以及报文传输时间
- 非持久HTTP包括2个RTT(HTTP 1.0)
- 持久HTTP在发送响应后,保持TCP连接,只花费一个RTT (HTTP 1.1)
2.2.4 HTTP请求报文
- 包含请求行(GET、POST、HEAD)、首部行和实体
- 请求行包含对象URL
2.2.5 HTTP响应报文
- TCP报文间无边界,需要应用程序自己划分
- 包含状体行、首部行和数据
- 响应状态码:200OK、400错误代码、404无法找到
2.2.6 用户-服务器状态:cookies
- HTTP是无状态的,通过cookie维护客户端状态
- 第一次访问,服务器分配cookie值,并在服务器端保存,通过HTTP响应返回,在客户端保存,后续再次访问该服务器,HTTP请求里会包含该cookie
- cookie用处:用户验证、购物车、推荐、用户状态
2.2.7 Web缓存
- 不访问原始服务器,在代理服务器中访问缓存对象,降低响应时间
2.3 FTP
- 向远程主机(ftp服务器)上传或下载文件
- 控制连接(发送命令)与数据连接(传输文件)分开
- 使用TCP作为传输协议
2.4 Email
-
由用户代理、邮件服务器和简单邮件传输协议(SMTP)组成
-
邮件服务器之间使用SMTP传送报文,并维护报文队列
-
邮件访问协议:POP3和IMAP,用户代理从服务器访问邮件
2.5 DNS
- 通过查询DNS服务器,实现主机名和IP地址的转换
- 顶级域包括通用的和国家的,13个根服务器,域的划分是一颗倒着的树
- 域的域名:用于标示一个域,从树枝开始向上
- 主机的域名:标示域上的主机,从树叶开始向上
- 域与物理网络无关,一个域可能对应多个网络,反之亦然
- TLD是顶级域服务器
2.5.1 DNS记录
- 资源记录(RR)作用是维护域名和IP地址的映射关系,位于域名服务器的分布式数据库中
- RR的格式
2.5.2 DNS工作过程
- 设备上网的四个信息:主机IP、子网掩码、网关(出网往哪走,一个网络通向其他网络的IP地址,通常是路由器的IP)、local name server
- DNS工作过程:应用调用解析器,解析器按照DNS协议向Name Server发出查询报文(封装在UDP中),Name Server返回响应报文
- 名字解析过程:向local name server发出查询请求,如果查询名字在该区域内部或者有缓存,则直接返回,否则通过迭代或递归的方式向上级服务器查询
- DNS协议:查询和响应报文的格式相同,返回DNS记录
- 新增一个域:需要在上级域名服务器中插入两条RR记录:子域域名—子域DNS服务器名字,子域DNS名字—DNS IP地址
2.6 P2P应用
- BT(文件分发协议)的工作方式:通过搜索引擎下载torrent文件,文件中包括tracking server,跟踪哪些节点正在进行文件的上传下载,并返回peer列表,同该peer构成torrent,进行文件共享
2.7 CDN
- DASH:多媒体流化服务,将视频文件分割成多个块,可以加速访问,边下载边观看
- 内容加速服务,CDN运营商在互联网中部署很多缓存节点,ISP通过购买该服务,提前在缓存节点中部署访问资源,就近为用户提供服务,提高用户体验(比如观看视频)
2.8 TCP Socket编程
2.8.1 sockaddr_in结构体
- IP地址和port捆绑关系的数据结构
2.8.2 hostent结构体
- 域名和IP地址的数据结构
- 作为调用域名解析函数时的参数,返回后,将IP地址拷贝到sockaddr_in中
2.8.3 客户端编程
- clientSocket = socket();
- bind(clientSocket, fad) (隐式绑定,socket同本地sockaddr_in绑定)
- struct hostent * ptrh = gethostbyname(host);
- memcpy(&sad.sin_addr, ptrh->h_addr,ptrh->h_length)(将服务器IP拷贝到服务器sockaddr_in中)
- connect(clientSocket, &sad)(连接服务器,若连上,返回连接clienSocket)
- gets(str); write(clientSocket, str); read(clientSocket, str); close(clientSocket)
2.8.4 服务器编程
-
welcomeSocket = socket();
-
bind(welcomeSocket, sad);(绑定welcomeSocket和本地sockaddr_in)
-
listen(welcomeSocket, 10);(等待队列长度为10)
-
while{
connectionSocket = accept(welcomeSocket, &cad)(阻塞welcomeSocket,等待连接,返回对象cad)
read(connectionSocket, str)
write(connectionSocket, str)
close(connectionSocket)
}
-
如果是多进程socket,在connection建立后,fork子进程,在父进程中关闭connectionSocket,等待另一个客户端连接,子进程中关闭welcomeSocket,处理客户请求
2.9 UDP Socket编程
- 无需等待连接和建立连接,socket不包含对方信息,直接发送/接收数据,参数为socket、对方IP和端口号
2.9.3 客户端编程
- clientSocket = socket();
- bind(clientSocket, fad) (隐式绑定,socket同本地sockaddr_in绑定)
- struct hostent * ptrh = gethostbyname(host);
- memcpy(&sad.sin_addr, ptrh->h_addr,ptrh->h_length)(将服务器IP拷贝到服务器sockaddr_in中)
- gets(str); sendto(clientSocket, str, &sad); recvfrom(clientSocket, str, &sad); close(clientSocket)
2.9.4 服务器编程
-
serverSocket = socket();
-
bind(serverSocket, sad);(绑定welcomeSocket和本地sockaddr_in)
-
while{
recvfrom(serverSocket, str, &cad)(阻塞时等待接受数据,返回客户端的cad引用)
sendto(serverSocket, str, &cad)
}
3.1 概述和传输层服务
- 相较于网络层,传输层提供了复用和解复用服务,从端到端变为进程到进程,但不能提供延时和带宽保证
- TCP是可靠的字节流服务,加强了IP协议的可靠性(RDT)和安全性(SSL)
- UDP是不可靠的数据包服务,相比IP协议只是区分了进程
3.2 多路复用和解复用
- 本质上是通过端口号区分应用进程,将传输数据发送给对应进程
- 引入socket是为了减少层间的信息传输,在传输层通过端口号查找对应的socket,从而找到应用进程
3.4 可靠数据传输(RDT)的原理
-
网络层的数据传输是不可靠的,为了保证数据传输可靠性,在传输层采用rdt协议
-
借助有限状态机模型来描述rdt原理, 发送方在接受上层数据后,状态变化,产生数据封装和发送的动作
-
rdt1.0假设信道可靠的,无比特位翻转和丢失,rdt2.0引入校验重传的机制,解决比特位翻转问题
4.1 网络层:数据平面
- 路由是控制平面功能,转发是数据平面功能
- 传统方式:分布式的控制平面路由协议实体按照路由选择算法计算出路由表,通过匹配路由表,数据平面按照IP协议对分组做转发
- 软件定义网络:路由器CA(控制代理)上报状况,网络操作系统通过南向接口下发流表,通过匹配数据报中的多个字段(IP、端口、MAC、标志位)等,做出相应动作(转发、阻塞、泛宏等),SDN方式下的路由器被称为分组交换机
- 传统方式的控制平面是分布式的,且和数据平面绑定,不容易升级,SDN方式的控制平面是集中式的,和数据平面分离,容易升级
- 传统方式只匹配目标IP一个字段,SDN方式匹配多个字段
- SDN控制器上运行的应用包括防火墙、RDS、路由等
4.2 路由器组成
-
由输入端口、输出端口、交换结构和路由处理器组成
-
输入输出队列,缓存满了分组会被丢弃
-
存在调度机制,先来的分组不一定先传(比如多媒体应用的分组可能先传)
4.3 IP协议
4.3.1 IP数据报
- 大的IP数据报在路由器上被分片,并在目标主机进行重组
4.3.2 IP地址
- IP用来标识设备同网络的接口,32位
- 子网:具有同样前缀的IP地址,收发不需要借助路由器,可以借助交换机,一跳可达
4.3.3 地址分类
- A、B、C类是单播地址,D类是组播地址
- 互联网的路由是以子网为基本单位(而不是设备IP)做计算的,可以减小路由表项数量,减轻路由负担
4.3.4 特殊IP地址
- 子网部分全为0,代表本网络
- 主机部分全为0,代表本主机
- 主机部分全为1,代表广播地址,该子网中全部主机
- 127.x.x.x是回路地址,发送到IP层后反转朝上,用作测试
- 内网(专用)IP地址,不会与公用地址重复,只在局域网络中有意义,路由器不对目标地址是专用地址的分组进行转发,例C类专用地址192.168.0.0-192.168.255.255
4.3.5 子网掩码
- 无类域间路由(CIDR),子网部分可以在任意位置(按需分配主机数量)
- 地址格式a.b.c.d/x,其中x是地址中子网号的长度,子网掩码用来标记子网的位置
4.3.6 路由表
- 表项包括目标子网号,子网掩码,下一跳IP,网卡
- 提取IP报文中的目标IP地址,通过子网掩码获取目标子网号,来匹配表项,找到下一跳IP,通过对应网卡转发
- 如果都么有找到,则使用默认表项(默认网关)转发?
4.3.7 DHCP
- 动态主机配置协议,上线时做广播请求,从DHCP server处获得四个上网信息
4.3.8 路由聚集
- ISP从ICANN处获得大的IP地址块,可以将其切分为几块小的地址块
- 路由信息通告,凡是子网前缀是x.x.x.0的,都发给我,我是下一跳
- 在发布路由信息通告时,可以对路由信息做聚集(打包发布通告)
4.3.9 NAT
- 路由器不对内网地址进行路由转发,所以内网设备要通过路由器做NAT地址转换,变为同一个外网地址出网
- 用NAT表中一个未用的端口号代表内网设备的IP和端口号
- 6万多个端口号,足够组建局域网,但路由器是3层设备,而NAT需要对端口号做处理,有争议
- 回来时需要做NAT穿透:静态配置NAT端口映射,IGD协议动态增删端口映射
4.3.10 IPV6
- 128bit地址空间,足够用
- 路由器不做分片处理,通过ICMP发送过大错误报告
- IPv4到v6的平滑过渡:v6是孤岛,边界路由器上运行双栈协议,将v6数据报封装到v4中,借助v4的路由器建立隧道,同另一个孤岛通信
5.2路由选择算法
- 路由的输入是拓扑、边的代价、源节点,输出是源节点的汇集树
- 汇集树是此节点到其它节点的最优路径形成的树
5.2.1 路由算法分类
- link state算法:所有路由器拥有完整的拓扑和边的代价信息
- distance vector算法:路由器只知道和它物理连接的邻居路由器和边的代价,迭代地与邻居交换路由信息,计算路由信息
- 基于路由算法实现路由选择协议:RIP——DV算法,OSPF——LS算法
6.1 数据链路层
6.1.1 数据链路层和局域网
-
广域网采用点到点的链路
-
局域网一般是多点连接(一方发多方收),共同连接到共享介质(交换机或者同轴电缆)
-
数据链路层的服务主要体现在局域网上
-
多点连接的链路层功能很复杂:MAC实现访问控制
6.1.2 链路层服务
-
链路层的节点指主机和路由器,链路分为有线和无线
-
链路层负责从一个节点通过链路将帧发送到相邻的物理节点
-
链路层提供的服务:成帧、可靠数据传输
-
数据报在不同的链路上按照不同的链路协议封装成帧:第一跳链路是以太网,中间链路是帧中继链路,也可能是wlan链路(无线链路)
-
链路层在低出错率的链路(如以太网)是不可靠的,在出错率高的链路(如wlan)是可靠的
-
依赖网卡实现链路层功能
6.2 多点访问协议(MAC)
-
问题:在多点连接链路中,两个节点同时发送会产生冲突
-
多点访问协议(MAC),决定节点在什么时候可以发送
-
使用共享信道,多个站点,一个信道
-
分为三大类:信道划分、随机访问、依次轮流
6.4 LANS
6.4.1 MAC地址
-
MAC(物理地址、链路层地址),48位,固定写在网卡上,用来区分子网内部的节点,标识网卡
-
和ip地址的区别:ip地址是分层的,前n-1跳,路由到目标网络,最后一跳到达目标节点,mac是平面的,在一个网络内部,完成节点间传输
-
ip地址和MAC地址分离的好处:变化不会互相影响
-
路由器查到下一跳的IP地址,通过ARP协议转化为MAC,加上数据报本身,由网卡封装成帧
-
端到端通信过程中,源ip和目标ip不变,源mac和目标mac变
-
ARP:地址解析协议,广播应答查询
6.4.2 以太网
-
最主流的是LAN技术
-
以太网的连接方式经历了同轴电缆->hub集线器->交换机的变化
-
集线器是物理层设备,转发到所有端口,如果2个节点同时发送,会碰撞
-
交换机存储转发到特定端口,可以并行发送
-
以太帧结构
-
以太网是无连接、不可靠的服务
6.4.3 交换机
-
交换机是链路层设备
-
通过自学习,获取端口号和MAC地址对应关系,维护交换表
-
收到帧后,查表,按照MAC地址转发
-
对帧的处理:转发,过滤(如果出去的端口和进来的一样,则过滤),泛洪(不知道端口号则向所有端口转发)
-
生成树算法:保证交换机工作在树中,而不是一个环中,防止广播帧无限制转发
6.4.4 WLAN
- 无线主机与基站通信,基站即AP,再通过交换机或者路由器连接到互联网
6.6 数据中心网络
- 负载均衡:负载均衡设备工作在四层和五层,按照调度算法,将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。
8.1 加密原理
- 公开密钥密码学(RSA)
- 对称密钥密码学(从DES到AES)
8.2 报文完整性
8.2.1 数字签名
- 签署人用私钥对报文进行加密,生成签名,接收方用公钥对签名解密,比对报文是否一致
8.2.2 报文摘要
- 长报文加密需要大量时间,采用固定长度的fingerprint来代替
- 对报文m使用散列函数,获得固定长度的报文摘要H(m)
- 散列函数的特性:多对1,长度固定,反向计算不可行(找不到另一个报文跟原报文具有相同摘要)
- 散列函数算法:MD5散列函数(128bit),SHA-1散列函数(160bit)
8.3 密钥分发和证书
8.3.1 可信赖中介
- 在相互通信的实体间扮演可信赖中介的角色,帮助建立新来关系
- 在对称加密体系中叫KDC(密钥分布式中心),在公开密钥加密体系中叫CA(认证中心)
8.3.2 KDC
- 服务器和每一个注册用户都分享一个对称示的密钥
- 通过该密钥能计算得到双方通信密钥
8.3.3 CA
-
通过签发证书,将每一个注册实体和它的公钥捆绑
-
E在CA注册公钥:CA创建证书,包含E的实体和公钥,并用自己的密钥签名
-
E分发证书:A拿到E的证书后,用CA的公钥(带外获得)验证签名,证实这是E的公钥
-
信任证书=信任公钥=信任通信
-
首先信任根CA,并信任根证书(未被签名或自签名的证书),信任根CA的公钥(带外获得),根CA为其他机构签署证书,逐级建立信任关系
8.4 防火墙
- 将内部网络和互联网隔离开,按照规则对分组进行放行或者阻塞
- 两种类型的防火墙:分组过滤器(网络级别)、应用程序网关(应用级别)
8.4.1 防火墙的意义
- 阻止拒绝服务攻击(dos):攻击者伪造TCP连接,耗尽资源,通过禁IP的方式阻止
- 阻止对非授权内容的访问
8.4.2 分组过滤
-
内部网络通过配置防火墙的路由器连接互联网,对进出流量做限制
-
路由器获取分组头部字段(源/目标IP、源/目标端口、TCP/UDP),按照规则采取动作
-
ACL(访问控制表),匹配表项,包含默认规则
-
无状态分组过滤器:按照相应策略设置规则,独立地检查每个分组
-
有状态分组过滤器:联合检查分组,维护通信双方状态,检查是否建立过连接
8.4.3 应用程序网关
-
根据应用数据的内容来过滤数据报,工作在应用层
-
例如,通过配置防火墙,只允许局域网内一台服务器进行telnet,可以在该服务器上配置telnet代理,其他用户通过该网关来telnet
-
telnet代理起到中继的作用,此外还可对telnet内部流量进行分析过滤
-
http代理可对web应用数据进行过滤
-
每个应用都需要配置对应的应用程序网关,防火墙也要做相应配置
8.4.4 缺陷
-
分组过滤:通过IP spoofing,伪造IP数据报字段,绕过防火墙
-
应用程序网关:效率问题
8.5 IDS:
-
分组过滤只对TCP/IP头部进行检查;不检查会话间的相关性
-
IDS深入分组检查,检查分组的数据部分,是否包含病毒特征码;并且检查分组间的相关性,比如端口扫描、网络映射等
-
工作原理:将端口的流量镜像到某些端口,在这些端口跑探针sensor进行分析,只负责报警
8.6 安全威胁
8.6.1 映射
- 攻击前"踩点",发现网络上的服务
- ping判断哪些主机在网络上有地址
- 端口扫描:顺序地在每一个端口上建立TCP连接,发现服务
8.6.2 分组嗅探
-
将内部设备的NIC设置为混杂模式,可以获取网络中的所有分组,包括未加密的数据
-
应对:某些检测软件能够周期性的检测是否有网卡运行于混杂模式(利用ARP协议)
8.6.3 IP spoofing欺骗
- 应对:入口过滤,路由器对那些非法源地址的分组不进行转发(数据报的源地址不是路由器所在网络地址)
8.6.4 DOS
- 应对:在到达主机前过滤掉这些泛洪的分组(如SYN),并回溯源主机