导图社区 计算机网络脑图
以下介绍了计算机网络的应用层、传输层、网络层、链络层、物理层、网络安全、未来网络的前沿技术等,收藏下图了解吧!
编辑于2021-09-05 22:37:59计算机网络
应用层
应用层协议原理
网络应用的体系结构
CS模式——扩展性比较差
P2P体系——扩展能力强但管理困难
主机对直接连接 每一个主机即是客户端也是服务器
混合模式
服务器记录Ip与携带资源 资源交换时是主机对直连
进程通信
客户进程与服务器进程的定义
发起通信的进程是客户 等待被 通信的是服务器
进程与计算机网络间的接口API-socket套接字定义
套接字是同一台主机内应用层和传输层的接口,也是应用程序和网络之间的接口(TCPsocket值代表接收方和发送方地址的四元组整数 代表着一个会话进程 UDP socket值仅仅是接受方的地址二元组 代表一个本地标识
进程寻址
主机地址-IP 以及是Tcp/Udp
指定接受进程的socket编号——端口号
传输层服务要求
可靠数据传输
吞吐量
定时
安全性
UDP和TCP都没有加密,明文通过互联网传输
可以在应用层搭SSL套接字,从而进行加密(https=http+ssl)
因特网提供的传输层服务
TCP
可靠的传输服务
流量控制(发送接收速度协调【和路径无关】)
拥塞控制(网络堵塞的时候调节发送方速度)
不能提供的服务:时间保证、最小吞吐量保证和安全
面向连接(端系统握手后建立的连接)
UDP
不可靠的数据传输
解决了TCP时间长的问题,适合实时多媒体的应用(流媒体/Internet电话)
应用层协议
作用
定义报文类型 报文语法 语义 何时发送报文 怎么响应报文
例如
web-http
电邮-smtp
本书涉及的网络应用
web 文件传输 电子邮件 目录服务 流视频 文件分发服务-P2P
Web与HTTP
HTTP概况
HTTP:超文本传输协议 是Web的应用层那个协议
使用TPC(服务器可以建立多个Socket来应对来自不同主机的Web请求)
无状态服务器:不需要维护客户端的状态(好处:简单)
非持续连接和持续连接
非持续连接(http1.0):传输完一个Http就关掉了,下次要重新建立连接
每次响应的时间:2*RTT(往返时间)+传输时间
持续连接(http1.1):传输完不关,下次继续请求回复
HTTP报文格式
两种类型的HTTP报文:请求、相应
请求报文:请求行(Get(拿)/Post(提交/上载)/Head(请求要头-用来建索引)命令)+首部行(user-agent(用户代理-即浏览器),connection:可以设置连接完之后是否关闭来达到持续与非持续)
响应报文:状态行(协议版本、状态码、相应状态信息)+首部行(Connection、Date、Server、Last-Modified、Content-Length、Content-Type)、数据【有状态码但是是无状态协议 不需要存储用户信息,有需要可以使用cookie】
用户与服务器的交互 cookie
组成部分
HTTP响应报文中有个cookie的首部行
HTTP请求报文中有一个cookie的首部行
用户客户端系统中保留一个cookie文件,由用户的浏览器管理
在Web站点有一个后端数据库
能带来什么
用户验证、购物车、推荐、用户状态
cookies和隐私
cookies允许站点保留用户信息
web缓存
目的:不访问原始服务器,就满足客户需求(在局域网内部安装一个Proxy缓存节点)
缓存既是客户端又是服务器,一般由ISP安装
为什么要使用web缓存
降低客户端请求响应时间,降低服务器负载
减少机构内部网络与Inernet接入链上的网络流量
条件get方法
文件传输协议与FTP
作用
向远程主机上传输文件或者从远程主机上接收文件
21号端口,TCP传输协议
特点:1.有状态协议【相对于HTTP无状态协议】 2.控制命令和数据传输是两个TCP连接
电子邮件与SMTP
SMTP
邮件服务器之间用SMTP协议发送报文
传输协议TCP 端口25
传输三个阶段:握手,传输报文,关闭
命令/响应交互
命令:ASCII文本(可阅读)(所有发送的信息都要包含在ASCII码内,否则不允许传)
响应:状态码和状态信息
使用的是持久连接
与HTTP的对比
HTTP:拉(pull) SMTP:推(push)
两者都是ASCII形式的命令/响应交互/状态码
HTTP:每个对象封装在各自的响应报文中(会包括其他对象链接 但不会包括其他对象)
SMTP: 多个对象封装在一个报文中
邮件报文格式
首部行:
To:
From:
Subject:
邮件访问协议
目录服务与DNS
DNS提供的服务
主机名到IP地址的转换(最主要)
主机别名(规范名是便于管理 别名是便于访问)-别名-规范名-IP
邮件服务器别名(别名-规范名-IP)
负载分配
DNS工作机理概述(如何命名 解析 维护)
总体思路和目标
分层的、基于域的命名机制
域名是从本域(树枝名/主机名)往上直到树根(顶级域名);
域的域名:可以用于表示一个域
主机的域名:一个域上的一个主机
域名的管理
一个域管理其下子域,创建新域,争得所属域同意
域和物理网络无关
若干分布式的数据库完成名字到IP地址的转换
运行在UDP的53号端口
负责的是核心的Internet功能,但以应用层协议实现
分布式、层次数据库
作用:维护域名-IP地址(其他)的映射关系
层次数据库上的字段格式
域名 domain_name
TTL:生存时间(缓存 性能考虑)
class类别:对于Internet值为In
Value值:对应的IP地址
Type:别名/子域划
本地DNS服务器获取IP地址方式
迭代查询
递归查询(根服务器压力很大)
DNS缓存
DNS记录和报文
DNS报文
报文首部区域
标识符(ID)
flags(查询/返回 希望递归 递归 )
问题区域
回答区域
权威区域
附加区域
在DNS数据库插入数据
文件分发与P2P
P2P体系结构的扩展性
CS vs P2P 举例
P2P分类
非结构化P2P
定义:两个peer之间的通信是随机的、任意的
分类
集中化目录
完全分布式(没有中心服务器,泛洪式查询)
混合体KATAZ(组内是集中式 组长组长之间是文件分布式)
DHT(结构化)P2P
定义:peer之间通信可以构成环/树等更复杂的关系
维护的是树状或者环状拓扑结构
BitTorrent(P2P文件分发)
文件被分为一个个块256KB
网络中这些peers发送接受文件块,相互服务(围绕一个文件相互服务)
视频流化服务和CDN:上下文
解决方案:分布式、应用层面的基础设施
因特网视频
HTTP流和DASH
DASH:动态自适应流化在HTTP上的
内容分发网
CDN策略
集群选择策略
TCP套接字编程以及UDP套接字编程
传输层
概述和传输层服务
理解传输层工作
多路复用/解复用
可靠数据传输
流量控制
拥塞控制
传输服务与协议
服务
发送方:报文分成报文段没然后传递给网络层
接受方:将报文段重组成报文,然后传递给应用层
协议:TCP&UDP
多路复用与解复用
在发送方主机多路复用
从多个套接字接受来自多个进程的报文,根据IP地址和端口号等信息加以封装
在接受方主机多路解复用
根据报文段头部的IP地址和端口号将接收到的报文段发给正确的套接字
无连接传输:UDP
nofills, bare bones internet传输协议
尽力而为服务,报文可能丢失/乱序
无连接 没有握手
应用
流媒体
DNS
SNM
UDP上实现网络传输
在应用层增加可靠性
应用特定的差错恢复
UPD校验和
目标:检测在被传输报文段的差错(例如比特反转)
发送方
将报文段视为16比特的整数
校验和:报文段的加法和
发送方将校验和放在UDP的校验和字段
接受方
计算接收到的报文段的校验和
检查计算出的校验与校验和的字段内容是否相等
不相等:检查到差错
相等:没有检测到差错 也许还是有差错—残存差错
可靠数据传输原理(RDT)【非常重要】
RDT是应用层、传输层、链路层都很重要是网络Top10问题
问题描述:rdt(可靠数据传输realiable data transfer)udt(不可靠数据传输unrealiable data transfer)
rdt_send()-udt_send()-udt_rcv()-deliver_data
RDT原理(发送方和接受方都是FSM有限状态机)
RDT1.0-RDT2.0-RDT2.2(NAC FREE)-RDT3.0(超时重传,解决了丢失问题,但存在效率低的缺点)
滑动窗口协议
发送缓冲区
发送缓冲区的大小
停止等待协议:缓冲区大小=1
流水线协议:缓冲区大小>1,合理的值,不能很大,链路利用率不能超过100%
GBN:go back n一旦失序,重新传n个(可以很好应对接收窗口为1时),只需设置一个超时定时器
SR:selected return 一旦失序,缺啥传啥,发送窗口里的每一个都需要设置一个超时定时器
GBN和SR对比
GBN:优点:简单所需资源少;缺点:回退N步代价大
SR:优点:出错重传代价小;缺点:多个计时器,资源多
适用范围:GBN出错率低的地方;SR链路容量大的地方(一点出错的代价大,容易出错)
滑动窗口:发送缓冲区的一个连续子集(已利用的部分—发送但未确认的序号)
接受缓冲区=接受窗口
接收窗口用于控制哪些分组可以接受
接收窗口=1:接收窗口只能顺序接收;
接收窗口>1: 接收窗口可以乱序接收;
滑动机制:高序号分组乱序到来,缓存但不交付;(可以保序)
最大缓冲区的大小
GBD:2^N-1
SR:2^(n-1)
面向连接的传输TCP
段结构
应用层下来的报文被封装成一个个MSS,MSS要加上TCP的头部,再加上IP头部,通过以太网传输时形成MTU(最大传输单元),MTU的size是1500B,IP头部大小和TCP头部大小是20B,所以MSS大小是1460B
一个报文段的结构如下(下面每一条是32bit,5行就是20B)
源端口号|目标端口号
序号(字段初始位置/MSS初始偏移量/首字节在字节流的编号)
确认号(发过来的ACK的序号例如:ACK555 确认号555 意义:期待555及以后的数据)
首部长度|保留未用|U|A|P|R|S|F(标志位)|接收窗口(用于流量控制)
校验和|紧急数据指针
(例子中:两个互为接受方和发送方,Seq是自己传给对方的字节流的数据开始点,Ack是希望对方传给自己的字节流开始点)
可靠数据传输
TCP在IP不可靠服务的基础上建立了RDT
管道化的报文段
GBN or SR
累计确认(像GBN)
单个重传定时器(像GBN)
是否可以接收乱序的没有规范
通过以下事件触发重传
超时(只重发那个最早的未确认的字符段:SR)
重复的确认
快速重传(冗余ACK收到,但是定时器未触发)
流量控制
含义:接受方控制发送方,不让发送方发送的太多、太快以至于让接受方的缓冲区溢出
手段:
接受方在向其发送方的TCP段头部rwnd字段”通告“其空闲Buffer大小
发送方限制未确认(in-flight)字节个数<=接受方发送过来的rwnd值
保证接收方不被淹没(接收数据溢出)
连接管理(一次握手就是一次发送接收报文)
在正式交换数据之前发送方和接受方之间握手建立联系
同意建立连接
两次握手:不行
变化的延迟(连接请求的段没有丢失,但可能超时)
由于丢失造成的重传
报文乱序
看不到对方
解决方案:变化的初始序号+双方确认的序号(3次握手)
第三次握手传输客户端同意+传输数据
同意连接参数
关闭连接
4次挥手(并不完美,但是每一方都收到了两次消息,以一定概率确保发送断开信息被送到)
拥塞控制原理
拥塞的表现
分组丢失(路由器缓冲区溢出)
分组经历比较长的延迟(在路由器的队列中排对)
拥塞控制方法
端到端拥塞控制(TCP拥塞控制)
没有来自网络的显式反馈
端系统根据延迟和丢失事件推断是否有拥塞
TCP采用的方法
网络辅助的拥塞控制
路由器提供给端系统以反馈信息
单个bit置位,显示有拥塞
显示提供发送端可以采用的速率
案例:ATM ABR拥塞控制(网络辅助的拥塞控制)
ABR调节速率(Available bit rate)
RM信元记录最大带宽和拥塞状况
TCP拥塞控制
网络辅助拥塞控制的缺点:路由器的负担会比较重
端到端的拥塞控制机制
路由器不向主机反馈拥塞有关信息
路由器负担轻
符合网络核心简单的TCP/IP原则
端系统根据自身得到的信息,判断是否发生拥塞,从而采取动作
拥塞控制的几个问题
如何检测拥塞
轻微拥塞
有关某个段的3次重复的ACK
拥塞
某个段超时了(大概率是拥塞,小概率是校验没过)
控制拥塞
如何控制发送端的速率
维持一个拥塞窗口的值:CongWin
发送段限制已发送但是未确认的数量的上限是Congwin
已发送未确认的字节数量<=CongWin
从而粗略的控制发送方的往网络中注入的速率
rate=CongWin/RTT
若考虑了拥塞和流量两个问题:
SendWin=min{CongWin,RecvWin}
拥塞控制策略
慢启动
慢启动是指数级增加
到拥塞-从一重新开始到CongWin/2作为阀值慢启动,再线性增
到冗余ACK-从CongWin/2线性增
AIMD:线性增,乘性减
一般是到冗余ACK就变为一半,再线性增
超时事件后的保守策略
总结
为什么TCP是公平的
两个竞争的TCP会话:
加性增加,斜率为1,吞吐量增加
乘性减,吞吐量比例减少
最终收敛到X=Y
UDP:发出速度恒定(但是对TCP不友好)
TCP连接之间可能根据主键见会话数不同以及接收速率不同导致不一样的吞吐量。——相对公平;
网络层
导论
数据平面
本地,每个路由器的功能(是硬件),有IP协议
决定从路由器输入端口到达的分组如何转发到输出端口
转发功能
传统方式:基于目标:地址+转发表
SDN方式:基于多个字段+流表
控制平面
网络范围内的逻辑(是软件),有路由协议
决定数据报(网络层往下的传输单元datagram)如何在路由器之间路由,决定数据报从源到目标主机之间的端到端的路径
2个控制平面的方法
传统的路由算法:在路由器中被实现
software-defined-networking(SDN):在远程的服务器中实现
传统方式:数据平面和控制平面紧耦合都在分布式路由器上;缺点:不好更改;
SDN方式:逻辑集中的控制平面,控制平面在远程集中服务器,分组交换器(路由器)做转发(数据平面);
网络服务模型
对于单个数据报的服务
可靠传输
延迟保证
对于数据报流的服务
保序数据报传送
保证流的最小带宽
分组间的延迟差
网络层服务模型举例
IP-best effort-(啥也不保证-一无是处)
ATM-CBR(恒定速率)-恒定带宽-保证保序和延迟
ATM-VBR(变化速率)-保证带宽-保序延迟
ATM-ABR(可用比特率)-保序且有拥塞反馈
ATM-UBR(不指名比特率)-保序
路由器的构成
高层面(非常简化的)路由器体系架构
路由:运行路由选择算法/协议(RIP,OSPF,BGP)-生成路由表
交换结构
讲分组从缓冲区传输到合适的输出端口
交换速率:分组可以按照改速率从输入到输出
运行速度经常是单个链路速度的若干倍
N个输入输出端口:交换机的交换速度是输入线路的N倍比较理想,才不会成为瓶颈【吞吐量是N倍的单个链路】
三种典型的交换结构
memory(第一代,是用内存做交换机)
bus(用fabric做交换机)
crossbar(用互联网络做交换机)
IP:Internet Protocol
网络层的协议
路由协议:路径选择
IP协议:地址约定;数据报格式;分组处理的约定
ICMP协议:错误报告;路由器信令
数据报格式(32bit一条)
IP协议版本号|头部长度|数据类型|数据报总长
分片重组使用的16-bit identifier(ID认证)|flgs(是不是最后一个分片,最后一个分片是0)|fragment offset(分片偏移,用来分片的时候做排序的)
TTL(生存时间/每过一个路由器减一)|将载荷交付给的上层协议(TCP/UDP的端口号)|checksum
IP源地址
IP目标地址
数据
分片
网络链路有MTU(最大传输单元)-链路层的帧所携带的最大数据长度根据不同的链路类型会有不同大小的MTU
大的IP数据报在网络上被分片(fragment)
一个数据报被分割成若干个小的数据报
相同的ID
不同的偏移量
最后一个分片标记为0
重组在目标主机上进行
IP头部信息用于标识,排序相关分片
IPv4地址
IP编址引论
IP地址:32位标示,对主机或者路由器接口进行编址
接口:主机/路由器和物理链路的连接处
路由器一定有多个接口(不然做不了转发操作)
主机可能有多个接口
一个IP地址和一个端口相关联
子网
什么是子网
一个子网的节点他们的IP地址高位相同。(IP地址=子网部分+主机部分)
一个子网内的网络无需路由器介入,子网内各主机可以直接在物理上相互可直接到达(IP层面上就一条,可以借助交换机,不借助路由器)
判断方法
要判断一个子网,将每个端口从主机或者路由器上分开,构成一个个孤岛
每一个孤岛(网络)都是一个可以被称之为subnet
举例:有六个子网
IP所连的物理网络有两种形式
一对一的长途链路(多条靠路由器)
局域网内部靠交换机的多点连接
IP网络的类型
ABC类为单播地址,一般我们使用的是C类地址,D类是广播地址
A类:地址最高位为0;7bit代表Network(126个网络),24位代表主机号(2^24-2个主机)
B类:最高位为10;14bit的network号(2^14-2个网络),16bit的主机(2^16-2个主机)
C类:最高位为110;21位的网络号,8个bit的主机(2^8-2=254)
D类:最高位为1110;多播地址
E类:最高位为11110;预留的地址;
互联网的路由,是以MAC网络地址为单位,并不以IP地址为单位。
每一个网络是一个表项,每一个网络内可以对应很多个主机,所以路由器内相近的子网是可以做聚集的(用同一个网络,即以一个子网(广义的子网,即公用同一个网络位的不同主机)为单位向外传输信息)
在查找网络路由表项的时候:
A类比较第一个字节(网络信息);B类前二个字节;C类前三个字节;
特殊IP地址
子网部分:全为0---本网络(0.0.0.0)
主机部分:全为0---本主机(网络部分.0)
主机部分:全为1---广播地址,这个网络的所有主机(网络部分.255)(即代表某个网络的全部主机)
特殊IP:127.x.x.x代表回路地址/测试地址(UDP/TCP-IP-回到本主机的UDP/TCP)
内网/专用IP地址
专用IP地址:地址空间的一部分供专有地址使用
永远不会被当作公用地址来分配,不会与公用地址重复
只在局部网络有意义,区分不同的设备
路由器不对目标地址是专有网络的分组进行转发
专有网络在ABC类都有一个范围
例如C类:即192.168.0.0-192.168.255.255
IP编址:CIDR
CIDR:Classless InterDomain Routing无类域间路由
子网部分可以在任意位置
地址格式:a.b.c.d/x 其中x是地址中子网号的长度
例如:200.23.16.0/23
由此产生了复原CIDR真正网络号的子网掩码
子网掩码:x位的1加(32-x)位的0;子网掩码和IP地址做与运算就能真正的算出网络号;
一台网络要配置
IP地址(可以用DHCP获取)
子网掩码
默认网关
Local Name Sever本地域名解析系统
NAT:网络地址转换
动机:本地网络只有一个有效IP地址;
省钱、可换局域网内设备无需通知外界,安全
16-bit端口字段——最多可以有六万多个端口同时连接
对NAT有争议的
路由器对端口号(第四层)做了处理
违反了end-to-end原则
NAT穿越问题:如果客户端需要连接NAT后面的服务器如何操作
IPv6地址
初始动机32-bit地址空间将很快会被用完
另外的动机
头部格式改变帮助加速处理和转发(下面是v4加重负担的机制)
TTL-1
头部checksum
分片
头部格式改变帮助QS
IPV6的数据报格式:
固定的40个字节头部
数据报传输过程中,不允许分片
V6和V4如何平滑过度
V6与V6之间跨岛通信通过隧道技术;
通用转发和SDN
匹配
行动
OpenFlow有关“匹配+行动”的运动实例
网络层:控制平面
路由选择算法
路由协议的目标:找到一个较好(跳数,延迟,金钱代价)的路由器序列从源主机到目标主机
路由算法的分类:全局(知道全局的拓扑结构link state),局部(只知道邻居的代价,通过递归distance vector)
link state(链路状态算法-即DIjkstra算法)
通过泛洪掌握全局拓扑结构
根据Dijkstra算法得到汇集树(到各点的最小代价PATH,时间复杂度n^2)
distance vector(距离矢量路由选择distance vector routing-适合更新路由表)
邻居告诉我他到所有目标的代价值,从而算出我到所有目标的代价值
LS算法和DV算法的比较
消息复杂度:(DV胜出)
LS:有n个节点,E条链路,发送报文O(nE)个;局部路由信息,全网传播;
DV:只与邻居交换信息;全局路由信息,局部传播;
收敛时间:(LS胜出)
LS: O(n^2)算法
有可能震荡
DV: 收敛较慢
可能存在路由环路
count-to-infinity问题
健壮性: 路由器故障会发生什么(LS胜出)
LS(坏消息传播慢)
节点会通告不正确的链路代价
每个节点只计算自己的路由表
错误信息影响比较小,局部,路由较健壮
DV
DV节点可能通过对全网所有节点的不正确路径代价
距离矢量
每一个节点的路由表可能被其它节点使用
错误可以扩散到全网
因特网中自治系统内部的路由选择(内部网关协议/ISP内部的)
RIP-用的是距离矢量算法DV算法
OSPF-开放最短路径优先LS算法
使用LS算法
OSPF通告信息中携带:每一个邻居路由器一个表项
通告信息会传遍AS全部(通过泛洪)
在IP数据报上直接传送OSPF报文(而不是通过UDP和TCP)
IS-IS路由协议:几乎和OSPF一样
ISP之间的路由选择(外部网关协议)
层次路由
一个平面的路由
一个网络中所有的路由器地位一样,通过LS、DV或者其他路由算法,所有路由器都要知道其他的路由器如何走,所有的路由器在一个平面
平面路由器的问题:1.规模巨大,代价巨大。2.管理问题(希望自己的信息是不可见的)
层次路由:将互联网分成一个个AS(路由器区域)
某个区域内的路由器集合,自治系统
一个AS用ASN唯一标识
一个ISP可以一个或多个AS
路由变成了两个层次:AS之间(BGP边界网关协议)和AS内部(RIP/OSPF)
解决了规模性问题和
BGP(边界网络协议Border gateway protocal)
改进的路径矢量算法(传消息时会带着路径以检查是否有环)
内外网关协议为何如此不同:内部intra 外部inter
策略层面
inter-AS:管理员需要控制通讯路径,谁在使用它的网络进行数据传输【考虑的东西比较多】
intra-AS:无需策略。只关注可以尽快路由
规模层面
inter:必须考虑规模问题,以便支持全网数据转发
Intra:内部路由规模不是大的问题,太大了就分AS,大体可控即可
性能
Intra-AS:关注性能;
Inter-AS:关注策略;
SDN控制平面
SDN提供了南向接口让路由器进行匹配行动;提供北向接口供给新生态软件
交换机和SDN的接口使用的是OpenFlow协议
链路层
引论和服务
链路层就是处理节点之间的连接方式
点到点的连接(广域网之间的一对一,链路网主要功能就是封装解封装)
多点连接(局域网之间的共享性介质通过网路交换机连接,功能更复杂)
链路层服务
成帧,链路接入
将相邻的两个节点完成可靠数据传递
这个服务有没有取决于链路是否可靠
链路可靠:以太网——那么链路层协议就不需要提供这个服务,不提供可靠数据传递;
链路不可靠:WLAN——那么链路层协议就需要提供这个服务,提供可靠的数据传递
流量控制
使得相邻的发送和接受方的节点速度匹配
错误检测
差错由信号衰减和噪声引起
接受方检测出错误
通知发送端进行重传或者丢弃帧
差错纠正
接收端检查和纠正bit错误,不通过重传来纠正错误;
半双工和全双工
半双工:链路可以双向传输,但一次只有一个方向
链路层服务在哪里实现
主机上的网卡/路由器上的网卡(网络适配器)(可以同时发同时接)
差错检测和纠正
错误检测
EDC错误控制编码
校验和/奇偶校验/CRC循环冗余校验法(先异或运算,再数据位D附上的r位冗余位EDC整体可以被约定好的生成多项式整除【r位冗余位是可以通过D与G被计算出来的】
CRC检错性能描述
能够检查出所有1Bit错误
能够检查出所有双Bits错误
能够检查出所有长度=r或者<r位的错误
出现长度为r+1的突发错误,检查不出的概率是1/2^r-1
出现长度大于r+1的突发错误,检查不出的概率是1/2^r
多点访问协议(MAP)
MAC(媒体访问控制)协议分类
信道划分
把信道划分成小片(时间、频率、编码)
分配片给每个节点使用
信道划分MAC协议:TMA(是)FDMA(频分多路)
随机访问
信道不划分,允许冲突
冲突后恢复
随机存取协议规定
如何检测冲突
冲突后如何恢复(如:通过稍后的重传)
随机MAC协议
时隙ALOHA
ALOHA
CSMA(发前侦听),CSMA/CD(边说边听,有限链路可以不用给确认),CSMA/CA(无线网络用的冲突检测;)
发送方:1.如果站点侦测到信道空先持续DIFS长,则传输整个帧(no CD)2.如果侦测到信道忙碌,那么选择一个随机回退值,并在信道空闲时递减该值,如果信道忙碌就不变。数到0就发,如果没有收到ACK,就增加回退值,重复2
CA无线链路特性,需要每帧确认:例如:由于隐藏终端问题,在接收端可能形成干扰,接受方没有正确收到。链路层可靠机制)
依次轮流
轮询
主节点依次询问每个节点依次传送
从节点一般比较“dumb”
缺点:轮询开销带;每个节点等待时间;单点故障
令牌传递
控制令牌(TOKEN)循环从一个节点到下一个节点传递
令牌报文:特殊的帧
缺点:令牌开销带宽;每个节点抓住令牌的延迟;单点故障(令牌丢失复杂机制无法重新生成令牌)
但是有很多数据传输的节点可以获得较长的信道使用权
轮流协议有上面两种的优点,但比较复杂
信道划分MAC协议
共享信道在高负载时是有效公平的
在低负载时效率低下
随机访问MAC协议
在低负载时效率高,高负载时冲突开销大;
总结
LANs
addressing,ARP
32bitIP地址
网络层地址
用于使数据报到达目的IP子网:前n-1跳
从而达到子网中的目标节点,最后一跳
LAN(MAC/物理/以太网)地址
用于使帧从一个网卡传递到与其物理连接的另一个网卡(在同一个物理网络中)
48bit MAC地址固化在适配器的ROM,有时也可通过软件设定
理论上全球任何两个网卡的MAC地址都不相同
为什么网络地址和MAC地址分离
IP地址和MAC地址作用不同
IP地址是分层的:一个子网所有站点的网络号一致,路由聚集,减少路由表;希望网络层地址是配置的:IP地址完成网络到网络的交付。
MAC地址是一个平面的
网卡在生产时不知道被用于哪个网络,因此给网卡一个唯一标识。用于区分一个网络内部的不同网卡即可。
可以完成一个物理网络内部节点到节点的交付;
分离好处
网卡坏了,ip地址不变,可以捆绑到另一个网卡上;
物理网络还可以除IP协议之外支持其他网络层协议,链路协议为任意上层网路协议(如IPX)
捆绑的问题
如果仅仅使用IP地址,不用mac地址,那么它仅支持IP协议
每次上电都要重新写入网卡IP地址;
Ethernet
以太网最主流的LAN技术:98%占有率
最早广泛应用的LAN技术,比令牌网、LAN网简单、廉价;
总线-星型(hub)【逻辑上是总线型,物理上是星型-称为盒中总线】-星型(switch)
无连接、不可靠的服务
以太网的MAC介质:采用二进制退避的CSMA/CD介质访问控制行式(加倍的碰撞窗口)
switches
从一个端口收,发到另一个端口,发之前也要进行CSMA/CD;
链路层设备:扮演主动的角色(端口执行以太网协议)
对帧进行存储和转发
对于到来的帧,检查帧头,根据目标的MAC地址进行选择性转发;
当帧需要向某个网段进行转发,需要使用CSMA/CD进行接入控制
通常一个交换机端口一个独立网段
透明:主机对交换机的存在可以不关心
通过交换机获取的各节点好像这些站点是直接相连的一样
switch有MAC地址,无IP地址
自学习:即插即用,无需配置;
主机有一个专用和直接到交换机的连接;交换机缓存到来的帧;对每个帧进入的链路使用以太网协议,没有碰撞;双全工;
交换:A-A',B-B'可以同时传输,没有碰撞;
VLANS
带有VLAN功能的交换机(们)可以被配置成:一个物理LAN基础设施,虚拟成多个LANs;
基于端口的VLAN:交换机端口成组,以至于单个的交换机可以分成若干虚拟LANs;
附加:什么时候在LAN中,不碰=成功?
条件:帧在以太网中的传播时间>=2tao(tao为两点之间的往返延迟)
链路虚拟化:MPLS
数据中心网络
数万-数十万台主机构成DC网络,密集耦合,距离临近
电子商务
内容服务商
搜索引擎,数据挖掘
a day in the life of web request(建议了解-一个web页面请求的日常场景)
物理层
网络安全
什么是网络安全
机密性:只有发送发和预订的接收方能理解传输的报文内容
发送发加密报文
接收方解密报文
认证:发送方和接受方需要确认对方的身份
报文完整性:发送方、接受方需要确认报文在传输过程中或者时候没有被改变
访问控制和服务的可用性:服务可以接入以及对用户而言是可用的
加密原理
加密语言
对称密钥密码学:发送方和接受方的密钥相同
DES-AES(128bit成组加密)-密码块链(chain)
问题在于任何进行第一次的key交换;
公开密钥密码学:发送方使用接受方的公钥进行加密,接受方使用自己的私钥进行解密;
RSA(选择密钥方式)
n=p*q ; z=(p-1)*(q-1) ; 找到一个e和z互素,且选择一个d,使得ed-1可以被z整除;加密的密钥是(n,e)解密的密钥是(n,d)
加密解密是相同的算法;
加密代价是对称加密体系的100-1000倍;
认证
目标:bob需要alice证明她的身份
报文完整性
数字签名:可验证性、不可伪造性、不可抵赖性
报文摘要:对长报文进行公开密钥加密算法的实施需要耗费大量的时间,因此选取报文的一小部门进行加密签名。
报文摘要算法:MD5算法和SHA-1算法
密钥分发和证书
可信赖中介
对称密钥问题:相互通信的实体如何分享对称式密钥?-KDC在实体之间扮演可信赖中介的角色
KDC:服务器和每个注册用户都分享一个对称式密钥;
公共密钥问题:当Alice获得Bob的公钥时,她如何知道是Bob的public key而不是Trudy的?-CA是可信赖中介
CA:将每一个注册实体E和他的公钥捆绑
各个层次的安全性
安全电子邮件
Alice
产生随机的对称密钥,Ks
使用Ks对报文进行加密(为了效率)
对Ks使用Bob的公钥进行加密
发送Ks(m)和Kb(Ks)给Bob
Bob
使用自己的私钥解密Ks
使用Ks解密Ks(m)得到报文
方式二:Alice需要提供源端的可认证性和报文完整性;
方式三:Alice使用了三个keys:自己的私钥;Bob的公钥;新产生出的对称式密钥;
安全套接字SSL
SSL Secure sockets layer
为使用SSL服务的、基于TCP的应用提供传输层次的安全性;
1.握手 2.密钥导出 3.数据传输
IPsec(网络层的安全性)
网络层的机密性
发送端主机对IP数据报中的数据进行加密
数据:TCP\UDP的段、ICMP和SNMP报文
网络层次的可认可性
目标主机可以认证源主机的IP地址
802.11中的安全性(wlan链路层的安全)
访问控制:防火墙
定义:将组织内部网络和互联网隔离开来,按照某些规则允许某些分组通过(进出),或者阻塞掉某些分组;
为什么需要?
阻止拒绝服务攻击
SYN flooding:攻击者建立很多伪造TCP连接,对于真正的用户而言已经没有资源留下了;
阻止非法的修改/对非授权内容的访问
攻击者替换掉CIA的主页
只允许认证的用户能访问内部网络资源(经过认证的用户/主机集合)
两种类型的防火墙
网络级别:分组过滤器
应用级别:应用程序网关
分组过滤
即进能否能进,出能否能出的过滤机制
无状态(不用检查通讯状态;)举例:阻止80号端口的外部访问;不允许来自外面的TCP连接除了机构公共的WEB服务器的连接;
有状态;
无状态分组过滤根据每个分组独立地检查和行动【不需要检查是否正在通信】;有状态的分组过滤联合连接状态表检查和行动【需要检查是否正在通信】;
ACL增强:在允许分组之前需要检查连接状态表
应用程序网关
根据应用数据的内容来过滤进出的数据报,就像根据IP/TCP/UDP字段来过滤一样
检查的级别:应用层数据
EXAMPLE:允许内部用户登录到外部服务器但不是直接登录;
防火墙和应用程序网关的局限性
IP spoofing:路由器不知道数据是否真的来自于声称的源地址
如果有多个应用需要控制,就需要多个应用程序网关
客户端软件需要知道如何连接到这个应用程序
过滤器的UDP段所在的报文,或者全过或者全不过;
折中:与外部通信的自由度;安全的级别
很多高度保护的站点仍然收到攻击的困扰
攻击和对策
IDS:入侵检测系统
分组过滤:对TCP/IP头部进行检查;不检查会话间的相关性;
IDS:深入分组检查:检查分组的内容(例如:检查分组中的特征串,已知攻击数据库的病毒和攻击串);检查分组间的相关性,判断是否是有害分组(端口扫描、网络映射、Dos攻击)
安全威胁:踩点、分组嗅探、DOS攻击、DDOS攻击(分布式DOS)
未来网络的前沿技术
软件定义网络
核心:其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制
1.开放硬件接口
2.至少一个好的操作系统、可扩展的、开源的
3.定义良好的开发API
软件定义网络的一种实现:OpenFlow
命名数据网络
以节点为中心向以信息为中心的演进
重要需求:1.访问命名内容,而不是主机 2.弹性分发:复制+缓存 3.良好的解析、路由和访问控制
泛在缓存:1.面向所有应用 2.面向所有用户和内容/服务提供商
NDN架构与IP架构对比
数据命名:基于名字进行路由与转发
每个数据包加安全:消除对传输安全的依赖
按兴趣、按条的转发状态
移动优先网络
现有网络移动支持弱
现有网络IP特性
IP具有地址和身份双重特性
接入点变化IP地址变化
引发的问题
网络层无法识别用户
应用层断续重传效率低下
MoblityFirst:核心思想:名字和地址分离
逐跳块传输协议
存储感知路由
GUID和NA映射
网络实验设施