InternetWork 计算机网络
参考书 《计算机网络》 谢希仁
参考视频: B站方老师
第一章 概述
{
网络 -> 由若干结点和连接结点的链路组成
结点 -> 计算机,服务器,集线器,路由器。。。
因特网 -> 把网络连接到一起 组成一个超级网络
P4
ISP 因特网服务提供者。(Internet Service Provider)
上网 通过某个ISP 接入到因特网
NAP Network Acess Point 网络接入点
1.3 因特网组成
{
1.边缘部分 所有主机
2.核心部分 服务器,路由器-> 为边缘部分提供服务
P8
边缘部分又称为端系统
通信方式->
1.客户服务器方式
{
客户服务器方式
client
server
}
2.对等方式
{
也叫P2P文件分享 Person2Person
}
电路交换->
{
建立连接->占用通信资源
通话
释放连接-> 归还资源
}
->用于互联网->效率太低
->分组交换
{
存储转发技术
P12
一个报文 要发送的整块数据
->一个分组
每个整块数据加上首部(包头)
分组在传输时一段段地断续占用通信资源。
}
三种交换方式
{ p15
电路交换 ->适合大量数据传输
报文交换 -> 适合突发数据传输
分组交换 -> 适合突发数据传输 -> 存储转发 将较长报文划分为较短,固定长度的数据段。
{
路由器处理分组过程:
1. 将收到的分组放入缓存
2. 查找转发表,找到某个目的地址应该从那个端口转发
3. 把分组送到适当端口转发
}
}
计算机网络
{
P17
网络类别
广域网WAN (Wide Area Network)
城域网 MAN
局域网 LAN
个人区域网 PAN
}
{
公用网(public newwork)
专用网(private newwork)
}
}
}
计算机网络性能
{
速率 bit/s
带宽
吞吐率 单位时间内通过某个网络(信道,接口)的数据量
时延
时延带宽积
往返时间RTT 发送方发送数据开始到接收方确认总共经历的时间
利用率 信道利用率和网络利用率。 某信道有百分之几的时间是被利用的。 U = D0/ 1- U D0为网络空闲时的时延,U为网络利用率。
时延 P19
{
1.发送时延 = 数据帧长度(bit) / 信道带宽(b/s)
2.传播时延 = 信道长度(m) / 电磁波在信道上的传播速率(m/s)
3. 处理时延 分析分组的首部,从分组中提取数据部分
4. 排队时延
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
bit的传播速率基本不变,提高带宽加快的是发送速率
5. 时延带宽积 p21
时延带宽积 = 传播时延 x 带宽 单位bit
}
}
计算机网络体系结构
{
OSI TCP/IP
语法
语义
同步
各层完成的主要功能
{
差错控制
流量控制
分段和重装
复用和分用
连接建立和释放
}
除数据链路层每层给数据加首部,数据链路层加首部和尾部。
}
两个计算机传送数据
{
1.发起通信的计算机将数据通信的通路激活-> 发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收。
2. 告诉网络如何识别接收数据的计算机
3. 发起通信的计算机查明对方计算机是否已开机。
4. 发起通信的计算机确认对方计算机是否已做好接收和存储文件的准备工作
5. 若文件格式不兼容,则至少其中一个计算机应完成格式转换功能。
6.对各种差错或意外进行处理(如断点传送等)
}
协议P25 ->
{
语法
语义
同步
}
通信网络传送文件->
{
1.文件传送模块
2.通信服务模块
3.网络接入模块
完成的主要功能 P27
{
1.差错控制
2.流量控制
3.分段和重装
4.复用和分用
5.连接建立和释放
}
网络的体系结构{计算机网络各层及其协议的集合}
TCP/IP 的体系结构
{
应用层,运输层,网际层,网络接口层,物理层。
TCP{
三次握手
{
SYN = 1,0
syc同步序列编号 = x
ACK 确认序号标志位 = 0,1
ack 确认序列编号 = y
FIN 结束标志,用于释放连接。= 0,1
1. 客户端发送SYC(同步序列编号)(syc = x) 给服务器
2. 服务器收到syn包,确认客户的syn后自己也发送一个syn包。其中包括自己的syn = y 和回复对方的确认序号ack = x + 1
3. 客户端收到SYN+ACK 向服务器发送确认包seq=x+1,ack =y+1,此包发送完毕客户端和服务器进入TCP连接状态
}
四次挥手
{
1. 客户端发出释放信号FIN, 自己序列号 seq = u 进入FIN-WAIT-1状态
2. 服务器收到FIN后, 发出确认报文。 ACK = 1,ack = u + 1,自己的序列号seq = u。服务器进入CLOSE-Wait状态。
3. 客户端收到服务器确认请求,进入FIN-WAIT-2状态。等待服务器发送连接释放报文。服务器将最后数据发送完毕后,发送连接释放报文。FIN = 1 ,ack = u+1, 自己的序列号seq = w.
4.客户端收到连接释放报文后,发出确认。ACK = 1,ack = w + 1,自身序列号seq = u +1。
发出后进入TIME-WAIT状态。 经过2*MSL(最长报文段寿命)时间后,撤销相应TCB,进入CLOSED状态
服务器收到确认,进入CLOSED状态。
}
}
应用层{ HTTP DNS RTP ....
正在运行的程序
}
运输层{ TCP UDP
负责两个主机中进程的通信提供服务
运输层协议 P28
{
传输控制协议TCP 面向连接 提供可靠交付
用户数据报文UDP 无连接
}
}
网络层 IP
{
为分组交换网上不同主机提供通信服务。
主要网络层协议-> 无连接的网际协议IP(Internet Protocol)。
}
数据链路层 接口。
{
在两个相邻结点之间传递数据的协议。
将网络层交下来的IP数据报组装成帧和必要控制信息。
(同步信息、地址信息、差错控制)
}
物理层
{
传送比特流
}
一个数据传送的例子 P29
每一层都会为数据单元添加控制信息。
到数据链路层 会为数据单元添加首位两部分控制信息。
对等层次之间的数据单位 -> 协议数据单元PDU
}
第二章 物理层 P36 V6
{
机械特性 :所有接口形状尺寸,引线数目排列固定和锁定装置都完全一样
电气特性 接口电缆在各条线上的电压范围
功能特性 指明某条线上出现的某一电平的电压表示何种意义
过程特性 不同功能的各种可能事件的出现顺序
数据通信系统->
{
源系统(发送端)
传输系统(传输网络)
目的系统(接收端)
}
码元 : 时间域的波形表示数字信号时,代表不同离散数值的基本波形。 正弦波?
源系统{
源点
{
产生传输数据
}
发送器
{
调制器-> 将源点比特流编码。
}
接收器
{
解调器 -> 将传输线路上的信号进行解调
}
终点
{
目的站,信息输出
}
}
信号 P37
{
1.模拟信号 连续信号
2.数字信号 离散信号
}
信道 P38
{
单向通信(单工)
双向交替通信(半双工)
双向同时通信(全双工)
调制->
{
基带调制-> 只调频率
载波调制-> 带通调制 。 转换为模拟信号(光电转换)
调制方法->
{
调幅AM
调频FM
调相PM
}
}
常见编码方式 V6 25:05
{
不归零制
归零制 每一次正跳变为1 负跳变为0
曼切斯特 1-> 高电平跳低电平 0 低电平跳高电平
差分曼切斯特 1不跳变,0跳变
}
}
信道极限容量
{
影响因素
{
信道宽度 W
信噪比 S/N
}
香农公式
信道极限传输速率C
C = W log2(1+S/N) (b/s)
W:信道带宽,S: 信道内信号平均功率
N:信道内高斯噪声功率
S/N越大-> 极限传输速率越高。
}
传输媒体 P40
{
1.双绞线 P41
2.同轴电缆
3.光缆 P42
{
光纤通信波段中心(0.85um,1.30um,1.55um)
多模光纤
单模光纤
}
4.架空明线
P 45非导向传输媒体
{
无线传输. 波段通信
短波通信 电离层反射,高频通信。
卫星通信 微波
}
}
信道复用技术 P47 V9
{
频分复用,时分复用,统计时分复用
码分复用 CDMA V10
{
两个码片 S,T 这两个码片序列正交,即求内积 : S * T = 1/m∑st = 0 即 1111 0000 和 0000 1111 这两个码片就是正交的。
若 S * S^(-1) = -1 S*S = 1 S * T = 0
}
频分复用
{
用户分得的频带。用户在相同时间占用不同带宽资源。
}
P48
时分复用:将时间划分为时分复用帧(TDM),每一个用户在一个TDM帧中占用不同的时隙。
统计时分复用STDM
{
STDM帧。
}
码分复用 V10 CDM
{
码片-> 一个比特时间可以分为m个短的间隔。
发送1 发送m的码片序列
发送0 发送二进制反码
S站码片序列为 00011011
发 1 : 00011011
发 0 : 11100100
每个站分配的码片序列必须正交。
S,T,S^-1 为两个码片。S^-1为S的反码
S * T = 1/m ∑S_i * T_i = 0;
S * S = 1
S * S^-1 = -1
解码中 拿S * 信号S_x
-> 得到 1 收到1
-> 得到 -1 收到0
}
}
数据链路层
{
1.点对点信道 一对一
2.广播信道 一对多
功能:
1.封装成帧
2.透明传输
3.差错控制
1.封装成帧
{
在一段数据前后分别添加首部和尾部
MTU 最大传输单元。
SOH (Start of head) EOT (End of Tramission) 帧开始、帧结束标志
}
2.透明传输
{
字节填充 字符填充
发送端的数据链路层在数据(内部)出现SOH或EOT的前面加上一个转义字符"ESC"
SOH ESC EOT ESC SOH EOT
}
3.差错检测
{
误码率 BER
!循环冗余检验 CRC 检错
在发送端将数据划分为组,假定每组k个比特。
M = 101001 -> k = 6 在M后面添加n位冗余码(供检测用)。
n 为 p(事先约定的二进制数据)的位数减1位
二进制模2运算进行2^n * M运算 ,相当于在M后面加n个0.
得到的 k+n位数 除 n+1 位的除数P 得出商Q,余数R 余数R比P少一位,即R是n位的
将余数R作为冗余码加回 2^n * M 得到传输数据tsD
接收方判断接收数据tsD是否能够除尽P 能除尽则无错,否则传输错误。
}
CRC -> 不能做到“可靠传输”-> 不能做到不重复,不丢失,不失序。
}
点对点协议PPP
{
1.PPP协议的特点
用户到ISP的链路使用PPP协议
协议组成部分
{
1.ip封装到串行链路的方法
2.链路控制协议LCP
3.网络控制协议NCP
}
PPP 帧格式 点对点传输
{
透明传输: 不管要传输的是什么数据都可以传输成功
字符填充,比特填充
同步传输 :
{
比特填充 :HDLC方法一样
0比特填充
发现5个1 立即填入一个0
接收端每5个1就删除后面的0
}
异步传输{
字符填充:
0x7E -> 作为开头和结尾 。
将数据部分所有0x7E转变为(0x7D,0x5E)
将数据部分所有0x7D转变为2字节序列(0x7D,0x5D)
}
}
广播信道的数据链路层 (局域网)
{
局域网
{
星型网络,总线网络,环形网络
时分,码分,波分,频分复用
标准: DIX Ethernet V2
IEEE 802.3
逻辑链路控制 : LLC
媒体接入控制 : MAC 硬件地址 -
网卡- > 网络接口层 -> 网络适配器
{
串行/并行转换
数据进行缓存 crc
驱动
实现以太网协议
}
CSMA/CD 协议
{
无连接工作
{
直接发送数据,无需发回确认
}
{
曼彻斯特 中心0 低到高 1高到低
采用 差分曼彻斯特编码 遇到1 跳变 遇到0不跳
}
{ P14:
CSMA/CD : 载波监听多点接入/碰撞检测
{
A发送到B 需要 时间为 a
B收到数据时间为 a
若A 收到数据时间 < 2a 则说明发生了碰撞
> 2a 则没有发生碰撞
争用期: 在2τ时间内没有检测到碰撞后不会发生碰撞。
二进制指数类型退避算法 P15
发生碰撞后推迟随机时间再发数据。[0,1,….,(2^k -1)] 得到随机数 r
重传时延为 r * 2τ
k = min[重传次数,10]
重传超过16次时 丢弃当前帧,向高层报告
512bit = 10M/s * 51.2us
10M / s 的网速下 争用期 可发送512bit 64字节。
故64字节为最小帧长。
强化碰撞。
先听后发 , 边听边发, 冲突停止 , 延迟重发
}
集线器
{
RJ45 插头(网线头)
10 BASE — T
10m/s 基带 双绞线
}
信道利用率:
64bit < 帧长 < 1518bit
P16
信道利用率 = 1/(1+a) a = T_0/τ
MAC: 硬件地址 48位
检测是否是发往本站的。
单播 mac地址
广播 48个1的地址
一个mac帧:
前同步码 — 帧开始定界符(10101011)) 目的地址(mac) + 源地址 (mac)
+ 类型 + ip数据报 + FCS(帧尾 帧校验序列。 用于CRC
有效地mac帧为 64 - 1518 字节
}
在数据链路层扩展以太网
{
网桥 -> 以太网交换机
根据MAC帧目的地址对 数据进行转发和过滤
交换机:
存储转发方式: 帧缓存后再处理
直通式: 只识别转发,不处理
交换机自学习功能:
交换表
生成树协议:
防止交换机出现环路。 广播风暴
生成树协议STP IEEE 802.1D 屏蔽掉 发生广播风暴的接口。
}
虚拟局域网 VLAN
{
VLAN标签 在MAC帧前加上VLAN标签
协议 802.1
}
网络层:
面向连接———无连接
虚电路: 建立连接前,占用了对应资源。
数据报服务: 可靠性由用户主机自己保证,不建立连接。
无连接的尽最大努力交付。
网络层不保证可靠传输,只尽最大努力交付。
P22
网际协议IP
:地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议ARP
中间设备:
物理层 转发器
数据链路层 网桥
网络层 路由器
网络层以上 网关
通过IP协议的虚拟互联网络
P22 24:16
IP地址 : 网络号 net-id 主机号 host-id 共32位
共5类 : ABCDE类 D类为多播地址 E类: 今后使用
32位每八位一分 10000000 00001011 00000011 00011111
点间隔得到 128.11.3.31
P23 20:00
全0 代表全部不关心
全1 代表全部不关心。
127 用作本地软件的环回测试
255.255.255.255 代表发往全世界的所有主机的广播(虽然收不到)
1.Ip地址是分等级的地址结构:
路由器根据 网络号转发分组
2.实际ip地址标志一个主机或路由器或一条链路的接口。
3.用转发器或网桥连接起来的若干个局域网仍然是一个网络,具有同样的net-id
4.所有分配到网络号net-id的网络,无论是范围还是大的广域网都是平等的。
}
IP地址
硬件地址(或物理地址)
IP数据报 前部封装IP地址
IP层抽象屏蔽了下层的复杂细节。
地址解析协议:ARP
通信时使用了2个地址 IP地址,MAC地址
P25
A广播发送ARP请求分组
{
1.B有回应 , 发送到B 记入ARP缓存,减少广播数量。
(ARP诈骗)
2.无回应
}
ARP解决找到同一个局域网的某个路由器的地址问题。
ARP的四种情况 30:00
P26
IP数据报:
首部和数据两部分组成。
首部的前一部分是固定长度,20字节,所有IP数据报必须具有的。
首部包含(固定部分,可变部分)
固定部分:
位数
0-4bit:
版本号(ipv4,ipv6)
4-8bit:
首部长度(15个单位,最大首部长度为60字节,最短20字节)
8-16bit: 区分服务(QoS),很少使用。
16-32bit:
总长度,因此最大长度为65535字节
32-48bit: 标识 计数器作用,用来产生IP数据报标识
48-51bit: 标志位(flag)
目前只有前两位有意义。
标志最低位MF(More Fragment) MF = 1表示后面还有分片
DF(Don't Fragment) DF = 0才允许分片
51-63 bit: 片偏移
P27 特定主机路由:
默认主机路由。
路由表:
{
1.直连路由
2.特定路由
3.动态路由
4.默认路由
}
P28
划分子网,构造超网
{
32位。
IP地址 :: = {<网络号>,<子网号>,<主机号>}
子网号-> 从主机号借位。
网络地址 = IP 地址 & 掩码地址
子网掩码-> 用于找出IP地址中的子网部分
{
32位
数据位为1: 对应IP地址的网络号和子网号区间。
数据位为0:IP地址中对应位位主机号。
三级IP地址与子网掩码进行AND运算->
获得子网IP地址。
!! IP和子网掩码必须同时使用。
}
P29 子网
{
判断是不是同一个网络: 子网掩码必须是一样的。
路由表带上 子网掩码,判断是否同一网络,ip地址和目标子网掩码做与运算。
}
无分类编制CIDR (route aggregation)
{
路由聚合(超网)
使用长度网络前缀。消除ABC类地址以及 划分子网的概念。
32位
网络前缀 + 主机号
CIDR不使用子网了,但仍然使用掩码这一名词。
网络前缀:
最长前缀匹配。(路由表索引路径,前缀越长约好找到)
二叉线索查找路由表。
}
P30 网际控制报文协议(ICMP)
{
ICMP 报文格式
0-8 类型
8 - 16代码
16- 24检验和
ICMP 差错报告报文
ICMP 询问报文
差错报文种类
{
终点不可达
时间超过
参数问题
改变路由(重定向)
ICMP丢失报告不会被报告。
对分片数据差错报文只会发送一次。
对多播地址数据报不发送ICMP差错。
}
ICMP 询问报文
{
回送请求,回答报文
时间戳新球、回答报文
用于Ping测试。
ping www.baidu.com
tracert www.baidu.com 测试到目标服务器有多少路由器。
早期ddos攻击--> tarcert 超量攻击。
}
}
P31 路由选择协议。
{
内部网关协议 RIP OSPF BGP
RIP :最短路径协议。
{
最大路径为16
好消息传的快,坏消息传得慢
}
RIP2 协议
{
协议中加上了子网掩码
下一跳路由器地址
}
OSPF 最短路径优先
{
使用Dijkstra提出的最短路径算法SPF
}
BGP
{
}
}
路由器构成
{
1. 路由器->典型的网络层设备
输入端口
交换结构-分组处理(转发表) -> 路由表
输出端口
}
p32 IPv6
{
ipv6数据报 : 128位
基本首部(40字节),有效载荷(不超过65535字节)
TTL字段: 跳数限制
单播
多播
任播
ipv6 8段16进制ip地址
0压缩写法
ipv4 -> ipv6过渡技术
{
双协议栈
隧道技术
}
地址解析协议ARP 和ICMP 合并位
ICMPv6
组管理协议 IGMP
虚拟专用网 VPN
网络地址转换NAT
MPLS 多协议标签转换
}
}
P33 运输层
{
传输层协议TCP/UDP
应用进程之间的通信
传输层: ->复用/分用
对应到每一个应用进程
TCP分用 UDP分用
面向连接: TCP 可靠
面向无连接: UDP 效率高
运输层端口号:端口用16位端口号标志。
通过IP+运输层端口号可以找到互联网上唯一主机的唯一进程。
服务器端口号:
熟知端口: 0~1023
登记端口号: 1024~49151。使用这个端口号必须在IANA等级
客户端使用的端口号:
又称短暂端口号: 49152~65535。留给客户进程选择暂时使用。
常用熟知端口号:
UDP:
RPC 111
DNS 53
TFTP 69
SNMP 161
SNMP(trap) 162
TCP:
SMTP 25
FTP 21 20
Telnet 23
HTTP 80
HTTPS 443
进程之间的逻辑通信
}
P34
{
UDP
{
无连接的
尽最大努力交付
面向报文的
拥塞控制
支持一对一,一对多
首部开销很小
一次交付一个完整的报文
}
P35
TCP 面向连接的运输层协议
{
TCP连接的端点叫套接子(socket)或插口
socket = (IP地址: 端口号)
1.停止等待协议
2.超时重传
分组和确认分组都必须编号。
自动重传请求ARQ
流水线传输
提高信道利用率。
回退N帧方式。
}
P36
连续ARQ协议
{
滑动窗口
GO-back-N (回退N)
TCP首部
{
源端口
目的端口
序号 A-> B
确认号 让你下一次发的号码
数据偏移
保留
标志位{
URG : 紧急标志位
ACK : 确认标志位
PSH : 推送标志位(交付一次的标志位)
RST :
重连标志位
SYN : 同步标志位
FIN : 终止标志位
}
窗口:滑动窗口(接收窗口大小标志)
检验和
紧急指针:紧急数据位置
选项(长度可变)
填充
}
发送字节状态:
{
1.已发送并收到确认
2.已发送但未收到确认
3.允许发送但尚未发送
4.不允许发送
2,3占用窗口位
迟迟未收到确认的,回退N帧数
}
发送缓存 发送窗口
加权平均往返时间RTT
新的平均往返时间
Karn算法
选择确认SACK算法
}
利用滑动窗口实现流量控制
{
让发送方发送速率不要太快
动态改变串口大小 rwnd = ?
}
死锁问题
{
TCP持续计时器。
->到时-> 零窗口通知。
->发送1字节数据。
}
糊涂窗口综合征-> Nagle算法
TCP 流量控制 拥塞控制
{
流量控制: 发送窗口控制
拥塞控制:
真正发送窗口值 =
Min(公告窗口值, 拥塞窗口值)
拥塞判断:
1.重传定时器超时
2.收到三个相同(重复的)的ACK
TCP控制算法:
慢开始:每经过一次传输轮次,窗口就加倍。
拥塞避免:
快重传:
快恢复:
主动队列管理AQM
先进先出FIFO
随机早期检测RED
}
P39
TCP: 运输连接管理
{
客户,服务器
TCP连接建立:
三次握手
{
ACK 确认标志位
ack 确认位
seq 序列号
SYN 建立连接请求标志位
1. 客户发送请求字段
seq = x(同步序列编号),ACK = 0
SYN = 1
2. 服务器收到请求,同意。发回确认:
SYN = 1 ,Ack = 1
确认号ack = x + 1,自己的序号seq = y
3. 客户收到确认,发送客户端确认
ACK = 1,seq = x + 1,ack = y + 1
}
四次挥手
{
FIN 连接释放标志位
1. 发送连接释放请求 FIN= 1,seq = u
2. 服务器收到信号,同意。ACK = 1,seq = v , ack = u + 1
3. 服务器发送 FIN = 1 ACK = 1,seq = w ,ack = u +1
4. 客户端发送最后一次信息,同步序号seq仍为u+1,ACK = 1,ack = w + 1
(客户发送后,2个MSL-Time(超时时间的两倍)的等待时间)
}
TCP可靠传输
{
建立连接: 三次握手
发送数据: 窗口(序号,发送窗口+接收窗口),确认机制,流量控制,拥塞控制,超时重传
连接释放: 四次挥手
}
}
P40 应用层
}