第一章:计算机网络体系结构
1.1、计算机网络概述
性能指标:
- 带宽
- 时延
- 时延带宽积
- 往返时延
- 吞吐量
- 信道利用率
1.2、网络体系结构与参考模型
为什么要分层?
- 降低复杂度,便于维护,促进标准化工作
实体:不同机器上同一层称为对等层,同一层的实体称为对等实体。
协议:控制两个或多个对等实体进行通信的规则集合,是水平的。
- 组成:语法、语义、同步
服务:下层为上层提供功能调用,上层单向使用下层提供的服务,是垂直的
- 服务原语:请求、指示、指示的响应、证实
- 分类:
- 面向连接和无连接
- 可靠和不可靠
- 有应答 和无应答
协议与服务的区别?
- 协议是水平的,xxx;服务是垂直的,xxx。
- 协议的实现保证了能向上一层提供服务
OSI 参考模型:
- ”物联网淑惠适用“
TCP/IP模型:
- 网络接口层、网际层、传输层、应用层
TCP/IP与OSI的比较
- 都采用分层结构
- 都可以解决异构的网络互联,实现不同厂家的计算机相互通信
- OSI精确定义了服务接口和协议,但缺乏市场与商业动力,结构复杂,不实用
==》采取折中的方法,综合两者的优点,引出五层参考模型
===》物理层、数据链路层、网络层、传输层、应用层
第二章:物理层
2.1、通信基础
基本概念:
- 模拟信号、数字信号
- 串行传输、并行传输
- 单工通信、半双工通信、双工通信
奈奎斯特与香农定理:
-
奈式准则:
-
极限码元传输速率:2W
-
极限数据传输速率= 2WlogV V:每个码元离散电平的数目
-
内忧,没有噪声,宽带有限
-
给出了 码元传输速率的限制,没有限制信息传输速率(没有限制一个码元可以对应多少二进制位)
-
-
香农定理:
- 极限数据传输率:W*log(1 + S/N) S/N:信号平均功率与噪声平均功率之比
- 外患,带宽受限且有高斯白噪声干扰。
编码与调制:
编码:数据转化为数字信号的过程。
-
数字数据编码为数字信号:
-
使用:数字发送器
-
归零编码
-
非归零编码
-
曼彻斯特编码
-
差分曼彻斯特编码
-
-
模拟信号编码为数组信号:
- 使用:PCM编码器
- 采样、量化、编码
调制:数据转化为模拟信号的过程。
- 数字数据调制为模拟信号:
- 幅移键控
- 频移键控
- …
- 模拟数据调制为模拟信号:
- 使用:放大器调制器
- 频分复用技术
电路交换、报文交换、分组交换
电路交换
- 数据传输前,先建立一条专用物理信道,线路在数据传输期间一直被独占,直到通信结束才被释放。
- 三个阶段:连接建立、数据传输、连接释放。
- 优点:
- 时延小,有序传输、没有冲突
- 缺点:
- 线路独占、建立连接时间长
报文交换
-
数据交换的单位是报文,报文携带有目的地址、源地址等信息。报文交换在交换结点的时候采用存储转发方式。
-
优点:
- 动态分配线路,无需建立连接,提高线路利用率
-
缺点:
- 数据在交换节点要存储转发,所以存在转发时延。
分组交换
- 采用存储转发方式,限制每次传送数据块的大小,把大的数据块分为小的数据块,再加上必要的控制信息(源地址、目的地址、编号信息)构成分组,进行存储转发。
- 优点:
- 没有建立时延,线路利用率高,减少出错概率和重发数据量。
- 缺点:
- 存在传输时延,每个分组需要额外的信息量
分组交换可以分为数据包与虚电路。
数据报与虚电路服务
数据报服务:
- 把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组,找到最佳路由后,转发分组
- 特点:
- 发送前不需要连接
- 网络尽最大努力交付,不保证可靠性;每个分组独立进行路由选择和转发,不保证有序。
- 网络具有冗余路径,对故障的适应力强
虚电路服务:
-
在分组发送前,要建立一条逻辑上的虚电路。
-
特点:
-
需要建立连接
-
**提供可靠的通信功能,**保证分组 有序到达
-
虚电路中某个节点或链路出现故障,经过该节点的整条虚电路就会遭到破坏。
-
2.2、传输介质
双绞线:
- 屏蔽双绞线和非屏蔽双绞线
- 便宜、适用范围广
同轴电缆:
- 抗干扰、传输距离更远、用于传输较高速率的数据
- 价格稍贵
光纤:
- 单模光纤、多模光纤
- 传输损耗小,远距离,抗干扰
无线传输介质:
- 无线电波(多方向)
- 微波、红外线、激光(单方向)
- 卫星通信
物理接口的特性:
- 机械特性:物理连接时的规格、引脚数目。。。
- 电气特性:电压范围
- 功能特性:某一电平代表何种意义
- 规程特性:时序关系
2.3、物理层设备
中继器:
- 将数字信号整形并放大(信号再生)再发送出去,消除信号的失真和衰减。
- 在局域网下使用,不能连接具有两个不同速率的局域网
- 与放大器区别?
- 放大器放大的是模拟信号,原理是将衰减的信号放大,而不是再生。
集线器:
- 实质是一个多端口中继器
- 工作在半双工状态下
- 每个端口连接同一网络的不同网段,不能分割冲突域。
第三章:数据链路层
在物理层提供服务的基础上向网络层层提供服务,主要作用是加强物理层传输原始比特流的能力
3.1、数据链路层的功能
-
为网络层提供服务
- 无确认的无连接服务
- 有确认的无连接服务
- 有确认的面向连接服务
-
链路管理(介质访问控制)
-
帧定界、帧同步、透明传输
- 透明传输:不管传输数据是什么样的比特组合,都应当能在链路上传送。
-
流量控制
-
差错控制
3.2、组帧
常用比特填充和违规编码法。
**字符计数法:**每个帧头部用一个计数字段标明帧内字符数。
**字符填充的首尾定界法:**使用特殊字符定界
**零比特填充的首尾标志法:**连续5个1,在后面加0
**违规编码法:**违规编码序列来界定帧的开始和结束。
3.3、差错控制
检错编码:
- 奇偶校验码
- 给每一个码字加一个校验位,用它来构成奇性或偶性校验
- 循环冗余码CRC
- 在K位信息码后再拼接R位的校验码,根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
纠错编码——海明码:
- 原理:
- 在有效信息位中加入几个校验位形成海明码,
- 并把海明码的每个二进制位分配到几个奇偶校验组,
- 当某一位出错时,会引起有关的校验位值发生变化
- 以此发现错位,并指出出错的位置
3.4、流量控制和可靠传输机制
流量控制:
- 限制发送方的数据流量,使其发送速率不超过接收方的接受能力,防止数据丢失
单帧滑动窗口与停止-等待协议
-
基本原理:每次发送一帧,然后等待接收方确认信息,收到确认再发送下一帧。相当于发送和接受窗口都为1的滑动窗口协议
-
可能的差错:
- 数据帧丢失
- 确认帧丢失
- 确认帧迟到
-
帧缓冲区:
-
实现方法:发送缓存保存数据帧的副本
-
目的:为了超时重发和判定重复帧
-
多帧滑动窗口与后退N帧协议(GBN)
- 基本原理:发送方连续发送帧,接受方收到失序的帧后,要求重发最后一个正确接收的帧之后的未被确认的帧。
- tip:
- **累计确认:**不必对每一个数据帧发确认帧,而可以在连续收到好几个正确的帧后,才对最后一个数据帧发送确认信息。
- 接收方按序接收,不按序的帧丢弃
- 优点:提高信道利用率。
- 缺点:
- 误码率很大时,性能不一定优于停止-等待协议。
- 重传时,把原来已经正确发送的帧重传,降低了效率低 ====》引出选择重传
多帧滑动窗口与选择重传协议
- 只重传出现差错的数据帧和计时器超时的数据帧
- 实现:
- 一旦接收方怀疑帧出错,就发送一个否认帧NAK给发送发,发送方对NAK中指定的帧重传。
- 接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧(来者不拒)
3.5、介质访问控制
介质访问控制子层:用来决定广播信道中信道分配
介质访问控制方法:
-
静态划分信道
- 信道划分介质访问控制
-
动态划分信道
- 随机访问介质访问控制
- 轮询访问介质访问控制
信道划分介质访问控制
- 将使用同一信道的通信按照特定的方式隔离开来。
- 分类:
- 频分多路复用:按不同频率划分信道
- 时分多路复用 ===》优化:统计时分多路复用:不固定分配时隙,而按需动态分配时隙。
- 波分多路复用:类似于光的频分复用
- 码分多路复用:采用不同的编码来区分各路原始信号。既共享信道频率,又共享信道时间。
- 每个用户分配一个地址码,各个码型互不重叠
- 每个站点(通道)被指定一个唯一的m位的代码或码片序列。当发送1时站点就发送码片序列,发送0时就发送码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中被线形相加。为了从信道中分离出各路信号,要求各个站点的码片序列是相互正交的。
随机访问介质访问控制
所有用户根据自己意愿随机发送信息
1、ALOHA协议:
-
纯ALOHA协议:想发就发,发生冲突或超时后随机时间重传。
-
时隙ALOHA协议:控制想发就发的随意性,所有站在时间上同步起来,划分为等长的时隙,规定在每个时隙开始时才能发送帧
2、CSMA协议:
(载波监听,多路访问)
- 1-坚持CSMA:
- 信道空闲,立即发送。
- 信道忙,等待、继续侦听直到信道空闲。
- 非坚持CSMA:
- 信道空闲,立即发送。
- 信道忙,放弃侦听,等待一个随机时间后再重复该过程。
- p-坚持CSMA:
- 信道空闲,以概率p发送数据,以1-p的概率推迟到下一个时隙。
- 信道忙,推迟到下一个时隙再侦听,直到信道空闲。
3、CSMA/CD
(载波监听,多点接入,碰撞检测)
- 思想:先听后发、边听边发、冲突停止、随机重发
- 基本概念:
- 争用期:站点在发送帧后至多经过时间T就能知道是否发生碰撞,该时间被称为争用期。 T=2t t:套
- 最小帧长:总线传播时延(t)* 数据传输率 * 2
- 为了确保发送站在发送数据的同时检测到可能的冲突,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延。帧长需满足最小帧长。
- **二进制退避算法:**确定重传时机
- 算法思想:
- 确定基本退避时间(一般取争用期)
- 定义k,重传次数
- 从[0、1、2、…2k次方-1]中选择一个数r,重传所需的退避时间就是 r 倍的争用期。
- 优点:重传推迟的时间随重传次数增大而增大,降低碰撞概率;考虑了网络负载对冲突的影响
- 适用:有线连接的局域网
- 算法思想:
4、CSMA/CA
(载波监听,多点接入,碰撞避免)
- 思想:碰撞检测改为碰撞避免
- 实现:
- 采用二进制退避算法
- 预约信道:发送发发送数据的同时向其他站点通知自己传输需要的时间,此时间段内其他站点不发送数据。
- ACK帧:所有站点正确接收到发送方的数据帧后,要回发一个ACK确认帧。
- RTS/CTS帧:可选的碰撞避免机制,主要解决无线网中的隐蔽站问题。
- **适用:**无线局域网
CSMA/CD与CSMA/CA的区别 ?
- 前者检测冲突但无法避免,后者发送数据的同时不能检测到信道有无冲突
- 前者用于有线局域网,后者用于无线局域网
- 前者通过电缆中电压变化来检测冲突,后者采用能量检测、载波检测和能量载波混合检测来检测信道。
轮询访问介质访问控制
令牌传递协议:
- 通过一个集中控制的监控站,以循环方式轮询每个节点,再决定信道分配(轮询协议)
- 拿到令牌才可以发送数据(令牌协议)
优点:既不产生冲突,又占用全部带宽。
3.6、局域网
以太网与IEEE802.3
-
特点:无连接、尽最大努力交付、提供的是不可靠服务。
-
拓扑结构:逻辑拓扑:总线型,物理拓扑:星形
-
**MAC地址:**网卡在出厂时都有一个唯一代码,用于控制主机在网络上的通信。
===》**网卡:**局域网中连接计算机和传输介质的接口
- 以太网的MAC帧
- 数据段:46~1500字节
- 其余字段:目的地址6、源地址6、类型2、校验码4,共18字节
高速以太网
-
100BASE-T以太网
-
吉比特以太网
-
10吉比特以太网
无线局域网IEEE802.11
-
有固定基础设施的无限局域网
- 基本服务集、基站、移动站
-
无固定基础设施的无线局域网自组织网络
- 由一些平等状态移动站相互通信组成的临时网络
虚拟局域网VLAN
-
基于CSMA/CD
-
即虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而不同VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
-
优点;
- 增强局域网的安全性
- 灵活构建虚拟工作组
3.7、广域网
- 主要使用分组交换技术,由节点交换机及连接这些交换机的链路组成。
PPP与HDLC
- 相同:
- 都可以透明传输,都可以实现差错检测
- 不同:
- **PPP:**为在点对点连接上传输多协议数据包提供了一个标准方法
- HDLC:高级数据链路控制
PPP协议 | 面向字节 | 有2字节的协议字段 | 无序号和确认字段 | 不可靠传输 |
---|---|---|---|---|
HDLC协议 | 面向比特流 | 无协议字段 | 有序号和确认字段 | 可靠传输 |
3.8、数据链路层设备
网桥:
-
两个或多个以太网通过网络连接起来,成为一个覆盖范围更大的以太网。
-
具备寻址和路径选择能力
====》路径选择算法
- 透明网桥:选择的不是最佳路由,即插即用,自学习
- 算法思想:在转发帧时记下源地址和网桥端口,将其作为转发表的项目,转发过程中,逐步完善转发表。
- 源路由网桥:选择的是最佳路由,源站以广播的方式向目的站发送一个发现帧作来探测,然后根据经过的结点生成最佳路径。
- 透明网桥:选择的不是最佳路由,即插即用,自学习
交换机:
-
本质上是一个多端口网桥
-
原理:检测从端口来的源和目的地的MAC地址,与系统内部的查找表对比,若MAC地址不在查找表,则将该地址加入查找表,并将数据帧转发到对应的目的端口。
-
两种交换模式
- 直通式交换机:只检查帧的目的地址(6B),数据帧可以马上被传输出去。
- 存储转发式交换机:现将收到的帧缓存,检查数据是否正确,正确则发送,有错就丢弃
能否隔离冲突域 | 能否隔离广播域 | |
---|---|---|
物理层:中继器、集线器 | ❌ | ❌ |
链路层:网桥、交换机 | ✔️ | ❌ |
网络层:路由器 | ✔️ | ✔ |
第四章:网络层
向上只提供简单灵活、无连接的、尽最大努力交付的数据报服务。
4.1、网络层功能
- 异构网络互连
- 网络互连:将两个以上的计算机网络,通过中继系统的连接,构成更大的网络系统。
- 虚拟网络互连:也就是逻辑互联网络,通过使用IP使性能各异的网络在网络层上看起来好像是一个统一的网络。
- 路由与转发
- 路由选择:
- 分组转发:
- 拥塞控制
- 拥塞:因出现过量分组而使网络性能下降的现象。
4.2、路由算法
。。。。
4.3、IPV4
IPV4数据报:
-
首部(20B)
- 1 总 8片 4首
-
数据报数据部分:
- 最大传送单元:1500B
-
网络层转发流程:
- 从数据报首部提取目的主机的IP,得到目的网络地址。
- 查看路由表,转发到目的地址对应的路由。
- 或默认路由,或直接交付。
IPV4地址与NAT
**IP地址:**每台主机都分配的32比特的全球唯一标识符。 IP地址= {网络号,主机号}
IPV4分类:
- A类:0…
- B类:10…
- C类:110…
- D类:1110… 多播地址
- E类:1111… 保留为今后使用
网络地址转换NAT:
- 概述:将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP。
- 私有地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为全球IP才能用于Internet。
子网划分、子网掩码、CIDR
子网划分:
-
背景:两级IP空间利用率低、不够灵活
-
划分思路:IP地址 = {网络号,子网号,主机号}
-
子网划分属于单位内部的事情,对外仍表现为没有划分子网的网络。
子网掩码:
- 使用子网掩码来表达对原网络中主机号的错位,计算机只需将IP地址和其对应的子网掩码逻辑与运算,便可得到子网网络地址。
无分类域间路由选择(CIDR):
- 在变长子网掩码的基础上提出的一种消除传统ABC类网络划分,实现超网构造的一种IP地址划分方法。
- 路由聚合/构造超网:将网络前缀相等的连续IP地址组成CIDR地址块(将网络前缀缩短,所有网络地址取交集)
- 查找路由表应选择最长前缀的路由。
- 优点:
- 地址划分更灵活。
- 减少路由表项。
地址解析协议ARP
- 实现IP地址到MAC地址的映射
- ARP表:ARP高速缓存,用来存储本局域网各主机和路由器IP地址到MAC地址的映射。
- ARP协议是自动进行的。
动态主机配置协议DHCP
- 用于给主机动态分配IP地址,提供即插即用联网的机制
- 实现过程:(广播)
- 客户机到DHCP服务器:DHCP发现消息,有没有IP地址?
- DHCP服务器:有!
- 客户机:那我用?
- DHCP服务器:可以。
- tip:
- 分配的Ip地址是临时的,租用期
- DHCP是应用层协议,基于UDP
网际控制报文协议ICMP:
- 为了提高IP数据报交付成功的机会,在网络层使用了ICMP让主机或路由器报告差错和异常情况。
- ICMP差错报文
- 终点不可达
- 时间超过 Traceroute 跟踪一个分组从源点到终点的路径。
- …
- ICMP询问报文
- 回送和请求:PING 测试两个主机之间的连通性。
- 不应发送差错报文的情况:
- 对ICMP差错报文不再发送差错报文
- 对第一个分片数据报的所有数据报片都不再发送差错报文
4.4、IPV6
- 冒号十进制记法
IPV4向IPV6的过渡:
- 双协议栈:一台设备上同时装有IPV4和IPV6协议栈。
- 隧道技术:将IPV6封装到IPV4数据报的数据部分。
和IPV4的区别
IPV4 | IPV6 |
---|---|
32位(4B) | 128位(16B) |
固定首部 | 扩展首部 |
首部是4B的整数倍 | 首部是8B的整数倍 |
可在路由器和主机处分片 | 只能在主机处分片 |
无校验和字段 | |
即插即用,不需要DHCP | |
取消了协议字段 | |
支持资源预分配 | |
4.5、路由协议
协议 | RIP路由信息协议 | OSFP开放最短路径优先协议 | BGP 边界网关协议 |
---|---|---|---|
类型 | 内部网关协议 | 内部网关协议 | 外部网关协议 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换节点 | 和本结点相邻的路由器 | 网络中所有路由器 | 和本结点相邻的路由器 |
交换内容 | 当前路由器知道的全部信息,即自己的路由表 | 和本路由相邻的所有路由器的链路状态 | 首次:整个路由表 非首次:变化的部分 |
多久交换 | 30S | 链路状态发生变化时交换 | 发生变化时交换 |
4.6、IP组播
-
概念:源计算机仅发送一次数据,被传送的数据到达尽可能近的结点时才开始复制和分发,是一种一对多的传输方式。
-
实现过程:
- 主机使用IGMP(TCP/IP协议族中负责IP组播成员的管理)的协议加入组播组
- 通过路由器的路由选择和转发,实现组播。
-
组播地址:属于多组播的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)
IGMP与组播路由算法:
- 主机要加入组播时,向组播地址发送一个IGMP报文,声明要成为该组的成员。组播路由器收到报文,将主机加入组播组。
- 组播路由器周期性探寻局域网的主机,如果一个组在多次探寻后仍没有回应,则不再将该组成员关系转发到其他的组播路由器。
4.7、移动IP
-
支持移动性的网络体系结构与协议称为移动IP,他是为了满足移动节点在移动过程中保持其连接性而设计的
-
通信过程:
- 移动节点到外地网络时,向本地代理注册一个转交地址。
- 通过外部代理发送注册报文给本地代理
- 本地代理接受请求,将转交地址与永久地址绑定
- 本地地址的信息发送给转交地址,到达转交地址,再发送给移动节点。
4.8、网络层设备
路由器的组成:
- 路由选择部分:
- 路由选择处理机
- 分组转发部分:
- 输入端口:
- 交换结构:根据转发表对分组进行处理,将从输入口进入的分组从一个合适的输出端口转发出。
- 输出端口:
路由表:
- 目的网络IP | 子网掩码 | 下一跳IP | 接口
转发表:
- 目的站 | 下一跳
转发和路由选择的区别?
- 转发:只涉及一个路由器,路由器根据转发表把收到的IP数据报从合适的端口转发出去
- 路由选择:涉及很多路由器,路由表是多个路由器协同工作的结果。
第五章:传输层
5.1、传输层提供的服务
- 传输层提供应用进程之间的逻辑通信(即端到端的通信)
复用和分用:
- 复用:发送方不同应用进程都可以使用同一个传输层协议传送数据。
- 分用:接收方的传输层能够把收到的数据正确交付到目的应用进程。
传输层的寻址与端口:
- 端口:
- 表示主机中的应用进程
- 端口号:
- 服务端使用的端口号
- 客户端使用的端口号:也称临时端口号,进程运行时才动态地选择
- 套接字
- (主机IP地址, 端口号) IP标识不同主机 端口号标识一台主机中的不同应用进程
- 作用:唯一标识一台主机上的一个应用
Step 1:创建ServerSocket和Socket
Step 2:打开连接到的Socket的输入/输出流
Step 3:按照协议对Socket进行读/写操作
Step 4:关闭输入输出流,以及Socket
5.2、UDP协议
特点
- 无需建立连接
- 面向报文,报文是UDP数据报处理的最小单位。
- 提供尽最大努力的交付,不保证可靠传输。
UDP校验:
- 在数据报前增加伪首部(12B),不参与传输,仅为了计算校验和。
5.3、TCP协议
特点:
- 面向连接的传输层协议,每条连接点对点(一对一)
- 面向字节流
- 提供可靠的交付服务,保证数据传输无差错、不丢失、不重复、不失序。
TCP报文段:
- 源端口和目的端口字段
- 序号字段:(4B)指本报文所发送的数据的第一个字节的序号
- 确认号字段:(4B)期望对方的下一个报文段的第一个字节的序号
- 确认位
- 同步位:
- 终止位:用来释放一个连接
TCP连接管理:
三个阶段:建立连接、数据传送、连接释放
-
三次握手:
- 客户机首先向服务器发送请求报文
- SYN=1;seq=x
- 服务器收到请求报文后,如果同意建立连接,就向客户机发回确认
- SYN = 1;ACK= 1;ack = x+1;seq = y;
- 客户机收到确认报文后向服务器给出确认,同时为连接分配缓存和变量
- ACK = 1;seq = x+1;seq = y+1
- 客户机首先向服务器发送请求报文
-
四次握手:
- 客户机向TCP服务器发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接
- FIN = 1;seq = u;
- 服务器收到连接释放报文后发出确认
- ACK = 1;seq = v;ack = u+1;
------------此时,处于半关闭状态,服务器到客户机的连接并未关闭-------------------------------------
- 服务器通知客户机释放连接
- FIN = 1;ACK = 1;seq = w;ack = u+1;
- 客户机收到连接释放报文后,发出确认
- ACK = 1;seq = u+ 1;ack = w+1
-----------此时,TCP连接还未释放,必须经过2MSL(最长报文段寿命)后,客户机才进入连接关闭状态。
- 客户机向TCP服务器发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接
SYN洪泛攻击:
- 利用TCP协议的特性,发生在三次握手阶段
- 过程:
- 攻击者发送TCP SYN,SYN是三次握手中的一个数据包。
- 服务器发回确认信息,攻击者不对其进行确认。导致三次握手无法完成,TCP连接处于半连接状态。
- 服务器收不到再确认信息,会重复发送ACK给攻击者。
- 攻击者对服务器发送大量的这种TCP连接,大量连接处于挂起状态,消耗了服务器的CPU和内存,导致服务器死机。
TCP可靠传输:
实现机制:
- 校验
- 序号:TCP首部的序号字段保证数据有序的提交给应用层,序号建立在传送的字节流上
- 确认:TCP首部的确认字段是期望对方下一个将要发送的报文段的第一个字节的序号
- 重传:
- 超时:重传时间到期但还未收到确认时,重传报文段。
- 冗余ACK:在超时时间发生之前,通过冗余ACK检测丢包情况。即收到某个报文段的三个冗余ACK,就可以认为该报文段已经丢失。(每当收到失序报文段,就发送一个冗余ACK)
TCP流量控制
- 目的:匹配发送方的发送速率和接收方的接收速率。
- 实现:基于滑动窗口的流量控制机制
- 接收方根据自己接收缓存的大小,动态调整发送方的发送窗口,限制发送方发送速率。
- 发送方根据当前网络拥塞程度估计窗口值。
流量控制和拥塞控制的区别
- 相同:都通过控制发送方的发送速率达到控制效果
- 不同:
- 流量控制室对点对点的通信的控制,接收端控制发送端。
- 拥塞控制是一个全局性的过程,涉及所有主机路由器等因素。
TCP拥塞控制
- 目的:防止过多的数据注入网络,保证网络中链路不过载。
- 实现:
- 慢开始:从 1 开始,每经过一个传输伦次,拥塞窗口加倍。达到慢开始门限,改用拥塞避免算法。(指数增长)
- 拥塞避免:每经过一个传输轮次,拥塞窗口加 1 ,出现超时时,令慢开始门限等于当前拥塞窗口的一半(加法增大)
- 快重传:当收到三个重复ACK报文,直接重传对方尚未收到的报文段,不必等计时器超时
- 快恢复:当收到三个冗余ACK时,执行 “乘法减小” 算法,把慢开始门限设为当前拥塞窗口的一半,然后执行”拥塞避免“算法(加法增大)
发送方的发送窗口由流量控制和拥塞控制共同决定。
第六章:应用层
6.1、网络应用模型
客户/服务器( C/S )模型:
- 客户机:间歇性接入网络,不与其他客户机直接通信
- 服务器:永久提供服务,永久性访问域名
- 特点:
- 网络中各计算机地位不平等
- 应用:
- 文件传输协议FTP
- 电子邮件
浏览器/服务器(B/S)模型:
- xxx
B/S和C/S的区别 ?
- C/S模式需要安装专门的客户端,但安全性更高,操作性更强。
- B/S模式只需要浏览器就能运行,安全性较低,无法满足个性化需求。
**P2P模型:**如 迅雷、QQ、电驴
- 各计算机没有固定的客户机和服务器划分,任意一对计算机称为对等方,相互直接通信,每个节点既作为客户机访问其他节点的资源,又作为服务器提供资源给其他节点访问。
- 优点:
- 减轻服务器压力,提高了系统效率和资源利用率。
- 多个客户机之间可以直接通信
- 可扩展性好
- 缺点: ======》各大互联网服务提供商通常对P2P应用持反对态度。
- 占用较多的内存,影响整机速度。
- P2P下载会对硬盘造成较大的损伤。
- 使网络变得拥塞。
6.2、域名系统DNS
- 概念:DNS是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址。
- 采用C/S模型,运行在UDP之上,使用53号端口。
域名服务器:
- 概述:域名系统被设计成一个联机分布式的数据库系统,并采用C/S模式,没有一台域名服务器上具有因特网上所有主机的映射,映射分布在所有DNS上。
- 分类:
- 根域名服务器
- 顶级域名服务器
- 授权域名服务器
- 本地域名服务器
域名解析过程:
-
查询方式
- 递归查询:(靠别人)
- 递归与迭代相结合的查询:(靠自己)主机向本地采用递归,本地向根域名用迭代。
-
域名解析过程:
- 客户机向本地域名服务器发出DNS请求报文。
- 本地域名收到请求后,查看本地缓存,或者向根域名服务器发出解析请求
- 根域名收到请求,将对应的顶级域名服务器IP地址返回给本地域名服务器
- 本地域名服务器再向顶级域名服务器发送请求报文
- 顶级域名服务器收到请求后,将对应的授权域名服务器IP地址返回给本地域名服务器。
- 本地域名服务器再向授权域名服务器发送请求报文。
- 授权服务器将查询结果返回给本地域名服务器
- 本地域名将结果保存到本地缓存,并发送给客户机。
-
高速缓存:
- DNS服务器会缓存DNS查询结果,当另一个相同的域名查询到该DNS服务器时,就能直接提供所要求的IP地址,提高查询效率。
- 主机和IP的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。
6.3、文件传输协议FTP
功能:
- 实现不同主机间的文件传输;以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
**工作方式:**客户/服务器方式 结合 TCP可靠传输服务。
工作过程:
- 打开控制端口21,使用户进程能够连接
- 用户进程发送连接请求
- 服务器处理用户的连接请求。
控制连接与数据连接:
---------两个并行的TCP连接。
-
控制连接(端口号21):
- 服务器监听21端口,等待用户连接
- 控制连接用来传输控制信息,并且控制信息以7位ASCII码格式传送。
- 控制连接在会话期间一直保持打开。
-
数据连接(端口号20):
-
进行文件传输。
-
两种传输方式:主动方式(服务器连接到客户机的端口20)、被动方式(客户端连接到服务器,端口号由两者共同协商)
-
6.4、电子邮件
组成结构:
- 用户代理:用户与电子邮件系统的接口
- 邮件服务器:发送和接收邮件
- 邮件发送协议和读取协议:
- SMTP:用户代理发向邮件服务器、邮件服务器之间
- POP3:用户代理从邮件服务器读取邮件
收发过程:
- 发信人通过用户代理撰写和编辑要发送的邮件
- 用户代理通过SMTP协议将邮件发送给邮件服务器,放入邮件缓存队列,等待发送
- 邮件服务器发现有待发送邮件,就建立TCP连接,通过SMTP协议将邮件发送给接收方的邮件服务器,发送完毕,释放连接。
- 接收方的邮件服务器收到邮件后,将邮件放入接收方邮箱,等待用户读取。
- 收信人读取邮件时,通过用户代理调用POP3协议,从邮箱中取出邮件。
MIME(多用途网际邮件扩充):
- 背景:
- SMTP只能传送一定长度的ASSCII码,非英语国家的文字就无法传送。
- 也无法传送可执行文件及其他二进制对象。
- 基于此,MIME定义了传送非ASCII编码的规则,可对任何内容格式进行传送。
- 相当于,在用户代理和SMTP之间增加了MIME
SMTP的通信过程:
- 连接建立:
- SMTP客户每隔一段时间就扫描邮件服务器的邮件缓存
- 发现有待发送邮件,就与接受方的邮件服务器建立TCP连接。
- 邮件传送:
- 连接建立后,开始传送邮件;从MAIL命令开始,MAIL命令后有发件人地址。
- 若SMTP服务器已准备好接收邮件,就回答250 OK,
- SMTP客户端发送**RCPT命令(**作用:确定接收方是否做好接收邮件的准备,避免浪费通信资源)
- 获得OK的回答后,客户端使用DATA命令,开始传输邮件内容
- 连接释放:
- 邮件发送完毕后,SMTP客户发送QUIT命令
- SMTP服务器返回221(服务关闭),释放TCP连接。
POP3:
- 用户读取邮件时,用户代理向邮件服务器发送请求,拉取邮箱中的邮件。
- 工作方式:
- 下载并保留
- 下载并删除
IMAP(因特网报文存取协议):
- 允许用户代理只获取报文的某些部分(例如报文首部)而不必下载,只有当需要打开邮件时,邮件才会下载到计算机。
- 为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件的命令。
此外,随着万维网的流行,出现了很多基于万维网的电子邮件,如Gmail,这种电子邮件的特点是:
- 用户浏览器与邮件服务器之间的邮件发送和接收使用HTTP协议
- 不同邮件服务器之间传送邮件使用SMTP协议
6.5、万维网WWW
组成结构:
- 统一资源定位符 URL:
- <协议> 😕/ <主机> : <端口号> / <路径>
- 负责标识万维网上的各种文档,每个文档在万维网上具有唯一标识符
- 超文本传输协议 HTTP:
- 应用层协议,使用TCP进行可靠传输
- 超文本标记语言 HTML:
- 使用一些约定的标记对页面上的各种信息、格式进行描述。
工作流程:
- Web使用浏览器通过URL与Web服务器建立连接,并发送浏览请求
- Web服务器把URL转换为文件路径,并返回信息给Web浏览器
- 通信完成,关闭连接
HTTP的操作过程:
- 每个万维网站点都有一个服务器,不断监听TCP端口(80),监听到连接便与浏览器建立TCP连接。
- TCP连接建立后,浏览器向服务器发送某个Web页面的HTTP请求。
- 服务器收到请求后,将信息通过HTTP响应返回给浏览器。
- 浏览器将信息进行解析,将Web页面展示给用户。释放TCP连接。
网站访问实例:
- 浏览器解析URL
- 域名服务器DNS解析出IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发送HTTP请求
- 服务器通过HTTP响应将信息返回给浏览器
- 浏览器解析对应文件(如html),将Web页面显示给用户,TCP释放连接。
HTTP的特点:
-
无状态:每次请求之间相互独立,不能交互数据
-
历史版本
- 1.0:非持久连接,每一次请求都会建立新的连接
- 1.1:持久连接,一次请求后继续保持连接,使同一个客户和服务器在这条连接上传送后续的HTTP请求和响应。
- 非流水线方式:客户在收到前一个响应后再发送下一个请求。
- 流水线方式:连续发送请求。
-
请求消息的数据格式:
-
请求行:
- 请求方式 / 请求url / 请求协议 / 版本 如:GET / login.html / HTTP / 1.1
-
请求头:
-
GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
-
User-Agent:浏览器告诉服务器,浏览器版本信息
- 可以在服务器获取该头的信息,解决浏览器的兼容问题。
-
Referer:http://localhost/xxxx.html
- 告诉服务器请求从哪里来。
- 作用:防盗链。例如,视频网站防盗,对于每一个视频请求,检查Referer项是否来自正确的域名,决定能否访问。
-
-
响应
-
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
-
乱码问题:
-
get方式:tomcat 8 已经解决
-
post方式:在获取参数前,设置request的编码
request.setCharacterEncoding("utf-8");
-
-
-
HTTP与HTTPS的区别?
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。