一些相互连接的、自治的计算机集合
- 语法
- 语义
- 同步
- 分组交换
- 虚电路:包含永久性虚电路和交换型虚电路
- 数据报
- 电路交换:传输时延最小
- 报文交换:传输时延最大
- 结点处理时延
- 排队时延
- 传输时延
- 传播时延
- 存储转发需要收到一个完整的帧再发送,慢
- 直接转发收到数据就发送,快
分组到达速度大于发送速度,分组缓存容量有限,超出容量就会造成丢失
- FDM(频分)
- TDM(时分)
- CDMA(码分)
协议数据单元,每一层传输数据的单元
包含两个部分
- 控制信息
- 用户数据
- 物理层
- 数据链路层
- 网络层
以上都是点到点通信
- 传输层
- 会话层
- 建立、管理及终止进程间的会话
- 通信失效后继续恢复通信,实现数据同步
- 表示层
- 数据格式变换
- 数据加密解密
- 数据压缩和恢复
- 应用层
以上都是端到端通信
精确定义了三个主要概念:服务、协议和接口
OSI在网络层支持无连接和面向连接的通信,在传输层仅有面向连接的通信
TCP/IP在网络层仅有无连接的通信,在传输层支持无连接和面向连接两种模式
message,中文称报文、消息
- C/S模型
- P2P模型
- HTTP(超文本传输协议) Web
- FTP(文件传输协议) 传输文件
- SMTP(简单邮件传输协议) 传输邮件
- POP3 查看邮件
- IMAP 查看邮件
- DNS(域名系统)
- 查找域名对应的IP地址
- 迭代查询
- 递归查询
- 根DNS服务器
- 顶级域DNS服务器
- 权威DNS服务器
- 本地DNS服务器
- 查找域名对应的IP地址
从DHCP服务器自动获取网络配置信息。
从请求主机到本地域名服务器的查询是递归查询,从本地域名服务器到其他域名服务器的查询是迭代查询
建立连接和传输命令的端口号21,数据传输的端口号20(主动方式)。被动方式下数据传输端口由服务器和客户端自行商定
注意这里的端口号都是指服务器的端口号,客户端的端口号由客户端自行临时分配
SMTP只能传送ASCII码文本数据,不能传送二进制对象
为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME。MIME在发送端将数据编码成ASCII码数据,给SMTP传送,在接收端解码ASCII码数据带其他格式数据
只能以下载并删除或下载并保留方式从邮件服务器下载邮件到用户计算机,不允许用户在邮件服务器上管理自己的邮件
用户在自己的计算机上就可以操控邮件服务器中的邮箱
POP3和IMAP都基于TCP协议
HTTP/1.0采用非持续连接方式,每次浏览器要请求一个文件都要与服务建立一个TCP连接,收到响应后立即关闭连接
HTTP/1.1采用持续连接方式,服务器在发送响应后仍然保持这条链接,使同一个客户端和该服务器可以继续在这条连接上传送后续的http请求和相应报文。这不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行 HTTP/1.1 可以采用流水线方式工作
HTTP/2.0:二进制分帧:将报文分割为较小的帧,并使用二进制格式的编码传送数据(之前的版本传送的是ASCII码数据)。支持多路复用,报文可以在同一个HTTP连接中乱序发送,并在接收端重新组合。首部压缩,减小了首部大小。支持服务端推送,服务器向客户端推送资源无需客户端明确地请求,比如客户端仅请求html文件,服务器会同时推送对应的css和图片文件
直接为应用进程间的逻辑通信提供服务。向高层用户屏蔽了下面网络核心的细节
- 可靠(TCP)和不可靠(UDP)传输
- 差错控制(TCP)
- 流量控制(TCP)
- 复用分用:复用是指多个应用层进程可同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程
segment,中文称报文段、数据段等等
- 标志字段
- ACK
- SYN
- FIN
- 序号和确认号
- TCP提供累积确认
首部的最小长度为20字节,最大60字节,以4字节为单位,不够的用0比特填充(和IP数据报首部在长度和单位上相同)
新的估计往返时间等于旧的估计往返时间和新的测量时间以一定比例相加 仅在某个时刻做一次测量,且不为重传的报文段测量RTT,只为传送一次的报文段测量
RTT估算:
RTT变化程度:
- 接收方 每收到一个失序报文段,立即发送一个对上一个按序到达报文的重复确认(ACK)
- 发送方 一旦受到3个冗余ACK,直接重发对方要求的报文段,不过重传计时器依然有效
- 发送和接受窗口不一定一样大
- TCP标准没有规定不按序到达的数据如何处理
- TCP要求接收方必须有累积确认的功能
链路层和传输层都提供流量控制的功能,区别在于:
- 链路层:接收方收不下就不回复确认
- 传输层:接收方收不下会给发送端一个窗口公告
- 停止等待协议
- 滑动窗口协议
- 回退N帧:只有它有累积确认的机制
- 选择重传
滑动窗口以字节为单位
发送方不能淹没接收方缓存
接受窗口rwnd
利用滑动窗口实现流量控制
如果收到流量窗口变为0的消息,则启动持续计时器,并在计时器超时时发送零窗口探测报文段,询问当前的窗口大小。(即使接收窗口为0,也必须接收零窗口探测报文段)
拥塞控制针对全网,流量控制针对一对一连接
- 拥塞窗口cwnd
- 慢启动阈值ssthresh
- 时延变大
- 丢包
发送方维持一个叫做拥塞窗口(cwnd)的状态变量。拥塞窗口的大小取决于拥塞程度,动态变化。发送方让发送窗口等于拥塞窗口。开始拥塞窗口的值设置为一个最大报文段(MSS)的数值,记为1。如果没有出现拥塞,每经过一个传输轮次,cwnd变为原来的两倍。为了防止过快增加,设置了慢开始门限状态变量(ssthresh)。当检测到超时时,将ssthresh设为原先cwnd的一半,将cwnd置为1,重新开始慢启动,这个过程中当cwnd的大小等于ssthresh时,执行拥塞避免策略,每次cwnd的大小只增加1.
快重传:接收方收到了失序的报文段时,也要立即发出对已收到的报文段的重复确认。发送方一旦收到3个连续的重复确认,就将响应的报文段立即重传,而不是等超时了再重传
快恢复:当发送方接收到3个连续的重复确认时(但并没有超时),TCP对于这种事件反应没有超时那么激烈,不执行慢开始算法,而是执行快速恢复策略:将ssthresh设为原先cwnd的一半,再将cwnd的值减半,之后每次发送时cwnd的值再增加1。
一种称为TCP Tahoe的TCP早期版本没有快速恢复策略,不管是超时还是收到3个冗余ACK,均采用慢开始策略。而较新版本的TCP Reno,则综合了快速恢复。两者的区别如下图:
三个阶段
三次握手的过程:
- 第一次握手:客户端主机向服务器发送一个特殊的TCP报文段,该报文段不包含应用层数据,但是在报文段的首部中的SYN标志位置为1,代表请求建立连接,称为SYN报文段。客户端随机选择一个初始序号,并将此编号放在SYN报文段的序号字段。该报文段被封装在一个网络层数据报中,发送给服务器。
- 第二次握手:服务器接收到包含SYN报文段的IP数据报,提取出SYN报文段,为该TCP连接分配TCP缓存和变量,并向客户TCP发送允许连接的报文段。该报文段也不包含应用层数据,SYN标志位置为1,确认号字段为SYN报文段的编号+1,服务器选择主机的初始序号,并将其放置到TCP报文段首部的序号字段。这个报文段被称为SYNACK报文段。
- 第三次握手:客户端收到SYNACK报文段后,也要给该连接分配缓存和变量。同时再向服务器发送另外一个报文段,对于SYNACK报文段给以确认,这个报文段包含了应用层数据。
三次握手的原因:
- 双方能确知对方的存在
- 允许双方协商一些参数
- 对运输实体资源进行分配
拓展知识:
因为第二次握手(还没有正式开始传送数据)时,服务器就已经给TCP连接分配了缓存资源,这为经典的DoS攻击即SYN洪泛攻击(SYN flood attack)提供了环境。在这种攻击中,攻击者发送大量的TCP SYN报文段,而不完成第三次握手的步骤。随着这种SYN报文段纷至沓来,服务器不断为这些半开连接分配资源(但从未使用),导致服务器的连接资源被消耗殆尽。这种SYN洪泛攻击是被记载的众多DoS攻击中的第一种。
如果不采用三次握手,而是两次握手,可能会出现这种情况: 客户端向服务器发起一个连接建立请求,但滞留在网络中未到达,于是重发了一个请求,这个请求到达了,并成功建立起连接,传输数据完毕后释放连接。之后之前滞留在网络中的请求到达了服务器,服务器误以为是新建立了一个连接,并分配了资源,而客户端实际上并不需要传输,于是服务器分配的资源被白白浪费了
连接释放的过程:
客户端向服务器发送一个特殊的TCP报文段,该报文段FIN标志位置为1。服务器收到后,给发送方回送一个确认报文段。然后服务器发送它自己的终止报文段,其FIN比特被置为1.最后,客户端对服务器的终止报文段进行确认。
TCP服务器每收到一次客户进程的数据,就重新设置并启动保活计时器(2小时)
若保护计时器定时周期内未收到客户进程发来的数据,则计时器到期后,服务器就向客户端发送一个探测报文段,若一连发送10个探测报文段后仍没有收到客户端的响应,则关闭这个TCP连接
- 不可靠、失序交付
- 不提供不必要的可靠性扩展(在网络层基础上)
首部固定为8个字节
校验的时候需要添加伪首部
发送方的UDP对报文端中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷。得到的结果被放在UDP报文段的校验和字段。举例来说,假定我们有下面3个16比特的字:
0110011001100000
0101010101010101
1000111100001100
前两个之和是
0110011001100000
+0101010101010101
------------------
1011101110110101
再将上面的和和第三个字相加,得出:
1011101110110101
+1000111100001100
------------------
0100101011000010
注意到最后一次加法有溢出,它要被回卷。反码运算就是将所有的0换成1,所有的1换成0.因此,该和0100101011000010
的反码运算结果是1011010100111101
,这就是校验和。在接收方,全部的4个16比特字(包括校验和)加在一起,如果该分组中没有引入差错,则显然在接收方处该和将是1111111111111111
。如果有一个是0,就代表分组中出了差错。
广播和多播只能在UDP上实现
- 网络层针对主机之间的逻辑通信
- 传输层为主机上的进程提供通信,即端到端的通信,依赖于网络层
对于网络层和传输层的描述,考虑有两个家庭,一家位于辽宁沈阳,一家位于浙江宁波,每家有4口人。每个人每星期要互相写一封信,每封信都用单独的信封通过中国邮政传送。因此每个家庭每星期向另一家发送16封信。每一个家庭有个孩子负责收发邮件,浙江宁波家庭是小明,辽宁沈阳家庭是小红。每星期小红去她的家人那里收集邮件,并将这些信件投到社区的邮筒里。当新建到达沈阳的家庭时,小红也负责将信件分发给家里人。在宁波的小明家里也负责类似的工作。
在这个例子中,邮政服务为两个家庭间提供逻辑通信,邮政服务将信件从一家送到另一家,而不是从一个人送到另一个人。在另一方面,小明和小红为家人之间提供了逻辑通信,他们从家人那里收取信件或到家人那里交付信件。注意到从家人们的角度来看,小明和小红就是邮件服务,尽管他们只是端到端交付的一部分(即端系统部分)。类比关系如下:
进程 = 家人
主机(又称为端系统) = 家庭
传输层协议 = 小明和小红
网络层协议 = 邮政服务(包括邮筒)
小明和小红都是在自己家里进行工作的,他们没有参与任何一个中间邮件中心对邮件进行分拣,或者将邮件从一个邮件中心送到另一个邮件中心之类的工作。类似地,运输船协议只工作在端系统中。在端系统中,运输船协议将来自应用进程的报文移动到网络边缘(即网络层),反过来也是一样,但对有关这些报文在网络核心如何移动并不作任何规定。
从不同套接字收集数据块,为每个数据块封装上首部信息生成报文段,传递到网络层
将传输层报文段中的数据交付到正确的套接字,定向给进程
多路复用和多路分解的原理可以同样用上面这个家庭的例子来作类比。每一个家庭成员通过他们的名字来标识(相当于套接字)。当小明从邮递员出收到一批信件,并通过查看收信人名字而将信件交付给他的家人时,他执行的就是一个多路分解操作。当小红从家人那里收集信件并将它们投到邮筒中时,她执行的就是一个多路复用操作。
- 熟知端口(0-1023) 不能随便用
- 登记端口(1023-49151) 为应用程序长期使用,必须在IANA登记,防止重复
- 客户端口或短暂端口(49152-65535) 客户进程短暂使用
可靠传输(RDT)的种类
每发一个报文,就等待确认,确认成功后再发下一个报文,若超时则重传。
发送的分组和确认分组都需要编序号。序号只需要一个比特表示,因为只要与上次发的不同即可
采用累积确认
采用n个比特编序号
发送窗口尺寸不能超过2^n^-1
接收窗口为1
连续不断发,如果丢失,从第一个丢失的地方开始继续连续发送(接收到在丢失报文后收到的报文会被重复发送)
不能采用累积确认,只能逐一确认
采用n个比特编序号
发送窗口尺寸不能超过2^n-1^
接收窗口小于等于发送窗口
连续不断发,如果丢失,仅发送丢失的报文
做题时通常不会考虑选择重传,除非有说明
发送端重传
- 发送端检测
- 接收端校验
- ACK(肯定确认)
- NAK(否定确认)
ACK或NAK出错时,发送方无法得知
接收方需要判定数据是否重复,给每个分组加一个标签代表顺序号
将两次对上个分组的ACK认为是当前分组的NAK
设置定时器,超时即重传
采用流水线的方式发送以提高效率
- 增加序号范围
- 发送端需要缓存没确认的分组
- 处理丢失、损坏和超时的分组方法
- 回退N步(GBN)
- 滑动窗口
- 累积确认
- 接收端无需缓存
- 选择重传(SR)
- 滑动窗口
- 接收端需要缓存
- 发送窗口不能大于接收窗口
- 序号个数大于等于发送窗口加接收窗口的大小,这样包的序号才不会重复
- 回退N步(GBN)
主要任务:实现网络互连,进而实现数据包在不同网络之间的传输
TCP/IP网际层提供不可靠服务,OSI网络层可以提供可靠服务,也可以提供不可靠服务
- 路由选择
- 流量控制
- 拥塞控制
- 差错控制
数据报(datagram)
区别:
- 转发:单个路由选择输出链路
- 路由选择:规划整条路径
路由器只工作到网络层
路由算法
特点:
- 每个路由器都要为进行中的连接维持连接状态信息
- 每个路由器有一张转发表记录VC号
- 一条完整的虚电路中每段链路有一个VC号
- 分组按序到达重点
- 当一个结点出故障时,所有经过该结点的虚电路都不能工作
- 分组首部中包含VC号,由路由器更新
改变VC号的目的:简化虚电路建立
信令协议:用于建立、保持、拆除虚电路
特点:
- 没有连接建立的概念
- 可靠通信应当由用户主机来保证
- 分组可能误码、丢失、重复、失序
- 转发靠识别目的主机地址 地址太多怎么办:最长前缀匹配原则
- 一个结点出故障时,路由可能发生变化,但通常依然可以工作
- 同一个端到端,不同时间,分组走的路径可能不同
路由器可以隔离广播域
任务
- 路由选择:根据路由协议构造出路由表,并不断更新和维护路由表
- 分组转发:交换结构根据转发表(路由表得来)对分组进行转发
功能:
- 将输入的物理链路与路由器相连接(物理层功能)
- 与位于入链路远端的数据链路层交互(数据链路层功能)
- 查询转发表决定输出端口
种类:
特点:
- 在路由选择处理器的直接控制下完成
- 数据报经过两次数据总线
特点:
- 不需要路由选择处理器的干预
- 一次只有一个分组能够跨越总线
特点:
- 能够并行转发多个分组
路由选择处理器
- 延时溢出
- 线路前部阻塞
提供:
- 路由功能
- 决定数据报是否到达目的地,或是否要被转发,如果要转发,IP协议决定下一个转发的位置
不提供:
- 可信赖的保证
总长度以1字节为单位
首部的长度是以4个字节为单位,长度可以是20-60字节,这跟首部的HLEN字段有关
首部20字节固定部分,40字节可变部分
报头部分固定为40字节长度,而有效载荷部分最长不得超过65535字节
不再计算首部校验和
- 单播
- 多播
- 任播:目的网络中最近的主机
原因:不同的链路层有不同的MTU(最大传送单元)
特点:重组只在终点进行,路由器只做转发和选路
长度32比特
A类地址:0…… B类地址:10…… C类地址:110…… D类地址:1110……(多播地址) E类地址:1111……(保留地址)
主机号全0为网络地址,全1为广播地址
0.0.0.0只能用作源地址,不能用作目的地址
私有IP网段如下:
A类:1个A类网段,即10.0.0.010.255.255.255
B类:16个B类网段,即172.16.0.0172.31.255.255
C类:256个C类网段,即192.168.0.0~192.168.255.255
消除了A,B,C类地址和划分子网的概念
使用“斜线记法”,在地址后面加上斜线,斜线后面写上网络前缀所占的位数
- network ID 网络ID
- subnet ID 子网ID
- host ID 主机ID
找共同前缀,将路由表中的多个项合并为1项
路由选择时遵循最长前缀匹配
子网掩码
特点:
- 本地网络地址和外部地址分开
- 对外只有一个唯一的地址
争议:
- 路由器应该只工作到网络层
- 违背了端到端的假设
- 地址短缺应当用IPv6解决
用于主机和路由器交换信息,报错、回显请求等等
特点:通常被认为是IP的一部分,但从体系结构上讲它是位于IP之上的,因为ICMP报文承载在IP分组中
差错报告报文类型:
- 终点不可达:路由器或主机不能交付数据报
- 源点抑制:路由器或主机由于拥塞而丢弃数据报,就向源点发送源点抑制报文
- 时间超过
- 参数问题
- 改变路由
以下情况不发送ICMP差错报告报文
- 对ICMP差错报告报文的差错
- 对第一个分片的数据报片后续的所有数据报片
- 对具有多播地址的数据报
ICMP询问报文类型:
- 回送请求和回答:测试目的站是否可达
- 时间戳请求和回答:请求某个主机或路由器的时间
应用:
- PING:使用回送请求和回答报文
- traceroute
可能产生路由环路
目的:给定一组路由器以及连接路由器的链路,找到一条从源路由器到目的路由器的好路径
每个路由器都知道整个网络拓扑
问题:若代价计算基于所承载的流量,会产生振荡,费用反复改变
内容:详见文章
路由器只知道相邻路由器的状态
问题:好消息传得快,坏消息传的慢,从而导致不断往复计算
解决方案:增加毒性逆转
内容:详见文章
路由器不能保存全球所有的路由的信息
- 同一个AS内部运行相同的路由协议(自治系统内部路由选择协议) 热土豆路由
- 所有AS之间运行相同的路由协议(自治系统间路由选择协议) 网关路由器
DV算法
每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量D-V
代价和跳数对应
最大跳数15
RIP通告:30秒交换一次;180秒没有响应代表链路中断
包含三个要点
- 和谁交换信息:仅和相邻路由器交换信息
- 交换什么信息:自己的路由表
- 核实交换信息:周期性交换(每30秒)
好消息传得快,坏消息传得慢。存在路由环路问题
运行在UDP之上,当作应用层进程来实现
LS算法:Dijstra算法
基于链路状态
链路状态:本路由器都和哪些路由器相邻,以及相应链路的“代价”
通过交互问候(Hello)分组,建立和维护邻居关系
- Hello分组封装在IP数据报中
- 发送周期为10秒
- 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达
过程:通告携带信息,广播到整个AS系统,OSPF通告包含在报文中,OSPF报文直接由IP数据报承载
优点
- 安全,能够使用鉴别
- 不同服务类型可以用多种方式算代价
- 同时支持单播和多播路由(MOSPF)
- 在更大的范围内可以使用层次结构的OSPF
运行在IP之上
并非要寻找最佳路由,只是寻找一条没有环路的可达路由
工作手段:
- 从相邻AS处获得子网可达性信息
- 向本AS内部的所有路由器传播这些可达性信息
- 基于可达性信息和AS策略,决定到达子网的“好”路由
报文封装在TCP报文中
####### BGP会话 性质:半永久的TCP连接
用途:用于一堆路由器交换路由信息
分类:
- 外部BGP会话(eBGP)
- 内部BGP会话(iBGP)
特点:BGP会话并非与物理链路一一对应
运行在UDP之上
让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址
IGMP报文封装在IP报文中
移动结点以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变
- 移动结点:具有永久IP地址的移动设备
- 归属代理(本地代理):在移动结点的归属网络中的代理
- 永久地址(归属地址/主地址)
- 外部代理(外地代理):在外部网络中帮助移动结点完成移动管理功能的实体
- 转交地址(辅地址):外部代理的地址或者动态配置的地址
A刚进入外部网络
- 获得外部代理的转交地址
- 通过外部代理发送注册报文给归属代理(包含永久地址和转交地址)
- 归属代理接收请求,并将移动结点的永久地址和转交地址绑定,以后到达归属代理的且发往该移动结点的数据报将被封装并以隧道方式发给转交地址,并返回一注册相应报文
- 外部代理接收注册相应,并转发给移动结点
A移动到了下一个网络
- 在新外部代理登记注册一个转交地址
- 新外部代理给本地代理发送新的转交地址(覆盖旧的)
- 通信
A回到了归属网络
- 向本地代理注销转交地址
- 按原始方式通信
帧(frame)
组帧方法:
- 字符计数法:每帧的开头都指明该帧含有多少个字符
- 字符填充法:使用特定的字符来确定帧的开始和结束
- 零比特填充法
- 违规编码法:如曼特斯特编码中间不跳变表示帧的开始和结束
数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。在帧定界符前加上转义字符
HDLC采用“零比特填充法”实现透明传输,每5个连续1后面插入一个比特0
奇偶校验码 CRC校验码
海明码
功能:相邻结点的传输
术语:
- nodes(结点):主机和路由器
- links(链路):沿着通信路径连接相邻结点的通信信道
- frame(帧):封装数据报
特点:
- 同个路径不同链路可能采用不同的协议传数据
- 不同的链路协议提供不同的服务
- 成帧
- 流量控制
- 差错控制
- 奇偶校验
- 因特网校验和
- 循环冗余检测(CRC)
- 访问(接入)控制
- TDM(时分复用)
- FDM(频分复用)
- WDM (波分复用):光的频分复用
- CDM(码分复用)或称CDMA(码分多址)
不同发送站的码片序列需要正交
通过不同发送站的码片序列对叠加信号做规格化内积运算,判断收到的信号来源于哪个站,为1还是0
- 随机接入:可能产生碰撞
- 受控接入:轮询、令牌环网络
不监听信道,不按时间片发送,随机重发。想发就发
如何检测冲突: 如果发生冲突,接收方就会检测出差错,然后不予确认,发送方在一定时间内收不到确认就判断发生冲突,并等待一段随机时间后重发
把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到随机个时间片后再重发
控制想发就发的随意性
- 纯ALOHA比时隙ALOHA吞吐量更低,效率更低
- 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能法
载波监听:在发送帧之前先检测一下总线上是否有其他站点在发送帧
1-坚持CSMA 如果一个主机要发送消息,那么它先监听信道 空闲则直接传输,不必等待 忙则一直监听,直到空闲马上传输
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失 缺点:假如有两个或两个以上的站点有数据发送,则冲突不可避免
非坚持CSMA 如果一个主机要发送消息,那么它先监听信道 空闲则直接传输,不必等待 忙则等待一个随机的时间之后再进行监听
优点:采用随机的重发延迟时间可以减少冲突发生的可能性 缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率较低
p-坚持CSMA p-坚持指的是对于监听信道空闲的处理
如果一个主机要发送消息,那么它先监听信道 空闲则以p概率直接传输,概率1-p等待到下一个时间片再传输 忙则等待一个随机的时间之后在进行监听
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间 缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费
802.3即以太网中半双工模式采用
碰撞检测:每一个正在发送帧的站便发送边检测碰撞(“边说边听”);一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送
使用二进制指数退避算法确定重传等待时间
二进制指数退避算法:
- 确定基本退避时间为争用期$2\tau$
- 定义参数k,等于重传次数,但k不超过10。当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就一直等于10
- 从离散的整数集合$[0,1,...,2^k-1]$中随即取出一个数r,重传所需要退避的时间就是r倍的基本退避时间
- 当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
强化碰撞:一旦发现碰撞,要发送人为干扰信号,以便让所有用户都知道已经发生了碰撞
帧间最小间隔:9.6微秒
从CSMA/CD的工作原理能推导出争用期和最小帧长
效率比ALOHA高
802.11即WiFi中采用
无线局域网存在的问题:
- 无法做到360度全面检测碰撞
- 隐蔽站:当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突
发送数据前,先检测信道是否空闲 空闲则发出RTS(request to sent),包括发送端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待
接收端收到RTS后,将响应CTS(clear to send)。之后不再响应其他站发来的RTS
发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)
接收端收到数据帧后,将用CRC来检测数据是否正确,正确则响应ACK帧
发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)
- 传输介质不同:CSMA/CD用于总线型以太网(有线),CSMA/CA用于无线局域网(无线)
- 载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同
- CSMA/CD检测冲突,CSMA/CA避免冲突。二者出现冲突后都会进行有上限的重传
- 预约信道
- ACK帧
- RTS/CTS帧(可选,为了解决隐蔽站的问题)
- 轮询
- 令牌环网络
MAC地址:48位
ARP(地址解析协议)
面向比特,有编号和确认机制,可靠
面向字节,无序号和确认机制,不可靠
特点:面向连接,一个发送方,一个接收方,一条链路
- 一个将IP数据报封装到串行链路的方法
- 链路控制协议LCP
- 网络控制协议NCP
- 发送端把网络层的数据报封装成数据链路层的帧,接收端解封装
- 可以携带任何bit格式
- 差错检测(不纠正)
- 有链接的服务
- 终端可以学习并配置网络地址
- 纠错
- 流量控制
- 失序传送
- 多点链路
异步传输时,使用字节填充:
- 将每个7E字节转变成2字节7D,5E
- 将每个7E字节转变成2字节7D,5D
- 在ASCII码的控制字符前加入1个7D字节
同步传输时,使用零比特填充 发现5个连续1,则在后面填入一个0(和HDLC一样)
使用CRC检错
长度在64-1518字节,其中数据部分长度在46-1500字节之间,帧头加帧尾占18字节
详见文章概念
发送最短帧长的时间>=2*传播时延
10M以太网取51.2微秒为争用期(64*8/10)
信号在以太网上传播1km大约需要5微秒
可计算出10M以太网理论上最大端到端长度约为5km(争用期/2*信号传播速度=51.2/2/5)
但还有一些其他处理的时间,最终规定的长度是1km
100M以太网最大长度100m
本质上是多端口网桥
特点:
- 透明:主机和路由器并不能感受到它的存在
- 自学习:即插即用
功能:转发和过滤
性质:
- 消除碰撞
- 异质的链路 交换机使不同链路彼此隔离,不同链路能以不同速率运行
- 管理 易于进行网络管理
使用以太网交换机可以实现虚拟局域网VLAN,这只是一种服务,并不是新型网络
特点:
- 可在全双工方式下工作而无冲突
- 不使用CSMA/CD
- MAC帧仍是802.3标准
- 帧间间隔由9.6微秒,改为0.96微秒
三种不同物理层标准
- 100BASE-TX:2对双绞线
- 100BASE-FX:光纤
- 100BASE-T4:4对双绞线
- 不支持同轴电缆
特点
- 允许在1Gb/s下以全双工和半双工工作
- 使用802.3帧
- 半双工下使用CSMA/CD
- 与10Mb/s 100Mb/s兼容
物理层
- 1000BASE-X:光纤
- 1000BASE-T:4对双绞线
特点
- 802.3帧
- 不再使用铜线,只使用光纤
- 只工作在全双工方式,不使用CSMA/CD
- 可扩展
- 灵活
- 易于安装
- 稳健性好
48bits
网络中每个接口的唯一标识
- 单播
- 广播(全1地址)
- 多播
- 混杂方式(只要听到有帧在以太网上传输就接收下来,不管它发往哪个站)
将IP地址转换为MAC地址
每台主机都有ARP高速缓存表
询问时发送广播帧,回复时发送单播帧
采用CSMA/CD协议
无法隔离碰撞域
工作在数据链路层,性能好
隔离碰撞域(冲突域),不能隔离广播域(VLAN除外)
可以进行自学习
防止网络环路导致广播风暴,广播帧不停地兜圈子
要点是不改变网络的实际拓扑,但在逻辑上切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构
使用路由器可以隔离广播域,但路由器的成本较高
虚拟局域网使用交换机将局域网的设备划分成与物理位置无关的逻辑组,同一个逻辑组中可以进行广播通信,不同逻辑组之间不能进行广播通信
避免了广播风暴
VLAN的以太网帧的首部增加了4字节的VLAN标记,因此最大帧长为1522字节
比特(bit)
W:信道带宽 V:每个码元包含的不同状态数量
理想低通信道下的极限数据传输率=$2W\log_2V$(单位为b/s)
W:信道带宽 S:信道传输信号的平均功率 N:信道内部的高斯噪声功率
信道的极限数据传输率=$W\log_2(1+S/N)$(单位为b/s)
信噪比(dB)=$10\log_{10}(S/N)$ 如当S/N=10时,信噪比为10dB,当S/N=1000时,信噪比为30dB
信道最大数据传输率为两个结果中较小的那个
正电平表示1,负电平表示0,每个时钟周期的中间均跳变到零电平。可以同步
和前一个信号相比,信号翻转代表0,信号保持不变代表1。可以同步。USB2.0使用
一个码元分成两个相等的间隔,前一个间隔为高电平而后一个间隔为低电平,则码元为1; 前一个间隔为低电平而后一个间隔为高电平,则码元为0。可以同步。以太网使用
一个码元分成两个相等的间隔,中间跳变。若码元为1,则前半个码元的电平和上一个码元的后半个电平相同;若码元为0,则情形相反。可以同步
- 机械特性:引脚等信息
- 电气特性:电压的范围
- 功能特性:电压的意义
- 过程特性:事件的出现顺序
- 源点
- 发送器
- 接收器
- 终点
- 单工通信
- 半双工通信
- 全双工通信
- 频分复用
- 时分复用
- 码分复用(码分多址)
- 总线型拓扑
- 星型拓扑
- 树型拓扑
- 环形拓扑
- 网状拓扑
- 拨号上网
- ADSL(非对称数字用户线路)
- HFC(混合光纤同轴电缆网)
- 光纤接入
- 无线网络
- 802.11b WiFi
- 蜂窝网
双绞线
按用途分类:
- Cat 3 电话使用
- Cat 5 以太网使用
按有无屏蔽分类
- 无屏蔽双绞线 UTP
- 有屏蔽双绞线 STP
同轴电缆
光纤
无线电
又称转发器,主要功能是将数字信号整形并放大再转发出去 * 放大器:放大模拟信号
不能连接两个速率不同的网段。
两个网段在物理层进行互联时要求:数据传输率相同,数据链路层协议可以不同。但此时无法互相传送数据链路层的帧
两个网段要在数据链路层互通时要求:数据传输率和链路层协议都相同
粗缆以太网中,互相串联的中继器的个数不能超过4个,用4个中继器互联的5段通信介质中只有3端可以挂接计算机
没有存储转发功能
不能分割冲突域,所有集线器的端口都属于同一个冲突域。
带宽为10Mb/s的集线器上连接8台计算机,每台计算机真正拥有的带宽为1.25Mb/s(交换机连接的话,每台都为10Mb/s)