第一章 概述
1.1,计算机网络:是一个将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
1.2,功能:
①数据通信(连通性)
②资源共享(硬件,软件,数据)
③分布式处理
④提高网络可靠性
⑤负载均衡
1.3,组成:硬件,软件,协议。
功能组成:
- 通信子网:实现数据通信
- 资源子网:实现数据共享/数据处理
1.4,分类:
①按范围:广域网(交换技术),城域网,局域网(广播技术),个人区域网。
②按使用者:公用网,专用网
③按交换技术:电路交换,报文交换,分组交换
④按拓扑结构:总线型,星型,环型,网状型
⑤按传输技术:广播式网络,点对点网络
1.5,性能指标:
①速率:数据率,数据传输率,比特率 比特:bit,一个二进制位。kbps--1000bit pre seconds,Mbps-10^6bit/s Gbps-10^9bit/s Tbps-10^12bit/s
Byte存储单位,B:一个字节,8个bit. KB-2^10B MB-2^20B GB-2^30B TB-2^40B
②带宽:原指某个信号的频带宽度,单位Hz。计网中用以表示传输数据的能力,带位:bit/s (bps), kbps,Mbps。网络设备所支持的最高传输速度
③吞吐量:在单位时间内,通过某个网络(信道/接口)的数据量。单位:b/s,kb/s,Mb/s
④发送时延:数据长度/信道宽度(发送速率)
传播时延:信道长度/电磁波在信道(介质)上的传播速度
排队时延:等待输出/输入链路 链路可能很忙,需要在缓存中等待
处理时延:检错,路由选择。
⑤高速链路:提高发送速率,(电磁波在介质中的速度是一定的)
⑥时延带宽积:传播时延*带宽=信息量=>某链路上有多少bit数据
⑦往返时延RTT:从发送方发送第一个数据开始到发送方收到接收方的确认,(接收方收到数据立即发送确认)总经历的时延。
不包含发送时延,--用于评估信道
⑧利用率:信道利用率=有数据通过的数据/(有+无)数据通过的时间
1.6,分层结构:
①OSI(7层)参考模型:
应用层:所有能和用户交互产生网络流量的程序,FTP,SMTP,HTTP
表示层:用于处理两个通信系统中交换信息的表示方式(语法和语义)
- 数据格式变换--翻译官
- 数据加密解密
- 数据压缩与恢复
会话层:向表示层/用户进程提供服务,建立连接并在连接上有序的传输数据。
- 建立/管理终止会话
- 使用校验点可以使会话在通信失效时从失效时校验点/同步点继续恢复通信,实现数据同步。适用于传输大文件
传输层:负责不同主机中两个进程的通信,端到端通信,传输单位是报文段或用户数据报。
- 可靠/不可靠传输(TCP/UDP)
- 差错控制--(丢失,重复,失序)序号--累计确认--超时重传
- 流量控制--端到端的,滑动窗口解决 慢开始-拥塞避免 快重传-快恢复
- 复用分用
网络层:把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务。传输单位:数据报
- 路由选择-分组转发:最佳路径
- 流量控制:协调发送与接收端速度
- 差错控制:ICMP差错报文,
- 拥塞控制:整个网络的拥塞控制,通过路由选择来实现,([RIP,OSPF],BGP)
数据链路层:把网络层传下来的数据组装成帧。传输单位:帧
- 组装成帧--字符计数,字符填充,零比他填充,违规编码法
- 差错控制--比特错(奇偶校验,CRC循环冗余码,海明码)
- 流量控制--点到点的流量控制,相邻结点间的发送接收速度不匹配。(停等,GBN,SR)
- 介质访问控制--静态(多路复用),动态(CSMA/CD)
物理层:傻瓜层,在物理媒体(介质)上实现比特流的透明传输。
②TCP/IP参考模型(4层):
应用层:HTTP,FTP,DNS
传输层:TCP,UDP
网际层:IP
网络接口层:
③5层参考模型:
应用层:支持各种网络应用,FTP,SMTP,HTTP 报文,如要发送的某个文件,pdf,txt
传输层:进程-进程的数据传输,TCP,UDP 报文段,将报文(如果很大)分割成报文段
网络层:源主机到目的主机的数据分组路由与转发:IP,ICMP,OSPF 数据报,将报文段封装成IP数据报。若Ip数据报过大(超过某些链路的MTU)将分割成分组,
数据链路层:把网络层传下来的东西封装成帧 将IP数据报(分组)封装成帧
物理层:比特传输 比特流
第二章 数据链路层:
- 数据链路层负责通过一条链路从一个结点向另一个结点向另一个与该链路直接相连的相邻结点传输数据帧。(点对点)
- 向网络层提供服务,将源自网络层的数据可靠的传输到相邻结点。将物理层提供的可能出错的物理链路改造成逻辑上无差错的数据链路
2.1,名词:
①结点:主机/路由器
②链路:网络中两个节点之间的物理通道,链路的传输介质主要是双绞线,光纤和微波。分为有线链路和无线链路
③数据链路:网络中两个节点之间的逻辑通道,把实际控制数据传输的硬件和软件加到链路上就构成了数据链路。
④帧:链路层的协议单元,封装网络数据报(分组)
2.2,功能:
①为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务
②链路管理:即连接的建立,维持,释放(用于面向连接的服务)
③组帧
④流量控制
⑤差错控制
2.3,封装成帧与透明传输:
2.3.1,透明传输:
- 无论什么样的比特组合,都能在链路上传送
- 当比特组合与帧定界符等控制信息一样时,就必须采取适当措施。
2.3.2,组帧方法:
①字符计数法:帧首部使用一个计数字段,第一个字节8位,表示帧内字符数
-:有一个计数字节出错,后面全乱
②字符填充法(一次填充一个字符):规定首位字符(00000001,00000100)
- 若传送的文件是文本文件,字符都是ASCII码,不会与首位字符重合
- 若传送的帧是由非ASCII码的文本文件组成,如二进制流的程序代码或图像等。数据段就会出现与首位段相同的二进制序列。
在数据段中遇到的控制字符之前填充一个转义字符,告诉接收端后面一个字符是数据段,接收端恢复数据时,将转义字符去掉。
③零比他填充法:帧首尾定界符设为“01111110”,在帧二进制数据流中,每遇到5个“1”就填充一个“0",
接收端恢复数据时,每遇到5个”1“去除后面的”0“即可,遇到”01111110“为帧的首尾。
④违规编码法:
- 曼彻斯特编码中:高-低表示”1“,低-高表示”0“,而高-高,低-低则未使用,用来表示帧界定符。
- 实现简单,局域网IEE802中采用
2.4,差错控制:
2.4.1,差错:
①比特错:0变1,1变0
②帧错:---传输层解决
- 丢失
- 重复
- 失序
2.4.2,差错(比特错)控制方法:
①检错编码:
<1>奇偶校验码:
- 奇校验码:在数据段的前面添加一位冗余码(1/0),使添加完后的数据段”1“的个数为奇数
- 偶校验码:在数据段的前面添加一位冗余码(1/0),使添加完后的数据段”1“的个数为偶数
-:只能检查出奇数个比特错误,检错能力50%(偶数个比特错误后,”1“的个数保存不变)
<2>CRC循环冗余码:--每一位数据都和生成的FCS有关,即检错每一位。
发送端与接收端统一一个生成多项式(密钥),
- 发送端利用发送数据和生成多项式计算出FCS帧检验序列(冗余码)并把FCS序列添加在数据后面一起发送给接收端
- 接收端利用接收到的含检验序列的数据与生成多项式进行运算,检错,
②纠错编码:海明码--牵一发动全身,每一个比特都被好几个冗余码关联着,
- 发现双比特错,纠正单比特错。
2.5,流量控制
- 发送方发送速度>接收方接收速度,当接收方缓冲区满,就会造成数据溢出。
- 数据链路层的流量控制使点对点的,相邻结点之间的,
①停止等待协议:每发送一个帧就停止发送,等待对方接收后发回的确认,再收到确认后再发送下一帧。
- 超时计时器,时间>RTT,时间到还未收到确认,就重传帧
- 发送窗口=1,接收窗口=1.
+:简单
-:信道利用率低
②滑动窗口协议:
- GBN(go back N)后退N帧协议:发送窗口>1,接收窗口=1
(只有发送窗口中有数据,就可发送,不必等待确认,只是未收到确认的需要保留再窗口中,可能需要重传,收到确认后可移除并将窗口滑动至未发送数据区)
发送方必须响应:<1>上层调用,网络层有数据要来,检查发送窗口,未满则组帧。满了则先存入缓存或报告上层处理
<2>收到接收方的ACK,GBN采用累计确认方式,表明接收方已经收到n号帧和他之前的全部帧。
累计确认:接收方记住下一个期待数据帧序号,若乱序到达,仍发回期待帧前一个帧的确认。
<3>超时重传:再等待n号帧的确认帧超时后,重新发送第N帧,以及N以后发送了等待确认的帧。
接收方必须响应:<1>如果收到的N号帧是期待帧,(按序到达),则更新期待帧,在合适的时间发送确认帧,并将数据交给上层。
<2>若收到的帧失序到达,与期待帧不符,则会被丢弃,(非他不娶)并发送ACK(期待帧-1)。发送方明白第N-1之前的已经确认,则会将
N号及N号之后已经发送未确认得帧都重传一遍。
- SR(search re-传),选择重传协议 : 发送窗口>1,接收窗口>1
发送发必须响应:<1>上层调用,检查窗口,未满则组帧,满了先缓存或者报告上层
<2>收到一个ACK,将对应帧标为以接收,如果该帧得序号是窗口得下界,即窗口可以向未发送区滑动,一直滑动到下一个待确认得帧。
因为收到N号确认帧之前可能已经收到N+1号确认帧,则移动到N+2即可。
接收方必须响应:<1>接收到帧后,就发送该帧的ACK,不管是否按序,(来者不拒)失序的就先缓存起来,等正序的(期待帧)到达后,将数据一起发送给上层。
然后将接收窗口滑动至待接收处。
2.6,介质访问控制:
2.6.1,静态划分信道--信道划分介质访问控制:
①频分多路复用FDM
②时分多路复用TDM 基于多路复用技术
③波分多路复用WDM 网络负载重:共享信道利用率高,公平
④码分多路复用CDM 网络负载轻:共享信道利用率低。
2.6.2,动态分配信道:
①轮询访问介质访问控制:
- 轮询协议:主节点轮流邀请从属结点发送数据
代价:<1>轮询开销。<2>等待延迟。<3>单点故障,主节点坏,都坏
- 令牌传递协议:(物理上星形拓扑,逻辑上环形拓扑)
令牌:一个特殊个数的MAC控制帧,不含任何信息
令牌环网无碰撞
每个结点都可以在一定时间内(令牌持有时间)获得发送数据的权利。广播发送,是接收者会保存数据
代价:<1>令牌开销。<2>等待延迟。<3>单点故障
适用于负载较重,通信量较大的网络中。
②随机访问介质访问控制:--所有可随机发送信息,发送信息时占全部带宽。
<1>ALOHA协议:想发就发,不听就说。
<2>CSMA协议:载波监听,多路访问。先听再说
1-坚持CSMA:空则发送数据,忙则一直监听,发送碰撞随机等待时间后重复。
非坚持CSMA:信道忙则等待随机时间再监听。
p-坚持CSMA:空闲则P概率直接发送,1-p概率下一个时间槽传输。忙则等待随机时后再监听
<3>CSMA/CD协议:载波监听,多点接入,碰撞检测。先听再说,边听边说。--总线式以太网
- 发送时也检测信道,发生碰撞,立马停止发送。
- k=重传次数k=min(k,10),r=[0,1,2....2^k-1]之间的随机选一个。t=单程发送时延。重传时间T=2rt
- 最小帧长:l>2t*发送速率
- 以太网最小帧长:64B
<4>CSMA/CA协议:载波监听,多点接入,碰撞避免。--无线局域网
- 只能避免的原因:无法做到360度检测碰撞,隐蔽站问题。
<1>发送之前检测信道是否空闲
<2>空闲则发出RTS(request to send)包含,发送端地址,接收端地址,时间持续发送时间(要占用信道的时间)
<3>接收端接收到RTS,将响应CTS(clear to send)
<4>发送端收到CTS,开始发生时间帧。
<5>接收方CRC检测,ACk,发送方超时重传。
预约信道---ACK确认帧---RTS/CTS(可选)解决隐蔽站
- CSMA/CD与CSMA/CA差别:
<1>传输介质不同:CD:总线式以太网【有线】。CA:无线局域网【无线】
<2>载波检测发生不同:CD:电缆中电压变化。CA:能量检测。载波检测。能量/载波混合检测
<3>CD检测冲突,CA避免冲突,出现冲突都会有上限的重传。
2.7,以太网:几个公司联合开发的,基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准
便宜,采用CSMA/CD技术,标准:IEEE 802.3
- 提供无连接,不可靠的服务。
- 以太网实现无差错接收,不实现可靠传输。可靠传输交由上层传输实现。
- MAC地址:标识符(身份证ID),计算机硬件地址,网卡地址,设备独立标识符号,48位,前24位表示厂家,由IEEE规定,后24位厂家自己分配。
- Mac帧是采用以太网的数据链路层的寻址方式
①mac帧格式:以太网帧,帧首:14B,帧尾4B
②MTU:最大传输单元,Maximum Transmission Unit。
- 以太网帧:最小64B,和CSMA/CD中碰撞检测有关,发送方检测到碰撞要立即停止发送,太短的话,刚检测到就发送完了。
l>2t*发送速率, t:单程传输时延
- 普遍帧长:1500B:如果MTU太小,帧头帧尾都占(14+4)18B,效率太低,信道大部分都被辅助信息占用了。如果帧长太大
发送时延太高,网络拥塞,响应速度慢。
2.8,网桥与交换机:
- 根据MAC帧的目的地址对帧进行转发和过滤,确定该帧转发到哪一个接口或者丢弃
- 透明网桥:以太网的站点不知道所发生的帧将经过哪几个网桥,即插即用--自学习
- 源路由网桥:在发送帧时,把详细的最佳路由信息放在帧首部。
第三章 网络层
3.1,概述
3.1.1,功能:
①路由选择与分组交换
②异构网络互联
③拥塞控制
3.1.2,数据交换方式:
①电路交换:先建立链路
+:<1>传输时延小。<2>有序传输。<3>无冲突。<4>实时性强。
-:<1>建立连接时间较长。<2>线路独占,利用率低。<3>灵活性差,连接建立后,某首部坏,连接坏。<4>无差错控制能力。
②报文交换:存储转发
- 报文:源主机要发生的文件整体,如某个PDF,txt等
+:<1>无需建立连接。<2>存储转发,动态分配线路。<3>线路利用率高<4>线路可靠性高(一个交互设备坏了走其他路)<5>多目标服务
-:<1>有存储转发时延。<2>网络结点需要较大的缓存空间
③分组交换:存储转发,将大报文分割成一组小的分组
+:<1>无需建立连接。<2>存储转发,动态分配线路。<3>线路利用率高<4>线路可靠性高。<5>相对于报文交换,存储管理更容易
-:<1>有存储转发时延。<2>需要传输额外信息量,(某个分组都要目的地址,源地址,以及组号)<3>分组乱序到达目的主机,需要排序重组
3.2,IPv4协议:
3.2.1,IP数据报格式:
①首部+数据部分
<1>版本:IPv4/IPv6
<2>首部长度:单位是4B,最小单位5(固定首部长20字节)
<3>区分服务:指示期望获得那种服务
<4>总长度:首部+数据的长度,单位是1B
<5>生存时间TTL,IP分组的保质期,经过一个路由器,-1。变成0则丢弃。
<6>协议:
<7>首部校验和:只校验首部
<8>源/目的地址,32位--IPv4
<9>可选字段,0~40B
<⑩>填充:全0,首部长度必须是4B的整数倍
3.2.2,IP数据报分片:
- 最大传输单元:MTU ,链路层数据帧可封装数据的上限。
- 以太网MTU:1500B
- IP数据报首部:
<1>标识:同一数据报的分片使用同一标识
<2>标志:3位,只用了2位 x_ _
中间位:DF=1,禁止分片
DF=0,允许分片
最低位:MF=1,后面还有分片
MF=0,后面没有分片,这是最后一个分片
<3>片偏移:指出较长的分组分片后,某片在原分组中的相对位置,单位8B,
用于将分片排序,还原成原分组/IP数据报
3.2.3,IPv4地址:
- 32位。{<网络号><主机号>}
- 点分十进制:127.0.0.1
①分类的IP地址:
标识位 网络号 网络数 主机数
A类: 0 7位,1~126 2^7-2 2^24-2
B类 10 14位,128~191 2^14-1 2^16-2
C类 110 21位,192~223 2^21-1 2^8-2
D类 1110 多播地址
②特殊IP地址:
网络号 主机号 可作源地址 可作目的地址 用途
全0 全0 √ × 表示本范围内的本主机(不清楚自己的IP地址)
全0 特定值 × √ 表示本网络内某个特定主机
全1 全1 × × 表示本网络的广播地址
特定值 全0 × × 表示一个特定网络,<网络号>
特定值 全1 × √ 表示某网络的广播地址
127 任何数(非全0/1) √ √ 用于本地软件回环测试,称为回环地址
③私有IP地址:在互联网中无效该地址无效,应用于内部网络,如学校,单位等
- ABC3类地址中绝大多数为公有地址,需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,
作为私有地址,供组织机构内部使用。
网段个数
A类:10.0.0.0~10.255.255.255 1 歼10
B类: 172.16.0.0~172.31.255.255 16 172 歼16-歼31
C类:192.168.0.0~192.168.255.255 256 192.168
3.2.4,物理地址转换NAT
- 在专用网连到互联网的路由器上安装NAT软件,就是NAT路由器,它至少有一个有效的外部全球IP地址,(公有地址)
- NAT路由器:将私有地址转换为公有地址
- NAT地址转换表:
3.2.5,子网划分,
①两级地址转换三级地址,{<网络号><主机号>}=>{<网络号><子网号><主机号>}
子网掩码
②无分类地址CIDR协议,构造超网
3.3,重要协议
3.3.1,ARP协议(地址解析协议):--求Mac地址,物理地址
①完成主机或路由器将IP地址到Mac物理地址的映射,解决下一跳走哪的问题
②流程:<1>发送方,检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的Mac为FF-FF-FF-FF-FF-FF的帧封装为广播ARP请求分组。
<2>同一局域网(IP地址)内所有的主机都能收到改请求,目的主机收到请求后向源主机单播一个ARP响应分组,包含目的主机MAC地址,
<3>源主机收到后将此映射写入ARP缓存。(10-20min更新一次)
③ARP协议使用的典型情况:
<1>主机A发送给本网络上的主机B,用ARP协议找到主机B的硬件地址
<2>主机A发送给另一个网络上的主机B,用ARP协议找到本网络上一个路由器(网关),的硬件地址(下一跳地址)
<3>路由器发给本网络上主机A,用ARP协议找到主机A的硬件地址
<4>路由器发送给另一个网络上的主机B,通过ARP协议找到本网络上的一个路由器的硬件地址,(下一跳地址)
3.3.2,DHCP协议:动态主动配置协议
- 应用层协议,使用客户/服务器方式,客户端与服务器通过广播方式交互,基于UDP
①主机获得IP地址方式:
- 静态配置:管理员手动分配,IP/子网掩码/默认网关
- 动态配置:DHCP协议
②流程:
<1>主机广播DHCP发现报文,(有没有DHCP服务器)
<2>DHCP服务器广播DHCP提供报文,(包含IP地址及相关配置)
<3>主机广播DHCP请求报文
<4>DHCP服务器广播DHCP确认报文
3.3.3,ICMP协议:网际控制报文协议
①功能:ICMP协议支持主机或路由器:差错报告,网络探询
②ICMP报文
③ICMP报文分类:
- ICMP差错报文:
<1>终点不可达:当路由器或主机不能交付数据时就向源端发送不可达报文,
<2>时间超过:当路由器手动TTL=0的数据报,丢弃,并向源端发送时间超出报文
<3>参数问题:当路由器/主机收到数据报中有的字段不正确(首部字段有问题),丢弃,向源端发送参数问题报文
<4>改变路由(重定向):路由器把改变路由报文发送给主机,让主机明白下次发送找更好的路由
<5>源点一直:拥塞丢数据,告诉源端发送数据慢一定(已废弃)
- ICMP询问报文:
<1>回送请求和回答报文:主机或路由器向特点的目的主机发出的询问(ping ) 收到此报文的主机必须给源主机或路由器发送
ICMP回送回答报文,测试目的站是否可达及了解其相关信息
<2>时间戳请求和回答报文:请求某个主机或路由器回答当前时间和日期,用来进行时钟同步和测量时间
3.4,IPv6:
①IPv4地址分配殆尽,CIDR,NAT治标不治本
IPv6从根本解决问题。
②目标:
- 改进首部格式,使得数据报处理/转发收到更快
- 支持Qos:
③IPv6数据报:
④IPv6数据报首部格式:40B固定首部,其中32B是目的地址和源地址(128*2)
<1>版本:6(IPv6)
<2>优先级:区分数据报类别和优先级
<3>流标签:流:某个主机向另一个主机发送的一系列数据报。属于同一个流的一组数据报流标签相同
<4>有效载荷长度:扩展首部+数据部分的长度(IPv4中有首部长度和数据长度两个字段)
<5>下一个首部:如果有扩展首部,则指明扩展首部1的起始地址,(扩展首部1还有改字段指向扩展首部2-就像链表串起来
最后一个扩展首部指向数据部分(即运输层报文段))
<6>跳数限制:即IPv4中的生存时间
⑤与IPv4的区别:
<1>将地址从32位扩展到128位
<2>IPv6将IPv4首部格式中可选字段移除,变成了扩展首部,成为更灵活的首部,达到快速处理/转发数据报
<3>IPv6设备即插即用,不需要DHCP协议
<4>IPv6首部长度必须是8B整数倍(固定设备40B+扩展首部),IPv4首部必须是4B的整数倍
<5>IPv6只能通过主机分片,IPv4可以通过主机和路由器分片。
⑥IPv6向Ipv4过渡策略:
- 双栈协议:在一台设备上同时启用IPv4和IPv6协议,分别配置IPv4和IPv6地址
- 隧道技术:将其他协议的数据报 添加首部封装成自己协议的数据报。比如IPv4路由器收到来自IPv6路由器的IPv6数据报,将
该数据报作为IPv4数据报的数据部分封装为IPv4数据报。
3.5,路由选择 :
3.5.1,路由表,转发表:
3.5.2,路由选择算法:
- 静态:非自适应路由算法,管理员手动配置路由信息
+:简单可靠,在负荷稳定,拓扑变化不大的网络中运行效果较好,广泛用于高度安全性的军事网络和较小的商业网络
-:路由更新慢,不适用于大型网络
- 动态:
<1>全局性:链路状态路由算法:OSPF,
所有路由器掌握完整网络的拓扑和链路费用信息
<2>分散性:距离向量路由算法:RIP
路由器只掌握物理相连的邻居路由器的链路费用。
3.5.3,路由选择协议:
- 内部网关协议IGP:RIP,OSPF
- 外部网关协议WGP:BGP
<1>RIP是一种基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换信息。
<2>OSPF是一个内部网关协议,要交换的消息量较大,应使报文长度尽量短,直接使用IP数据报。
<3>BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以用TCP
①RIP协议:基于距离向量的路由选择协议。(坏消息传的慢)
- RIP是应用层协议,使用UDP传送数据。(一个RIP报文最多包括25个路由,超过再加报文)
<1>原理:
- 要求网络中每一个路由器都维护从他自己到其他每一个目的网络的唯一最佳距离记录
- 仅和自己相邻的路由器交换信息,信息为自己的路由表。
- 每30S交换一次,若180s没收到邻居路由器的通告,则判断邻居没了,并更新自己的路由表
<2>距离向量算法:
[1],路由器R1收到邻居路由器X发来的RIP报文,把”下一跳“项全改为"X”,并把”距离“+1
[2],对RIP报文中的每一个表项,若RI路由表中没有其目的地址,则把该表项加入R1的路由表
- 若有该目的地址,则看下一跳地址,若是X,则更新R1,路由表该表项。若不是X,则比较“距离”。
<=R1路由表该目的地址表项的距离则更新,否则忽略。
[3],若180s内没收到邻居路由器X的更新路由表RIP报文,则把X记为不可达路由器,把距离设置为16。
②OSPF协议:开放最短路径优先协议,-适合大规模网络
- 使用分布式的链路状态协议
- 使用洪范法(广播)向自治系统内所有路由器发送消息,消息为与本路由器相邻的所有路由器的链路状态
- 只有链路状态发生变化时,路由器才向所有路由器洪泛发此消息
- 直接使用IP数据报传送,每30min更新链路状态数据库
③BGP协议:和相邻路由器交换
<1>交换信息为”完整的路径“--一组路径向量
- BGP发言人(网络边际路由器,与外部网络相连的路由器),之间交换路由信息要先建立TCP连接。
- BGP是应用层协议,借助TCP传送。
<2>BGP-4的四种报文
[1],OPEN打开报文,用来与相邻的另一个BGP发言人建立关系,并认证发送方
[2],UPDATE更新报文,通告新路径或撤销原路径
[3],KEEPALIVE报文,在无UPDATE时,周期性的证实邻站的连通性,也作为OPEN确认
[4],NOTIFICATION报文,报告先前报文的差错,也被用于关闭连接。
3.6,IP组播:
3.6.1,IP数据报的3种传播发送:
- 单播:点对点,一个目的IP地址
- 广播:点对多点,发给同一广播域或子网内的所有设备。
- 组播:点对多点,组播发送者发送一次数据,借助组播路由协议为组播数据报建立分发树,被传送的数据到达距离用户端尽可能近
的结点后才开始复制和分发。
3.6.2,IP组播地址:
- D类地址:224.0.0.0~239.255.255.255 一个D类地址表示一个组播组,只能作为分组的目标地址。源地址总是单播的地址
- 组播数据报也是尽最大努力交付,并提供可靠交付,应用于UDP
- 对组播报文不产生ICMP差错报文,(丢就丢了)
- 并非所有D类地址都可以作组播地址,(类似ABC3类地址中的公有地址和私有地址,)
3.6.3,组播两种情况:
①因特网范围内组播:
<1> IGMP协议:网际管理协议
- 组播路由器:让路由器知道本局域网是否有主机(路由器)参加或退出了某个组播。
<2>IGMP协议流程:
[1]某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要成为改组的成员。
本地组播路由器收到IGMP报文后,路由组播路由选择协议发给因特网上其他组播路由器。
[2]本地组播路由器周期性探测本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
只有有一个主机对某个组播组响应,路由器就认为这个组时活跃的,如果经过n次探询,没有一个主机响应,
组播路由器认为本网络上的主机某有在此组播组,就不再把这组的成员关系发给其他组播路由器。
<3>组播路由选择协议:用于路由网中选择一条合适的链路
- 基于链路状态的路由选择算法
- 基于距离向量的路由选择算法
- 协议无关的组播路由选择(稀疏/密集)
②硬件组播(局域网范围内):
将组播地址映射为组播Mac地址:
- 组播MAC地址:以01-00-5E开头,剩下的6个16进制数由,IP组播地址的最后23位得到
IP组播地址32位:1110 _ _ _ _ _[23位]
0 1 0 0 5 E
组播MAC地址48位:0000 0001 0000 0000 0101 1110 -(后24位由默认位0+[IP组播地址23位组成])
- 转换地址时 由于IP组播地址有5位未使用, 所有IP地址不同的主机可能映射同一MAC组播地址。所有接收
组播数据报的主机,在IP层利用软件进行过滤,把不是本机接收的数据报丢弃。
第四章 传输层
- 提供进程和进程之间的通信,
- 复用和分用
- 对收到的报文进行差错检测
- 两种协议,TCP,UDP
4.1,TCP与UDP:
TCP:面向连接的传输控制协议,传送数据之前必须建立连接,数据传送结束后释放连接,不提供广播或者组播服务。
由于TCP要提供可靠的面向连接的传输服务,因此不可避免的增加了许多开销:确认,流量控制,计时器及连接管理
可靠,面向连接,时延大,适用于大文件。
UDP:无连接的用户数据报协议,传送数据报之前不需要建立连接,收到UDP报文后也不需要确认。
不可靠,无连接,时延小,适用于小文件
4.2,端口:
- 复用:应用层所有的应用进程都可以通过传输层传送给网络层
- 分用:传输层从网络层收到数据后,交付指明的应用进程。
- 端口:(逻辑端口,软件端口)是传输层SAP,标识主机中的应用程序
端口号只有本地意义,在因特网中,不同计算机的相同端口号是没有联系的
端口号长度:16bit,能表示65535个不同端口号。
- 套接字Socket={<主机IP地址><端口号>} 唯一标识网络中一个主机和它上面的一个进程。
4.3,UDP协议:
4.3.1,特点:
①UDP是无连接的,减少开销和发送数据之前的连接时延
②UDP最大努力交付,不可靠交付
③UDP是面向报文的,适合一次性传输少量数据的网络应用。
④UDP无拥塞控制,适合很多实时应用
⑤UDP设备开销小8B,TCP 20B
4.3.2,首部格式:
4.3.3,UDP实现可靠传输:
- 序号-确认-超时重传,机制
- 滑动窗口-解决乱序得到问题。(流量控制,拥塞控制)
在应用层实现(一个TCP)
4.4,TCP协议:
4.4.1,特点:
①TCP是面向连接的(虚连接)的传输层协议,
②每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
③TCP提供可靠交付的服务,无差错,不丢失不重复,按序到达。(可靠有序,不丢不重)
④TCP提供全双工通信:
发送缓存:准备发送的数据和以发送尚未收到确认的数据
接收缓存:按序到达但尚未被接受应用程序读取的数据和不按序到达的数据
⑤TCP面向字节流,TCP把应用程序交下来的数据看成仅仅是一连串的无结构字节流。
4.4.2,TCP的首部格式:
①序号:在一个TCP连接中传送的字节流中每一个字节都按序编号,本字段标示本报文段所发送数据的第一个字节序号。
②确认号:期望收到对方下一个报文段的第一个数据字节序号,若确认后未N,则表示到序号N-1为止的所有数据已经正确收到
③数据偏移:(首部长度)TCP报文段的数据起始处距离TCP报文的起始处有多远,单位是4B
④紧急位URG:URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传递,不用再缓存中排队,配合紧急指针所有。
⑤确认位ACK:ACK=1时,确认号有效,连接建立后所有传送的报文段都必须把ACK置为1.
⑥同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文
⑦终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。
⑧窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量
⑨紧急指针:URG=1时有效,指出本报文段中紧急数据的字节数,(紧急数据放在首阶段首)
4.4.3,连接管理:
①三次握手:
<1>客户端发送连接请求报文段,无应用层数据。
SYN=1,seq=x(随机生成)
<2>服务端收到请求连接报文,为该TCP连接分配缓存和变量,并向客户端返回确认报文段。允许连接无应用层数据
SYN=1,ACK=1,seq=y(随机),ack=x+1
<3>客户端收到确认报文段,为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。
SYN=0,ACK=1,seq=x+1,ack=y+1
②四次挥手:
<1>客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接,
FIN=1,seq=u(数据字节序号,不包含数据)
<2>服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了,--半关闭状态,
ACK=1,seq=v,ack=u+1
<3>服务器发送完数据,就发出连接释放报文段,主动关闭TCP连接,
FIN=1,ACK=1,seq=w,ack=u+1,
<4>客户端回送一个确认报文段,在等待计数器设置的2MSL(MSL最长报文段寿命)后,连接关闭
防止该确认报文丢失,服务端会重传第三步请求关闭报文,若客户直接关闭,服务端一直重传第三步
连接无法断开。
ACK=1,seq=u+1,ack=w+1,
4.4.4,可靠传输:
①可靠:保证接收方从缓存中读取的字节流与发送方发出的字节流是完全一样的。
②实现可靠的机制:
<1>校验:与UDP校验一样,添加伪首部,计算校验和
<2>序号:面向字节流,对每一个字节编号,不定字节组成报文段,报文段中序号字段存放该字段中第一个字节序号
<3>确认:累计确认!已发送未收到确认的报文段是需要存放在缓存里的,接收方维护已确认的序号(期望序号),等待之前序号的报文段
<4>重传:
- 超时重传:重传时间:RTTs(加权平均往返时间)自适应算法,动态改变重传时间。
根据先前字段往返所有的时间来动态求得。
- 冗余ACK(冗余确认-快重传):每当收到失序报文段时,发送一个冗余ACK,指明一下期望字节号,(而不是等合适得时间)
发送方收到3个冗余ACK,=>认为报文的丢失,重传。
4.4.5,流量控制:让发送方慢点,滑动窗口机制。
①在TCP报文段首部有一个窗口字段,rwnd,用于记录当前窗口大小,在接收方确认报文(或捎带确认得数据报里)里。
发送方根据自己估算的网络拥塞程度而设置的窗口值:cwnd。
发送方窗口大小取Min(rwnd,cwnd)
②在发送方接收到rwnd=0的报文后,会等待接收方接收窗口空闲通知,TCP为某个连接设置一个持续计时器,只要一方收到另一方的
0窗口通知,就启动持续计时器,时间到后就发送一个窗口探测报文段,接收方收到探测报文段时,给出现状的窗口值。
4.4.6,拥塞控制:
①拥塞:对资源的需求的总和>可用资源。网络中有许多资源同时呈现供应不足=>网络性能变坏=>网络吞吐量将随输入负荷增大而下降。
拥塞控制:防止过多的数据注入到网络中:全局性。
②慢开始-拥塞避免
③快重传-快恢复
<1>拥塞窗口cwnd(4.4.5中用到)
<2>传输轮次:发送一批(发送窗口里有的时间都可以发,不用停等)数据报,并收到他们确认的时间。
<3>门限值ssthresh:慢开始指数增长到一定值,cwnd改为拥塞避免加法增长阶段
<4>慢开始:cwnd=1,【单位:一个报文段MSS】,慢开始阶段cwnd以“指数增长”阶段
<5>拥塞避免:cwnd>ssthresh后将“指数增长”改为“加法增大”
<6>乘法减小:网络发送拥塞时,ssthresh=0.5 cwnd。cwnd=1。
<7>快重传:冗余ACK,
<8>快恢复:ssthresh=0.5 cwnd,cwnd=0.5cwnd
第五章 应用层
5.1,功能:
①文件传输、访问、管理 FTP
②电子邮件 SMTP,POP3
③虚拟终端 HTTP
④查询服务和远程作业登录 DNS
5.2,网络应用模型
①客户/服务器模型(C/S模型):
服务器:<1>永久性提供服务<2>永久性访问地址/域名
客户机:<1>与服务器通信,使用服务器提供的服务<2>间歇性接入网络<3>可能使用动态IP地址<4>不与其它客户机直接通信
②P2P模型:
<1>不存在永远在线的服务器
<2>每个主机即可以提供服务,也可以请求服务
<3>任意端系统/结点之间可以直接通讯
<4>结点可间歇性接入网络
<5>结点可能改变IP地址
<6>可拓展性好
<7>网络健壮性强
5.3,DNS系统:域名解析系统 www.baidu.com=>IP地址
5.3.1,域名:www.baidu.com.
①根:.
②顶级域名:
- 国家级域名:cn、us、uk
- 通用级域名:com、net、org、gov、int、aero、...
- 基础结构域名/方向域名:arpd
③二级域名:
- 类别域名:com、ac、edu、gov、mil、net、org、
- 行政区划域名:用于我国各省,自治区,直辖市,bj,js
- 自己注册的域名:cctv,cskaoyan,kedacom
④三级域名:www、mail、ftp、、
⑤四级域名:
5.3.2,域名服务器:
①根域名服务器:记录各顶级域名服务器的IP地址
②顶级域名服务器:管理该顶级域名服务器注册的所有二级域名
③权限域名服务器:负责一个区的域名服务器 如:abc.org y.abc.org
④本地域名服务器:当一个主机发出DNS请求时,这个查询请求报文就发给本地域名服务器
5.4,FTP:文件传输协议:提供不同种类主机系统(硬,软件体系)之间的文件传输能力。
- 基于C/S模型
- 依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器
- 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端
②FTP工作原理:
<1>登录,匿名登录,只要输入服务器地址就能登录。
<2>FTP使用TCP实现可靠传输
<3>FTP传输模式:
- 文本模式:ASCII模式,文本序列。
- 二进制模式:Binary 二进制序列。
5.5,电子邮件系统
5.5.1,电子邮件信息格式:
- 信封:abc@163.com
- 内容:<1>首部: To:asd@163.com
Subject:Hellow!
<2>主体:...
5.5.2,组成结构:
邮件服务器:<1>发送和接收邮件
<2>向发件人报告邮件传送结果
<3>可以作客户端,也可以做服务器
5.5.3,SMTP:简单邮件传送协议
- 规定了两个相互通信的SMTP进程(C/S)之间的交换信息
- SMTP搞定了14条命令,和21种应答信息。(三位数字代码+简单文字说明)
- TCP连接,熟知端口号:25,
SMTP通信的三个阶段:
①连接建立:
发送方---->发送方邮件服务器 ------ 接收方邮件服务器
接收方可以接收发送:“250,OK”
不接受发送:“421,Service not avaliable”
②邮件发送:
C:MAIL FROM:<abc@163.com>
S:250,OK / S:(452|500) 服务器是否已准备好接收邮件
C:RCPT TO:<1@163.com>
RCPT TO:<1@263.com> 可以有多个RCPT TO命令,群发
....
S:250 OK /S:550 No such user here SMTP服务器确定用户是否存在
C:DATA 要开始传文件了
S:354,sstart main input;end wih
C:DATA....
S:250 OK
③连接释放:
C:QUIT
S:221
缺点:
①SMTP不能传送可执行文件或其他二进制对象
②SMTP仅限于传送ASCII码,不能传送其他非英语国家文字
③SMTP服务器会拒绝超过一定长度的邮件
5.5.4,MIME:通用因特网邮件扩充
- 使电子邮件支持声音,图像,视频多种国家语言等等。
- 使得传输内容丰富多彩
5.5.5,POP3:邮局协议
TCP 端口号:110 C/S
工作方式:下载并保留(在服务器)
下载并删除
5.5.6,IMAP:
- 用户通过客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才会下载到
用户计算机上
- IMAP可以让用户在不同对方使用不同的计算机随时上网阅读邮件,还允许只读其中一部分(先看正文,有WIFI再下载附件)
5.6,万维网
①万维网WWW:是一个超大规模的,联机式的信息储藏所/资料空间。是无数个网络站点和网页的集合。
统一资源定位符:URL 唯一标识资源
②URL一般格式:
<协议>://<主机>:<端口>/<路径>
http 域名
ftp
③用户通过点击超链接获取资源,这些资源通过超文本传输协议(HTTP),传输给使用者
④万维网以C/S模式工作,用户浏览器就是万维网客户端,万维网文档所驻留的主机运行服务器程序
⑤万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便的从一个界面连接到另一个界面
并在自己屏幕上显示出来。
5.7,HTTP
- HTTP协议是无状态的,
Cookie:用于标识用户,是存储在用户主机的中的文本文件,记录一段时间内某用户的访问记录。
提供个性化服务
- HTTP采用TCP作为运输层协议,但HTTP本身是无连接的,通信双方在交换HTTP报文之前不需要先建立HTTP连接
①HTTP的报文格式:
- 请求报文:
- 响应报文:
②状态码:
1xx:表示通知信息,如请求收到了或正在处理
2xx:表示成功,如接收或成功了
3xx:表示重定向,如果完成请求必须采取进一步行动
4xx:表示客户端的差错,如请求有错误的语法或不能完成
5xx:表示服务器差错,如服务器失效或无法完成请求。
503:Server Unvailable 由于临时的服务器维护或过载,当前不处理请求
500:Internal server Error: 未知服务器端错误
408:TimeOut 请求超时
404:Not Found 请求资源不存在
403:Forbiden 服务器收到消息,但拒绝提供服务
401:Unauthorized 当前请求需要用户验证
400:Bad Request 语义有误,不被服务器理解
200:OK ,表示客户请求成功
③浏览器输入URL请求
<1>浏览器解析域名
<2>浏览器向DNS服务器请求解析,IP地址,DNS解析出IP地址
<3>浏览器与服务器建立TCP连接,发起HTTP请求
<4>服务器响应HTTP请求,
<5>浏览器得到HTML代码,并请求HTML中的静态资源(json,css,图片)
<6>释放连接
<7>浏览器对页面进行渲染
5.8,HTTPS
①HTTP安全问题:
- 使用明文进行通信,内容可能会被窃听
- 不验证通信方的身份,通信方有可能遭遇伪装
- 无法证明报文的完整性,报文有可能遭到篡改
②HTTPS:让HTTP先和SSL(Secure Sockets Layer)通信,再由SSL和TCP通信,也就是说HTTPS使用了
隧道进行通信。
- 通过使用SSLHTTPS具有了加密(防窃听)、认证(防伪装防调包)、和完整性保护(防篡改)
<1>加密:彻底搞懂HTTPS加密
- 对称加密:加密和解密使用同一把密钥
+:运算速度快
-:无法安全的将密钥传输给通信方
- 非对称加密:公开密钥加密,加密解密使用不同密钥
公钥所有人都可以获得,通信发送方获得接收方的公钥后,就可以用公钥进行加密,接收方收到通信内容后用私钥解密
+:可以安全的将公钥传输给通信发送方
-:运算速度慢,保证不了服务器到浏览器的数据安全(公钥是明文传输的)
- HTTPS采用混合加密机制
[1]浏览器请求服务器,服务器随机生成公钥A,私钥a,并将A明文发给浏览器
[2]浏览器随机生成对称加密密钥B,并用公钥A加密后发给服务器,
[3]服务器收到加密后的密钥用a加密得到B
[4]浏览器与服务器用B通信---只有浏览器和服务器知道B
漏洞:中间人攻击:
[1]浏览器向服务器发起请求,服务器生成A-a,将A发给浏览器
[2]中间人劫持A保存下来,用自己生成的X-x,调包把X发给浏览器
[3]浏览器生成B,用他以为的A(X)加密发给服务器。
[4]中间人拿到B(X),用x解密,再用A解密发给服务器。
[5]服务器用a解密B(A)得到B
[6]浏览器与服务器用B通信,会被中间人窃听
漏洞原因:浏览器如何证明收到的公钥是服务器发来的(而不是中间人发来的)
<2>数字证书:网站再使用前,向CA机构申请颁发一份数字证书,证书里有证书持有者,证书持有者的公钥等信息。服务器把证书发给浏览器
浏览器从证书拿到公钥。证书可以证明,公钥对应的网站,(域名)。
- 防止证书被中间人篡改:数字签名:
[1]CA拥有非对称加密的公钥和私钥
[2]CA对证书明文信息Hash(加快速度)
[3]对hash后的值用私钥加密得到数字签名
浏览器得到证书后:
[1]得到明文T,数字签名S
[2]用CA认证的公钥解密得到S1
[3]将T 用证书里说的 hash算法得到T1
[4]比较S1与T1是否相等,相等则没被篡改
<3>完整性保护:
- SSL提供报文摘要功能来进行完整性保护,数字签名
<4>HTTPS缺点:
- 速度慢
- 需要支付证书授权费用