admin 管理员组文章数量: 887021
文章目录
- 0 计算机网络概述
- 0.1 计算机网络在信息时代的作用
- 0.2 计算机网络的重要功能
- 0.3 因特网概述
- 0.3.1 理论
- 0.3.2 三个阶段
- 0.4 多层次的ISP结构
- 0.5 因特网的组成
- 0.6 三种交换的比较
- 0.7 性能指标
- 0.7.1 速率
- 0.7.2 带宽
- 0.7.3 吞吐量
- 0.7.4 时延
- 0.7.5 时延带宽积
- 0.7.6 往返时间
- 0.7.7 利用率
- 1 计算机网络的体系结构
- 1.1 OSI七层模型(开放式系统互联参考模型)
- 1.2 网络安全和OSI参考模型
- 1.3 TCP/IP四层模型
- 1.4 小结
- 2 物理层
- 2.1 物理层基本概念
- 2.2 基础知识(通信)
- 2.2.1 数据通信模型
- 2.2.2 相关术语
- 2.2.4 信道
- 2.2.5 基带信号和带通信号
- 2.2.6 几种调制方法
- 2.2.7 数据通信常用编码
- 2.2.8 信道的极限容量
- 2.2.9 信噪比
- 2.2.10 奈氏准则和香农公式的应用范围
- 2.3 传输媒体
- 2.4 信道复用技术
- 2.4.1 频分复用
- 2.4.2 时分复用
- 2.4.2.1 统计时分复用
- 2.4.3 波分复用
- 2.4.4 码分复用
- 2.4.4.1 格式化内积
- 2.4.4.2 多址技术
- 2.5 数字传输系统
- 2.6 带宽接入技术
- 3 数据链路层
- 3.1 数据发送模型
- 3.2 数据链路层的信道类别
- 3.3 链路和数据链路
- 3.4 数据链路层传输的是帧
- 3.5 数据链路层三大基本问题
- 3.5.1 封装成帧
- 3.5.2 透明传输
- 3.5.3 差错检测
- 3.5.3.1 循环冗余检验
- 3.6 PPP点对点协议
- 3.6.1 PPP协议概述
- 3.6.2 PPP协议需要满足的要求
- 3.6.3 PPP协议不需要满足的要求
- 3.6.4 PPP协议的组成
- 3.6.5 PPP协议帧格式
- 3.6.6 PPP的透明传输
- 3.6.7 PPP不使用序号和确认机制
- 3.6.8 PPP协议的工作状态
- 3.6.9 PPP应用举例( C i s c o Cisco Cisco P a c k e t Packet Packet T r a c e r Tracer Tracer模拟)
- 3.6.10 PPPoE
- 3.7 局域网
- 3.7.1 局域网的拓扑结构
- 3.7.2 局域网的特点和优点
- 3.7.3 媒体共享技术
- 3.7.4 最初的以太网
- 3.8 载波监听多点接入/碰撞检测--以太网使用CSMA/CD协议
- 3.8.1 碰撞检测
- 3.8.2 争用期
- 3.8.3 二进制指数类型退避算法 (truncated binary exponential type)
- 3.8.4 CSMA/CD重要特性
- 3.9 以太网
- 3.9.1 以太网的两个标准
- 3.9.2 以太网与数据链路层的两个子层
- 3.9.3 以太网提供的服务
- 3.9.4 利用集线器Hub组成以太网
- 3.9.5 集线器的Hub一些特点
- 3.9.6 常见以太网标准(网线)
- 3.9.7 以太网的信道利用率
- 3.9.8 以太网的信道利用率:参数а
- 3.10 MAC层
- 3.10.1 MAC层的硬件地址(MAC地址)
- 3.10.2 修改MAC地址
- 3.10.3 适配器检查MAC地址
- 3.10.4 MAC帧格式
- 3.10.5 无效的MAC帧
- 3.10.6 帧间最小间隔
- 3.11 物理层、数据链路层的网络设备(组网)考虑
- 3.11.1 在物理层考虑扩展
- 3.11.2 在数据链路层考虑扩展
- 3.11.3 使用网桥扩展以太网:好与坏
- 3.11.4 透明网桥
- 3.11.5 透明网桥的自学习算法
- 3.11.6 透明网桥的自学习和帧转发-小结
- 3.11.7 透明网桥的生成树算法STP
- 3.12 多接口网桥:交换机switch
- 3.13 虚拟局域网VLAN
- 3.13.1 VLAN
- 3.13.2 跨交换机的VLAN
- 3.13.3 ISL标记
- 3.13.4 虚拟局域网帧格式
- 3.14 不同规格的以太网
- 3.14.1 100BASE-T 以太网
- 3.14.2 100Base-T特点
- 3.14.3 吉比特以太网
- 3.14.4 10吉比特以太网
- 3.14.5 端到端的以太网传输
- 4 网络层
- 4.1 网络层提供的两种服务
- 4.1.1 电信网:虚电路服务
- 4.1.2 因特网:数据报服务
- 4.1.3 虚电路与数据报服务的比较
- 4.2 网际协议IP
- 4.2.1 物理层、数据链路层、网络层
- 4.2.2 网络互连的设备:路由器
- 4.2.3 网络互联的问题
- 4.2.4 互联网络和虚拟互联网络
- 4.3 IP协议
- 4.3.1 IP协议简介
- 4.3.2 网络层4个协议之间的层次
- 4.3.3 IP层次结构
- 4.3.4 特殊的几个地址
- 4.3.5 子网掩码的作用
- 4.3.6 子网划分
- 4.3.6.1 划分成两个子网
- 4.3.6.2 划分成四个子网
- 4.3.6.3 划分为八个子网
- 4.3.6.4 无法划分的情况
- 4.3.6.5 变长子网的划分
- 4.3.7 超网
- 4.3.8 互联网上计算机通信过程
- 4.3.9 为什么不直接使用硬件地址进行通信
- 4.4 ARP&RARP
- 4.4.1 ARP和RARP概述
- 4.4.2 ARP概述
- 4.4.3 ARP高速缓存的作用
- 4.4.4 ARP应当注意的问题
- 4.4.5 使用ARP的四种典型情况
- 4.4.6 逆地址解析RARP
- 4.5 数据报(包)
- 4.5.1 IP数据报 - 报文格式
- 4.5.2 IP数据报传输
- 4.5.3 路由器分组转发
- 4.5.4 路由聚合(route aggregation)
- 4.5.5 最长前缀匹配
- 4.5.6 二叉搜索树与路由表查找
- 4.5.7 网络负载均衡
- 4.6 ICMP
- 4.6.1 ICMP简介
- 4.6.2 ICMP报文格式
- 4.6.3 ICMP报文的类型
- 4.7 内部网关协议RIP(Router Information Protocol)
- 4.7.1 RIP概述
- 4.7.2 RIP协议的优缺点
- 4.8 内部网关协议OSPF(Open Shortest Path First)
- 4.8.1 OSPF概述
- 4.8.2 OSPF区域
- 4.8.3 OSPF特点
- 4.8.4 OSPF的基本操作
- 4.8.5 回顾OSPF和RIP
- 4.9 外部网关协议BGP
- 4.9.1 BGP概述
- 4.9.2 BGP协议的特点
- 4.10 广域网
- 4.10.1 VPN
- 4.10.2 点对点隧道协议(PPTP)
- 4.11 网络地址转换NAT
- 4.11.1 NAT概述
- 4.11.2 NAPT(PAT)概述
- 4.11.3 NAT转换方法
- 4.11.4 NAT穿透方法
- 4.11.5 虚拟机怎么上网?
- 5 传输层
- 5.0 预备知识与回顾
- 5.0.1 传输层与应用层关联
- 5.0.2 运输层协议和网络层协议的主要区别
- 5.0.3 TCP和UDP概述
- 5.0.3.1 传输层与应用层之间的关系
- 5.0.4 端口与服务的关系
- 5.0.5 防火墙简述
- 5.1 UDP
- 5.1.1 UDP的组成
- 5.1.2 UDP主要特点
- 5.2 TCP
- 5.2.1 TCP概述
- 5.2.2 TCP的可靠传输
- 5.2.2.1 信道利用率
- 5.2.3 TCP报文段的首部格式
要回顾就详细地回顾,打破砂锅问到底 = 爽!
推荐想继续再深入的可以再看看《计算机网络-自顶向下方法》和《TCP/IP详解卷1:协议》,后续看情况也会整理对应的笔记。
0 计算机网络概述
0.1 计算机网络在信息时代的作用
- 数字化,把信息存入电脑,转化成010101等二进制代码,变成电脑能够处理的过程,就是数字化过程
- 信息化,比如用微信聊天,进行数据交互
- 网络化,数字化和信息化,都离不开网络化,网络化分为三网:电信网络(又分了几大运营商的网络,有线电话拨号网络)、计算机网络、有线电视网络(数据通信是单向的);而计算机网络又分为因特网以及其他网络
0.2 计算机网络的重要功能
- 连通性,彼此联通,交换信息
- 共享性,信息共享、软(虚拟机)硬(打印机)件共享
0.3 因特网概述
0.3.1 理论
- 一台一台网络设备,计算机,称为结点,网线称为链路,这么多设备连接上交换机,组成局域网,称为网络
- 然后不止你这个区域有网络,还有很多个和你相似的区域,这么多区域用路由器等网络设备连接起来,称为互连网
- 因特网是全球最大的互联网
- 这确实有点小问题,在现在的教材上i是互连网,I是因特网(最大互联网)
- 整个因特网使用的就是TCP/IP协议
- 计算机等设备接上互联网,就能够相互通讯
- 这样全球的计算机,整个互联网就相当于一个网络,也就是因特网
0.3.2 三个阶段
- 1983年的TCP/IP是因特网的开始,TCP/IP协议是美国国防部搞出来的,当时没想那么多安全因素,后序的IPv6就将安全因素考虑进去了
- 三级结构的因特网是第二阶段
- 多层次的ISP结构的因特网是第三阶段,ISP是什么呢?比如说联通电信移动这些运营商
0.4 多层次的ISP结构
- 比如河北电信(第二层ISP)可以向Internet申请地址段,然后石家庄电信(第三层ISP)又可以像河北电信申请地址段
- 所以说服务器放到什么位置,也要看看ISP的这个对象
- 中国互联网
0.5 因特网的组成
- 边缘部分
- 客户服务器方式C/S(比如说微软edge浏览器,这就是个客户端,访问一个网站,客户端访问服务器的这个请求,就是C/S的方式)
- 对等方式P2P(假如从服务器上下载小电影,客户端越多,下载速度越慢,这个服务器就要有压力了;那么对等方式是什么?就是用户端客户机既是客户机也是服务器,在下载的时候,有很多源,从多个源下载同一个文件,这就是对等)
- 核心部分
网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其他主机通信(即传送或接收各种形式的数据)
- 电路交换
建立连接(申请占用通信资源:例如拨号)-> 通话(一直占用通信资源) -> 释放连接(释放通信资源);适合数据量很大的实时性通讯传输,核心路由器之间可以使用电路交换,建立连接后,一次性发送所有数据。
- 报文交换
和分组交换类似,都需要写地址,不过报文一般比分组长的多,因为不分段,同时报文交换的时延很长。每个中间路由器需要重新发送整个完整的报文。
- 分组交换(计算机采用的,互联网的核心部分采用了分组交换技术)
假如报文很长,所以分成几个段来分开发送
每个段都必须要有地址,收到后肯定无需地址了
接收到数据,把首部全部去掉,然后将这几段重新组合,就是原来完整的报文
将报文拆分成多个分组后,每个中间路由器需要重新发送整个完整的分组。由于分组更小,时延也就更小。
(理想情况下,比如一个报文平均分4分,从起点到终点,中间需要经过2路由时,那么第一个路由收到分组1,马上接收分组2,并且把分组1发送到第二个中间路由器。)
- 注意,每个分组进行发送的时候,走的路径可能不同,那个快走哪个,是这样的
- 同时路由器有分组转发的功能
0.6 三种交换的比较
- 分组交换省时省事
0.7 性能指标
0.7.1 速率
0.7.2 带宽
- 在Windows这个网络中心可以看出我这台主机最高是千兆
0.7.3 吞吐量
- 总的流量是吞吐量
0.7.4 时延
0.7.5 时延带宽积
0.7.6 往返时间
0.7.7 利用率
1 计算机网络的体系结构
- 首先是几个体系结构
1.1 OSI七层模型(开放式系统互联参考模型)
- 首先要理解分层
- 可以把层理解成步骤,数据通信的这些步骤理解为层
- 分层的意义:就是为了标准化,降低每个步骤之间的关联
- “分层” 可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理
- 应用层:产生网络流量、与用户交互,传输PDU(可以理解为文件、电影、图片什么的)
- HTTP、FTP、STMP
- 表示层:数据加密、压缩(微信视频,如果直接不压缩传,很大,所以先压缩再解压)
- 会话层:服务和客户端建立的会话(PS:使用netstat -nb 可以检测主机建立连接的程序),还可以查木马(木马主要是盗窃信息,病毒是破坏系统)
- 会话层这里面的命令和参数都可以用
netstat /?
这条命令来查询
- 传输层:可靠传输TCP(需建立会话)(丢了重传)、不可靠传输UDP(不建立会话)、流量控制、报文传输
- TCP、UDP
- 网络层:IP地址编址、选择最佳路径。分组传输(分组就是拆分报文,然后添加一些首部信息,这样获得所有分组后,可以按照顺序组合回成更高层的报文)
- IP、ICMP
- 数据链路层:数据如何封装,添加物理层地址(MAC)、碰撞检测、指数退让、数据帧传输
- ARP、RARP(功能上网络层,实际实现、工作是数据链路层)
- 物理层:电压、接口标准、位流(bit流)传输
- 电压标准是什么?比如说,一个电信号010101在传,那么,什么电压代表0?什么电压代表1?这就是电压标准
1.2 网络安全和OSI参考模型
- 物理层安全:就是给别人提供了接入你这个网络的机会,这就是物理上的不安全了。比如整个办公楼的网线在装修时,都预留好了,每个楼层有网线接口插座。然后这些网线都连接到地下室的服务器,来上网。哪一天要是中间几层楼出租给别的公司了,那么这些公司要是也直接用这些网线,就能访问到地下室的服务器了,这样子地下室的服务器就可能被攻击。(解决方式:可以直接在地下室服务器上拔掉这条网线接口。)
- 数据链路层安全:ADSL、AP密码,拨号上网的密码
- ADSL,用户通过电话拨号上网,需要输入账号密码。这个账号密码和应用层的邮箱系统的账号密码是不同级别的,因为这是输对账号密码网络才能通(网络层,数据链路层的问题),邮箱的密码则是应用层的问题
- 无线AP,无线网卡。要是没有密码,那么每个人都可以通过笔记本的无线网卡,直接 WiFi 蹭别人的网了,这也是属于数据链路层安全
- 网络层安全:IP限制网络访问。比如某公司限制研发部的IP网段可以连接外网,而运维部的IP网段不能访问外网。(可以通过防火墙实现IP限制等)
- 应用层安全:SQL注入漏洞、上传漏洞、XSS攻击等。SQL注入比如数据库模糊查询;上传漏洞比如上传PHP文件,然后被服务器解释并运行
1.3 TCP/IP四层模型
- 但是书上是五层模型
- 关于开放系统信息交换设计的几个概念
- 实体( e n t i t y entity entity):交换信息的硬件或软件进程
- 协议( p r o t o c o l protocol protocol):控制两个对等实体通信的规则
- 服务( s e r v i c e service service):下层向上层提供服务,上层需要使用下层提供的服务来实现本层的功能
- 服务访问点( S A P SAP SAP):相邻两层实体间交换信息的地方
1.4 小结
- 练习:
ping www.baidu
查看返回时间
2 物理层
- 五层协议,从下往上一层一层来讲解
2.1 物理层基本概念
-
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流的问题,而不是值具体的传输媒体
-
物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:
- 机械特性:例接口形状、大小、引线数目
- 电气特性:例规定电压范围(-5V~+5V)
- 功能特性:例规定-5V表示0,+5V表示1
- 过程特性:也称规程特性,规定建立连接时各个相关部件的工作步骤
2.2 基础知识(通信)
- 学通信的基础知识,对于我们了解数据在广域网上传输是非常有帮助的
2.2.1 数据通信模型
- 输入数据 --> PC --数字比特流(bit)–> 调制解调器–模拟信号–>公用电话网–模拟信号–>调制解调器–数字比特流–> PC --> 显示数据
- 从计算机PC到调制解调器叫做源系统
- 公共电话网称为传输系统
- 电话网到PC是目的系统
- 问:模拟信号与数据比特流各应用于什么场景?
- 答:如下
- 典型的数据通信系统的模型
2.2.2 相关术语
- 通信的目的就是传送信息
- 数据( d a t a data data):运送信息的实体
- 信号( s i g n a l signal signal):数据的电气的或电磁的表现(比如电压高低表示1和0,光纤光信号)
- 模拟信号:代表消息的参数的取值是连续的。(比如声音的波状图)
- 数字信号:代表信息的参数的取值是离散的。(比如数字0,1,2,5,10之类的)
- 码元( c o d e code code):在使用时间域的波形表示数字信号时,则代表不同离散数值的基00本波形就成为码元
- 在数字通信中常常用时间间隔相同的符号来表示一个二进制的数字,这样的时间间隔内的信号称为二进制码元。而这个间隔被称为码元长度。1码元可以携带 n b i t nbit nbit的信息量
码元 ,就这种上下垂直的波状的图,与模拟信号那种连续的波状不同
┏━━┓ ┏━━┓ ┏━━┓
┃ ┃▁▁┃ ┃▁▁┃ ┃
问:数字信号与模拟信号的区别是什么?
其实最明显的区别就是数字信号是离散变化的,模拟信号是连续的;
数字信号的改变没有体现中间过程的弧线,就是垂直的上凸下凹的图,或者纯数字;
模拟信号的改变能体现中间变化过程,是连续的弯曲弧状波形,需要采样、量化才能转化成数字信号。
数字信号的抗干扰性强,就算波形变化大,只要能判断是凹还是凸即可分辨出01,而模拟信号不能直接根据凹凸情况判断01,如果波形变化大,就更容易失真了。
只有模拟信号才有码元的概念吗?
首先自然界是没有数字信号的,数字信号是为了处理器处理而出现的,所以要先对模拟信号采样得到数字信号,模拟信号转数字信号要经过:采样-量化-编码,再将得到的数字信号按需要处理后转回模拟信号,编码就是对量化后的电平用编码形式表示称为码元,奈奎斯特定律说明了采样要求,当采样频率 f s m a x f_{smax} fsmax大于信号中最高频率 f h m a x f_{hmax} fhmax的2倍时,采样之后的数字信号完整包含了模拟信息,才不会发生频谱混叠
2.2.4 信道
- 信道,一般用来表示向某一个方向传送信息的媒体,所以咱们说平常的通信线路往往包含一条发送信息的信道和一条接收信息的信道
- 单工通信(单向通信):只能有一个方向的通信而没有反方向的交互(比如无线电广播,由广播台到收音机)
- 半双工通信(双向交替通信):通信的双方都可以发送信息,但不能双方同时发送(接收)(比如对讲机)
- 全双工通信(双向同时通信):通信的双方可以同时发送和接收信息(比如电话)
2.2.5 基带信号和带通信号
-
基带信号(即基本频带信号)—— 来自信源的信号(没有经过任何处理的信号)。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号就是发出的直接表达了要传输的信息的信号,比如我们说话的声波就是基带信号
-
基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制 ( m o d u l a t i o n modulation modulation)
-
因为基带信号通常传的不远(类似我们的声音,传的不是很远),如果要传的远的,就需要调制
-
调制分为两大类:
- 基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码 (coding)
- 带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)
- 带通信号:把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)
-
由于在近距离范围内基带信号的衰减不大,从而信号内容不会发生变化,因此在传输距离较近时,计算机网络都采用基带传输方式。如从计算机到显示器、打印机等外设的信号就是基带传输的
高频(HF,High frequency):是频率在3 ~ 30MHz 之间的信号频率,这只是对高频的狭隘理解。而高频是包括3MHz到X00GHz的频率范围都可以称为高频。
低频(LF,Low frequency):是指频带由30 KHz到300 KHz的无线电电波。
频率越高,传输损耗越大(比如穿透墙壁损耗能量大,导致最后获取到的信号基本是那少部分衍射、反射过来的信号),覆盖距离越小,绕射能力越弱(原理是衍射)。
低频段资源紧张,低频段的无线电波主要用于广播、点视、寻呼等系统。
2.2.6 几种调制方法
- 调幅(AM):载波的振幅随基带数字信号而变化。
- 调频(FM):载波的频率随基带数字信号而变化。
- 调相(PM):载波的初始相位随基带数字信号而变化。
2.2.7 数据通信常用编码
- 单极性不归零码(只有正数)
- 双极性不归零码(-1,+1都有表示)
- 单极性归零码(就是在上方的基础上加入归零)
- 双极性归零码(就是在上方的基础上加入归零)
- 曼彻斯特编码(bit中间有信号低-高跳变为0)(bit中间有信号高-低跳变为1):一个时钟周期只可表示一个bit,并且必须通过两次采样才能得到一个bit,但它能携带时钟信号,且可表示没有数据传输。(最前面3种没数据传输了的时候和传输0的时候,都是保持在表示0的那个电压/电平,无法区分数据到底是否结束传输了,不利于同步)
- 差分曼彻斯特编码:与曼彻斯特编码相同(其实也不完全一样就是了),但抗干扰性能强于曼彻斯特编码
从信号波形中可以看出,曼彻斯特 ( M a n c h e s t e r Manchester Manchester) 编码和差分曼彻斯特编码产生的信号频率比不归零制高。
从自同步能力来看,不归零制不能从信号波形本身中提取信号时钟频率(这叫做没有自同步能力),而曼彻斯特编码和差分曼彻斯特编码具有自同步能力。
2.2.8 信道的极限容量
- 任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰
- 码元传输的速率越高,或信号传输的距离越远,或传输媒体质量越差,在信道的输出端的波形的失真就越严重
-
奈氏准则:在任何信道中,码元传输的速率是有上限的,否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。(比如录音后,3倍速播放,就听不清楚)
-
公式为:
理想低通信道的最高码元传输速率 = 2 W B a u d 理想低通信道的最高码元传输速率 = 2W Baud 理想低通信道的最高码元传输速率=2WBaud -
+ W W W是理想低通信道的带宽,单位 H Z HZ HZ
-
+ B a u d Baud Baud是波特,是码元传输速率的单位(若一个码元含有n个bit的信息量,那么 1 B a u d = n b i t / s 1Baud = n bit/s 1Baud=nbit/s)
-
波特 B a u d Baud Baud与 b i t bit bit的区别:在调制解调器中经常用到波特 B a u d Baud Baud这个概念。bit是信息量,如果一个码元含有3个 b i t bit bit信息量,那么这个时候 1 波特 B a u d = 3 b i t / s 1波特Baud=3bit/s 1波特Baud=3bit/s。(比如光猫->光调制解调器,PC把数字信号通过光猫转模拟信号到网络传输,光猫在把接收到的模拟信号转回数字信号传到PC)
2.2.9 信噪比
-
香农(Shannon) 用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率。 信道的极限信息传输速率(单位 b / s ): C = W l o g 2 ( 1 + S / N ) 信道的极限信息传输速率(单位b/s):C=Wlog_2(1+S/N) 信道的极限信息传输速率(单位b/s):C=Wlog2(1+S/N)
- W为信道的带宽,单位 H Z HZ HZ
- S为信道内所传信号的平均功率
- N为信道内部的高斯噪声功率
-
香农公式标明:(土话说就是,周围噪音大的时候,语速放慢勉强能听清楚,语速足够慢,总能听清。比如你边放音乐边讲话,别人0.5倍速听你的讲话录音能勉强听清楚)
- 信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
- 只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种方法来实现无差错的传输。
- 若信道带宽 W W W或信噪比 S / N S/N S/N没有上限(当然实际信道不可能如此),则信道的极限信息传输速率 C C C也就没有上限。
- 实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。
奈氏准则讲的是在没有干扰的情况下的传输速率,香农公式讲的是再有噪声的传输情况下的定理。噪声越大传输越慢
2.2.10 奈氏准则和香农公式的应用范围
{1}输入信息->{2}[[源点]]->{3}输入数据(数字信号)->{4}[[发送器(调制)]]->{5}发送信号(模拟信号)=>{6}[[传输系统]]=>{7}接收信号(模拟信号)->{8}[[接收器(解调)]]->{9}输出数据(数字信号)->{10}[[终点]]->{11}输出信息
{5}~{7},码元传输速率受奈氏准则的限制(只作用于模拟信号)
{3}~{9},信息传输速率受香农公式的限制(作用于数字信号、模拟信号)
- 综上:
奈氏准则:作用于模拟信号(信道上的码元传输,前面说过了,码元即使用时间域的波形来表示数字信号,代表不同离散数数值的基本波形就是码元。)
香农公式:作用于数字信号和模拟信号
2.3 传输媒体
- 传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路
- 传输媒体可分为两大类,即导引型传输媒体和非导引型传输媒体
- 在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播
- 非导引型传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输
- 导向(引)传输媒体
- 双绞线
- 屏蔽双绞线STP(抗干扰性较非屏蔽双绞线UTP更强)
- 非屏蔽双绞线UTP
- 同轴电缆
- 50 Ω 50Ω 50Ω同轴电缆,用于数字传输,由于多用于基带传输,也叫基带同轴电缆
- 75Ω同轴电缆,用于模拟传输,即宽带同轴电缆
- 光缆
- 传输距离很远
- 单模光纤:只传输一种电磁波模式
- 多模光纤:可传输多个电磁波模式
- 双绞线
实际上,单模光纤和多模光纤的不同点,即纤芯直径大小,单模细、多模粗。在有线点视网络中使用的光纤全是单模光纤,其传播特性好,带宽可达 10 G H Z 10GHZ 10GHZ,可以在一根光纤中传输60套 P A L − D PAL-D PAL−D 电视节目。
-
非导向(引)传输媒体
- 短波通信主要是靠电离层的反射,但短波通道的通信质量较差。(毕竟靠的反射,肯定会有部分损耗掉了)
- 微波在空间主要是直线传播。(地球是圆的,多建几个很高的发送塔接收和发送微波就可以了)
- 地面微波接力通信(需要有一定高度的接收场)
- 卫星通信
非导向传输媒体就是指自由空间,其中的电磁波传输被称为无线传输。无线传输所使用的频段很广。
- 集线器Hub
- 工作特点:在网络中只起到信号放大和重发的作用,目的是扩大网络的传输范围,不具备信号的定向发送能力
- 最大传输距离:100m(不同的型号不同)(可以把信号放大)
- 集线器是一个大的冲突域
假如ABCD连接Hub,那么A->B的数据,并不判断信号从哪来到哪去,B、C、D都会收到。一方面阻塞其他主机的传输线路,一方面其他主机若主动抓包数据会导致信息泄露。如果集线器总带宽12M,那么这里ABCD平均带宽只有3M。
2.4 信道复用技术
- 为什么要使用信道复用技术,常用的信道复用技术有哪些?
- 时分复用技术与频分复用技术一样,有着非常广泛的应用,电话就是其中最经典的例子,此外时分复用技术在广电也同样取得了广泛地应用,如SDH,ATM,IP和HFC网络中CM与CMTS的通信都是利用了时分复用的技术
- SDH技术可真正实现租用电路的带宽保证,安全性方面也优于VPN等方式
- 中国移动、电信、联通、广电等电信运营商都已经大规模建设了基于SDH的骨干光传输网络
举个例子:信道复用,就是整个通道的流量20G,然后只有一个人打电话,目前是用了4K,绰绰有余了,要把这些流量全部占完利用起来,就必须使用信道复用
- 比特同步
- “比特同步”是数据通信中最基本的同步方式,又称“位同步”
- 比特是数据传输的最小单位
- 比特同步是指接收端时钟已经调整到和发送端时钟完全一样
- 比特同步的方法有外同步法和自同步法
2.4.1 频分复用
不同的基带模拟信号通过不同调制器( m o d u l a t o r modulator modulator)进行调制,调成高频信号后,和其他载波调制后的高频信号合并后传输。由于合并前,每个信号所使用的频带不同,获取方根据不同的调制器针对不同频带解调,既可获取之前传输的基带模拟信号。
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带(如下所示)
- 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)
- 总的波形,通过调制解调,就能把他再分出来
- 用的最多的,打电话的,就是频分复用
不同频段不同用户
2.4.2 时分复用
时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的。
TDM 信号也称为等时 ( i s o c h r o n o u s isochronous isochronous) 信号。
时分复用的所有用户在不同的时间占用同样的频带宽度。(可能会造成线路资源的浪费,因为即时某几个用户不交互数据了, 依旧占有时间片)
- 每一个设备都给他分配一个时间段,就跟排队样的
- 一边按着顺序给,另一边按着顺序进行接收,这样也能进行复用
- 这就是时分复用,设备之间要对等
- 不能说这边发送端3个设备,接收端两个设备,就不好时分复用了吧
同一频段下,不同时间片不同用户
- 你看D这个TDM帧位置总是在最后一个
2.4.2.1 统计时分复用
- 现在可以不按顺序了
- 现在a放进去,就加上一个标记
- b放上去,就加上一个标记,可以不用按照顺序进行存放了,反正谁过来谁就放
- 收的时候,标记为1的放那里,标记为2的放这,用户并不知道发送的时候给他加了标记(1,2等),接收的时候就会去掉这个标记
根据用户实际需要动态分配线路资源的时分复用方法。只有当用户有数据要传输时才给他分配线路资源,当用户暂停发送数据时,不给他分配线路资源,线路的传输能力可以被其他用户使用。采用统计时分复用时,每个用户的数据传输速率可以高于平均速率,最高可达到线路总的传输能力。
2.4.3 波分复用
- 实际上就是光的频分复用
2.4.4 码分复用
码分复用是CDM,常用的名词是码分多址 CDMA (Code Division Multiple Access)。联通电信手机通信、打电话的时候就是码分复用,使用的是同一个频率。
各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。
这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
每一个比特时间划分为 m m m个短的间隔,称为码片( c h i p chip chip)。
(原本 1 b i t 1bit 1bit数据 0 o r 1 0or1 0or1需要至少 m m m个 b i t bit bit去表示。码分复用也是类似频分复用一样,多个用户只要码型不同,发送的数据叠加后在网络传输,也能再根据不同的码型还原回原本的数据)
- 问题:使用一个频率,怎么进行区分?
- S站的码片如第二个序列所示
- 然后S站发送的信息,看第三行序列,1就直接原封发过去,0就使用反码进行发过去
- 然后T站有T站的码片
- 总的信号就是S和T站两个站叠加之后的信号
-
1
+
(
−
1
)
=
0
1+(-1)= 0
1+(−1)=0,
−
1
+
(
−
1
)
=
−
2
-1 + (-1)= -2
−1+(−1)=−2这样进行加
- 码分复用的缺点是什么,是发送1bit需要好几bit,本来是1bit搞定的,现在变成了m个bit,如上
- 也就是说手机数量越多的话,是不是码片就该分的越长,m值变得越大,表示1bit就需要更多的bit,这点不好
2.4.4.1 格式化内积
- 任何一个码片向量和该码片向量自己的规格化内积都是1
- S站和S站的码片相乘的话,其格式化内积都是1
- 一个码片向量和该码片反码的向量的规格化内积值是-1
- 如上,ABD都收到了信号,+1或者-1,但是C就没有收到,因为其计算结果为0
2.4.4.2 多址技术
多址技术是指实现小区内多用户之间,小区内外多用户之间通信地址识别的技术。多址技术多用于无线通信。多址技术又称为多址接入技术。
- 频分多址FDMA,早期移动通信采用,各个用户使用不同频率的频道进行通信(信道利用率低)。
- 时分多址TDMA,现在的移动通信系统多数采用这种多址技术。
- 码分多址CDMA,这种技术比较复杂,但现在已经为不少移动通信系统所采用。在第三代移动通信系统中,也采用宽带码分多址技术。(码分多址一般还会配合其他的一起用)
- 空分多址SDMA,是一种信道增容的方式,可以实现频率的重复使用,有利于充分利用频率资源。空分多址还可以与其它多址方式相互兼容,从而实现组合的多址技术,例如“空分-码分多址(SD-CDMA)”。
时分多址是以不同时隙实现通信。码分多址是以不同的代码序列来实现通信的。空分多址是以不同方位信息实现多址通信的。
2.5 数字传输系统
-
脉码调制PCM体制最初是在电话局之间的中继线上传送多路电话
-
由于历史上的原理,PCM有两个互不兼容的国际标准,北美的24路PCM(简称T1)和欧洲的30路PCM(简称E1)
-
我国采用欧洲E1标准
-
E1速率 2.048 M b / s 2.048Mb/s 2.048Mb/s,而T1速率是 1.544 M b / s 1.544Mb/s 1.544Mb/s
-
当需要更高的速率时,可采用复用的方法
2.6 带宽接入技术
用户要连接到互联网,必须先连接到某个ISP。
在互联网的发展初期,用户都是利用电话的用户线通过调制解调器连接到ISP的,电话用户线接入到互联网的速率最高仅达到56 kbit/s。
美国联邦通信委员会FCC原来认为只要双向速率之和超过200 kbit/s 就是宽带。但 2015 年重新定义为:
宽带下行速率要达到 25 M b i t / s Mbit/s Mbit/s
宽带上行速率要达到 3 M b i t / s Mbit/s Mbit/s
- x D S L xDSL xDSL(比如 A D S L ADSL ADSL,拨号上网)
- 标准模拟电话信号的频带被限制在300~400Hz范围内,单用户线本身实际可通过的信号频率仍然超过1MHz
- xDSL技术把0~4kHz低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用
- (04kHZ Voice,26108kHz Upstream,138~1104kHz Downstream)
- 下行的带宽更大,上行的带宽更少,这是因为用户一般是用下行
- 光纤同轴混合网(HFC网)
-
把现在的有线电视网进行改造,就给我们提供Internet接入服务了
-
HFC网采用结点体系结构(光纤同轴混合网HFC,Hybrid Fiber Coax)
-
HFC网是目前覆盖面很广的有线电视网CATV的基础上开发的一种居民宽带接入网
-
HFC网除可传送CATV外,还提供电话、数据和其他宽带交互性业务
-
现有额CATV网是树形拓扑结构的同轴电缆网络,它采用模拟技术的频分复用对电视节目进行单向传输。而HFC网则需要对CATV网进行改造
- FTTx技术(光纤到…技术)
-
FTTx(光纤到…)也是一种实现宽带居民接入网的方案。(x可代表不同意思)
- 光纤到家(Fiber To The Home):光纤一直铺设到用户家庭可能是居民接入网最后的解决方法(155Mb/s)
- 光纤到大楼(Fiber To The Building):光纤进入大楼后就转为电信号,然后用电缆或双绞线分配到各用户
- 光纤到路边(Fiber To The Curb):从路边到各用户可使用星形结构双绞线作为传输媒体(155Mb/s)
3 数据链路层
3.1 数据发送模型
- 主机H1 -------》( 电话网)-------》路由器R1-------》(局域网)-------》路由器R2-------》(广域网)-------》路由器R3-------》(局域网)-------》主机H2
- 这个示意图想说明,主机1应用程序想给主机2应用程序拷数据(这就是应用层与应用层之间)
- 要想把这个数据通信完成的话,要进行分装(运输层分段)
- 加网络地址(网络层加地址)
- 链路层加MAC地址
- 在物理层的线路上进行比特流的传输
- 到路由器 R 1 R_1 R1之后,收到这个比特流之后,又检查数据链路层,看是不是给自己的
- 如果是给自己的,再看数据帧的网络层地址然后决定走哪个口发出去(在网络层看网络地址如何转发)
- 从路由器 R 1 R_1 R1到路由器 R 2 R_2 R2又要重新封装一下,再次封装,又变成比特流再往上传,再看MAC地址是不是自己的,以此类推
- 如此看来,每经过一个网络设备都是这样来进行处理的
- 综上,数据传输,过路由器的时候,就到了网络层,也就是说能看到网络层的这个地址,根据这个地址选择路径,然后数据链路层进行重新封装,在物理层上进行传输
-
层次上看数据流动,那么只有主机H1和主机H2需要经过TCP/IP五层网络模型,而中间存储和转发的路由器 R 1 R 3 R1~R3 R1 R3仅经过三层(物理层、数据链路层、网络层)
-
在数据链路层,我们只关心数据帧的传输,只关心如何封装,如何传到这个点的,不关心下层物理层采用的传输介质是双绞线、同轴电缆、光纤还是其他,也不关心其信道复用技术采用的是频分多路复用FDM、时分复用TDM、统计时分复用STDM、波分复用WDM、码分多址CDMA还是其他
3.2 数据链路层的信道类别
- 主要包括两种类别:
- 点对点信道:使用一对一的点对点通信方式(中间没有其他设备)。( P P P PPP PPP协议)
- 广播信道:使用一对多的广播通信方式,过程较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。( C S M A / C D CSMA/CD CSMA/CD协议)
3.3 链路和数据链路
- 链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点
- 一条链路只是一条通路的一个组成部分
- 数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
- 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
- 一般的适配器都包括了数据链路层和物理层这两层的功能
3.4 数据链路层传输的是帧
- 帧的组成大致如下:
(帧头)(帧数据部分,受MTU限制大小<=1500字节【以太网标准】)(帧尾FCS)
中间的帧数据部分,用于封装上层网络层的IP数据报(或其他网络层数据)。
- 数据链路层数据帧传输时,向下至物理层,仍是以普通的数字信号( 0101 0101 0101)的形式传输。至于之后物理层是否转换数字信号为模拟信号,或者把基带信号载波调制成带通信号在高频段传输,信道复用技术采用哪种,无需数据链路层关心
3.5 数据链路层三大基本问题
- 数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:
- 封装成帧
- 透明传输
- 差错控制
3.5.1 封装成帧
关于封装成帧,比如说话,一句一句的说,这叫一句话一个帧,必须知道开始和结束,标记是什么
- 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧(也就是说必须要知道从哪开始从哪结束)
(帧头帧尾限界处的字节数据,通常是不可打印的控制字符,尽可能地避免和帧数据部分的内容冲突。)
(接收端数据链路层,根据首部和尾部的标记,从(物理层)比特流中识别帧的开始和结束。)
- 首部和尾部的一个重要作用就是进行帧定界,如果计算机收一个帧,没有开始或没有结束标志,会把这个帧给扔掉,这种帧也称为“半截子帧”
(当然不止如此,不同的数据链路层协议的数据帧的帧头和帧尾的功能不尽相同,通常帧尾内还包括FCS,用于判别数据是否在传输时出现错误)
-
思考问题:
-
如果帧未发送完,发送端除了问题,只能重发该帧。接收端却接受到了“半截子帧”,它回抛弃吗?为什么?
-
答:不管是接收到含有帧头(SOH)的前半部分“子帧”还是接受到含有帧尾(EOT)的后半部分“子帧”,由于不是一个完整的帧,数据链路层都会抛弃该帧。只有完整地含有帧头(SOH)帧尾(EOT)的帧,才会被保留
3.5.2 透明传输
- 传的数据里面就有开始和结束的标志,就要转变一下
- 如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”
- 头尾都是不可打印字符
- 问题
- 前面封装成帧说了,帧头帧尾是不可打印的字符,分别是帧头SOH和帧尾EOT
若传输的数据是ASCII码中的“可打印字符(共95个)”集时,帧头帧尾的识别不会出现问题。
若传输的数据不是仅由“可打印字符”组成时,就会出现问题。
eg:【帧头SOH】(帧数据部分…EOT…)【帧尾EOT】 该帧被接收端接收时,会将帧数据部分含有的EOT字符识别成帧尾,导致后面的所有数据被当作无效帧而丢弃。=> 接收端接收【帧头SOH】…EOT,舍弃…【帧尾EOT】。
- 解决方法:字节填充 ( b y t e byte byte s t u f f i n g stuffing stuffing) 或字符填充 ( c h a r a c t e r character character s t u f f i n g stuffing stuffing)
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)
- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符
- 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC
- 当接收端收到连续的两个转义字符时,就删除其中前面的一个
3.5.3 差错检测
- 概念
-
帧在传输过程中,可能产生比特差错:1可能会变成0,而0也可能会变成1。(根据前面物理层的知识,可以猜想是电压突然出现问题,或者高频信号在空气或其他介质中传输收到噪音干扰,等)
-
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)
-
误码率与信噪比有很大的关系。(信噪比SNR,SIGNAL-NOISE RATIO,物理层知识,S/N,S为信道内传输信号的平均功率,N为信道内部的高斯噪音功率,越高越好)
-
为了保证数据传输的可靠性(比如纠错,或者丢失重传等措施,这些实际由上层协议保证。),在计算机网络传输数据时,必须采用各种差错检测措施
(数据链路层只检查出错误帧并丢弃,不纠错,不重传。纠错和重传等其他动作,由上层协议实现。上层对被丢弃的帧无感知。)
-
应对手段
-
在帧尾加入冗余校验码FCS
-
在数据链路层传送的帧中,广泛使用了循环冗余检验CRC技术。(只是其中一种生成FCS的技术)
-
在发送端,先把数据划分为组。假定每组k个比特。假设带传送的一组数据M=101001(现在k=6)。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
-
FCS( f r a m e frame frame c h e c k check check s e q u e n c e sequence sequence)帧检验序列的CRC计算方式
- 用二进制的模2运算进行2n乘M的运算,这相当于在M后面添加n个0
- 得到的( k + n k+n k+n)位的数除以事先选定好的长度为( n + 1 n+1 n+1)位的除数P,得出商是Q而余数是R,余数R比除数P少1位,即R是n位。R就是CRC计算出来的FSC了
(CRC的除数P和冗余码位数n由数据链路层协议商定,无需用户自己指定,理论上除数位数越多相对越可靠。大致知道计算方式即可)
- 概念:在传输过程中可能会产生比特差错:1 可能会变成 0, 而 0 也可能变成 1
3.5.3.1 循环冗余检验
- 传出错误的话就扔了,直接重传,不对了直接扔
- 一般会先给你一个多项式,这个多项式可以得到要除的数,然后加0
- 加0的个数就是多项式的最高次,或者是要除数的位数再减去1
- 根据传输的数据位数确定,假如传x位,校验码y位,要保证2的y次方>=x
- 在二进制除法过程当中,类似十进制相减的那一步,十进制是相减,这里是异或操作,相同得0,不同得1
- 以下计算得学会,重点
-
计算出来的余数就是帧检验序列FCS
-
在数据后面添加上的冗余码称为帧检验序列FCS(Frame Check Sequence)
-
循环冗余检验CRC(Cyclic Redundancy Check)和帧检验序列FCS并不等同
- CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码。(只检错,不纠错也不重传)
- FCS可以用CRC这种方法得出,但CRC并非是获得FCS唯一方法。
-
小结:CRC差错检验技术(其实前面也都讲得很详细了,这里就再总结一下)
-
仅用循环冗余检验CRC差错检测技术只能做到无差错接受(accept)
- “无差错接受”:“凡是接收到的帧(即不包括被丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。也就是“接收端数据链路层接收到的帧都没有传输差错(有差错的帧就丢弃,不接收了)”
-
(当然这个只是理想情况,实际就算加了FCS字段,出现数据错误时也可能正好接收端FCS检验计算出来余数也是0–>0表示数据无出错,只不过概率很小。)
-
要做到“可靠传输”(即发送什么就收到什么),就必须再加上确认和重传机制
-
考虑:帧重复、帧丢失、帧乱序的情况
-
可以说“CRC是一种无比特差错,而不是无传输差错的检验机制”,(OSI/RM模型的观点:数据链路层要做到无传输差错。)实际上,无线传输时就会考虑在数据链路层实现无传输差错,而有线传输通常只做到无比特差错
3.6 PPP点对点协议
-
广泛使用于拨号上网
-
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)
-
PPP 协议在 1994 年就已成为互联网的正式标准
-
当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接(底层up)。PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)
-
这些分组及其响应选择一些 PPP 参数,和进行网络层配置(此前如有PAP或CHAP验证先要通过验证),NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机
-
通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接
-
PPP帧一般用于广域网,在以太网环境直接抓包抓不到,一般在路由器要发送数据到其他路由上(ISP提供的节点)就自动封装成PPP帧再向外传输。所以要抓包PPP帧,得连线路由器,抓包路由器上的数据
3.6.1 PPP协议概述
-
现在全世界使用得最多的数据链路层协议,是点对点协议PPP(Point to Point Protocol)
-
用户使用拨号电话线接入因特网时,一般都是使用PPP协议
-
(补充下,前面物理层的ADSL早期也是用电话线上网,但是能够同时上网和讲电话(频段/频谱不同);而更早的拨号上网,如果打电话就不能上网,上网就不能打电话,会占用电话线。)
3.6.2 PPP协议需要满足的要求
-
异步传输使用字节填充方法,同步传输使用零比特填充方法
-
简单——这是首要的要求
-
封装成帧(注意MTU限制)
-
透明性(透明传输,帧定界判别问题;异步线路用字节填充,同步线路用零比特填充)
-
多种网络层协议(会标识传输的帧数据部分是IP数据报、安全性认证PAP或者其他…)
-
多种类型链路(物理层兼容,光纤、同轴电缆、双绞线等)
-
差错检测(确保无差错接收,CRC等技术)
-
检测连接状态(比如拨号上网,返回各种网络状态信息)
-
最大传输单元(MTU,以太网的标准是<=1500Byte)
-
网络层地址协商(比如拨号上网后,分配IP地址)
-
数据压缩协商(比如多个0或者多个1协商怎么简写表示,然后接收后再还原)
3.6.3 PPP协议不需要满足的要求
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
3.6.4 PPP协议的组成
- PPP 协议有三个组成部分:
- 一个将 IP 数据报封装到串行链路的方法
- 链路控制协议 LCP (Link Control Protocol)
- 网络控制协议 NCP (Network Control Protocol)
- 补充知识
- 网络控制协议NCP(针对每一个网络层协议)
- 链路控制协议LCP
- 高级数据链路控制协议HDLC(并不是PPP的组成部分,和PPP同样是数据链路层协议)
- 只有LCP工作正常了,网络控制协议NCP才能通
- 举例:只有ADSL拨号不欠费,账号密码都对,你才能从对方得到IP地址,你的网才能通
- 数据链路层协议可以用于异步串行或同步串行介质
- 它使用LCP(链路控制协议)建立并维护数据链路连接
- 网络控制协议NCP允许在点到点连接上使用多种网络层协议
- (比如ADSL拨号上网,只有LCP身份认证通过了,才能到NCP放行网络层,给你分配IP)
3.6.5 PPP协议帧格式
PPP采用7EH作为一帧的开始和结束标志(F);其中地址域(A)和控制域(C)取固定值(A=FFH,C=03H) ;协议域(两个字节)取0021H表示IP分组,取8021H表示网络控制数据,取C021H表示链路控制数据;帧校验域(FCS)也为两个字节,它用于对信息域的校验。若信息域中出现7EH,则转换为(7DH,5EH)两个字符。当信息域出现7DH时,则转换为(7DH,5DH)。当信息流中出现ASCII码的控制字符(即小于20H),即在该字符前加入一个7DH字符
- PPP 帧的首部和尾部分别为 4 个字段和 2 个字段
- 标志字段 F = 0 x 7 E F = 0x7E F=0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)
- 地址字段 A 只置为 0xFF。地址字段实际上并不起作用
- 控制字段 C 通常置为 0x03
- PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节
- 如图,一开始的 7 E 7E 7E 代表开始,这个写成二进制的话就是 01111110 01111110 01111110
- 只要见到像这种 01111110 01111110 01111110 的,这就是个开始,帧头
- 然后结尾又是 7 E 7E 7E,结尾与开头一样(有的不一样,但是在PPP当中头尾是一样的)
- F F FF FF 是目标地址,在点到点的地址里面,写不写终点地址无所谓,所以写不写无所谓
- 所以 F F FF FF 和 03 03 03 都是固定的
- 协议那里,会占用两个字节,这两个字节会来标识信息部分那里的信息是什么,如下表
字节数据 | 表示类型 |
---|---|
0x0021 | PPP帧的信息字段,IP数据报 |
0xC021 | 信息字段是PPP链路控制数据 |
0x8021 | 表示这是网络控制数据 |
0xC023 | 信息字段是安全性认证PAP |
0xC025 | 信息字段是LQR |
0xC223 | 信息字段是安全性认证CHAP |
3.6.6 PPP的透明传输
当 PPP 用在异步传输时,就使用一种特殊的字符填充法
当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)
- 字节填充
问题:信息字段中出现标志字段的值,可能被误认为是“标志字段”,如何处理?
- 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)
- 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)
- 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变
- 零比特填充方法
-
这里传的是比特流了,这样传的长度就不一定是8的倍数了(一个字节8bits)
-
PPP协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特连续传送)。这时PPP协议采用零比特填充法实现透明传输
-
在发送端,只要发现有5个连续1,则立即填入一个0,这样就不会出现 7 E 7E 7E了,就不会出现误判结束与开始了,接收端对帧中的比特进行扫描。每当发现5个连续的1时,就把这5个连续1后的一个0删除
-
因为扫描的时候是碰见五个连续的1就加0,这样好理解一点
-
字节填充针对传输字节的情况,零比特填充针对传输比特的情况
3.6.7 PPP不使用序号和确认机制
- PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的
- 帧检验序列 FCS 字段可保证无差错接受
错了就扔掉,不要求纠错,不要求重传
3.6.8 PPP协议的工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
- PC 机向路由器发送一系列的 LCP(链路控制) 分组(封装成多个 PPP 帧)
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接
可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
3.6.9 PPP应用举例( C i s c o Cisco Cisco P a c k e t Packet Packet T r a c e r Tracer Tracer模拟)
Router1:
hostname router1
username router2 password xxx
interface Serial0
ip address 192.168.16.1 255.255.255.0
clockrate 1000000
ppp authentication chap
Router2:
hostname router2
username router1 password xxx
interface Serial0
ip address 192.168.16.2 255.255.255.0
ppp authentication chap
- 一些PPPoE报文以及相关交互
3.6.10 PPPoE
PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。
- 使用时的缺点:
- 使用Internet前,需先透过PPPoE进行拨接,而非计算机引导后立即上网。(引导后立即上网,详见DHCP,有些ISP有提供第1台PC自DHCP获取固定IP)
- 部分ISP会对PPPoE的连线用户采取定时断线,以节省营运成本及IP地址的占用,故对于需长时间挂网的用户较不利。但也有部分ISP为提供用户选择PPPoE可发配非固定IP或固定IP的服务
- 目前[Windows XP](https://baike.baidu/item/Windows XP)之后的Windows,[Mac OS X](https://baike.baidu/item/Mac OS X)、Linux等操作系统等皆已内置PPPoE的拨接功能,更早期的操作系统需另行安装PPPoE的拨接程序,如Enternet 300、RAS PPPoE等
3.7 局域网
3.7.1 局域网的拓扑结构
拓扑的意思就是说其在物理上是如何连接的
- 星形网
- 总线网 (两端都有电阻,最早的以太网Ethernet正是这种)
- 环形网 (骨干网络用得多,现局域网用得少)
- 树形网
- …
- 环形网在骨干网上用的比较多
- 星形网的鲁棒性较总线网更好
3.7.2 局域网的特点和优点
- 局域网最主要的特点是:网络作为一个单位所拥有,且地理范围和站点数量均有限
- 局域网具有如下主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变
- 提高了系统的可靠性、可用性和残存性
(花钱租用别人的链路,比如通过电信的ADSL技术,比如和邻居都付钱买了电信的宽带,就算面对面聊天,都是广域网;但是如果你们无线AP,用网线连起来了,就算隔着100迷,还是局域网,所以广域网就算花钱租带宽。还有广域网肯定就不广播了,不然要是大家都广播,带宽就被占满了。不过也有黑客用DOS或者DDOS强行占满攻击目标的带宽,使攻击目标网络瘫痪或者无法正常处理请求。)
3.7.3 媒体共享技术
静态划分信道:
- 频分复用-FDM
- 时分复用-TDM
- 波分复用-WDM
- 码分复用 -CDMA
动态媒体接入控制(多点接入):
- 随机接入
- 受控接入 ,如多点线路探询 (polling),或轮询
3.7.4 最初的以太网
- 最初的以太网是将多计算机都连接到一根总线上。当初认为这样的连接方式既简单又可靠,因为总线上没有源器件
(连接总线的主机通信时占用整个线路,单通道,不存在使用信道复用技术)
- 比如总线上连接A、B、C、D四台主机,某一时刻A->B发送数据,此时总线上的每一个工作的计算机(除A自己)都能检测到A发送的数据信号。由于只有计算机B的地址与数据帧首部写入的地址一致,因此只有B接收这个数据帧
(其他的主机其实也接收到数据帧了,不过判断目的地址与自己不同,就丢弃了。所以如果在这里强行抓包,是可以获取到数据的–>存在数据泄露的安全问题)
- 具有广播特性的总线上实现了一对一的通信
(其实就是,不管谁发数据,总线上都广播该数据,霸占整个线路。早期这种)
- 优点:无需共享信道了
- 缺点:只能一个发一个收,不能同时两个或两个以上
3.8 载波监听多点接入/碰撞检测–以太网使用CSMA/CD协议
- 点到点的是PPP协议
- 以太网呢?
- 以太网使用的是载波监听,多点接入,碰撞检测的这种机制来通讯
-
"多点接入"表示许多计算机以多点接入的方式连接在一根总线上
-
"载波监听"是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免碰撞
-
"碰撞检测"就是用电子技术检测总线上有没有其他计算机发送的数据信号
3.8.1 碰撞检测
“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”
检测到碰撞后
- 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
- 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送
- (这里说遇到碰撞后随机事件后再次发送,其实也不完全算随机,有一定的计算公式,后面会提及具体算法。二进制指数退避算法)
3.8.2 争用期
-
最先发送数据帧的站点,在发送数据帧后至多经过2τ(传播时延*2)就可以知道发送的数据帧是否遭到了碰撞。
-
以太网的争用期
- 以太网的端到端往返时延 2 τ 2τ 2τ称为争用期(碰撞窗口)。通常取 51.2 μ s 51.2μs 51.2μs作为争用期的长度
- 对于10Mb/s以太网,争用期内可发送512bit,即64字节
- 以太网在发送数据时,若前64字节未发生冲突,则后续的数据就不会发生冲突
-
最短有效帧长
- 如果发生冲突,就一定是在发送前64字节之内
- 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节
- 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧
最先发送数据帧的站,在发送数据帧后至多经过时间 2 τ τ τ (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
以太网的端到端往返时延 2 τ τ τ 称为争用期,或碰撞窗口。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
10 Mbit/s 以太网取 51.2 μ s μs μs 为争用期的长度。
对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。
3.8.3 二进制指数类型退避算法 (truncated binary exponential type)
- 这是协议来实现的,不是用户实现的
3.8.4 CSMA/CD重要特性
- 使用CSMA/CD协议的以太网不能进行全双工通信,只能进行双向交替通信(半双工通信)
- (因为通信占用整个信道,且广播发送。)
- 每个站在发送数据之后的一小段时间内,存在遭遇碰撞的可能性。这种发送的不确定性使得整个以太网的平均通信量远小于以太网的最高数据率
3.9 以太网
3.9.1 以太网的两个标准
-
DIX Ethernet V2是世界上第一个局域网产品(以太网)的规约。
-
IEEE的802.3标准
DIX Ethernet V2标准与IEEE的802.3标准只有很小的差别,因此可以将802.3局域网简称为“以太网”。严格来说,"以太网"应当是指符合DIX Ethernet V2 标准的局域网。
3.9.2 以太网与数据链路层的两个子层
-
为了让数据链路层能更好地适应多种局域网标准呢,802委员会局域网的数据链路层拆分成两个子层:
- 逻辑链路控制LLC(Logical Link Control)子层(基本弃用了,有些设备压根就不带这个了)
- 媒体接入控制MAC(Medium Access Control)子层
- 现在局域网基本上只有MAC协议了
与接入到传输媒体有关的内容基本都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种协议的局域网对LLC子层来说都是透明的。
由于TCP/IP体系经常使用的局域网是DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路控制子层LLC(即802.2标准)的作用已经不大了。
- 很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议
3.9.3 以太网提供的服务
-
以太网提供的服务是不可靠的交付,即尽最大努力的交付。
-
当接收站受到有差错的数据帧时就丢弃此帧,其他什么也不做。差错纠正由高层来决定。
-
如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
概述如下:
- 服务不可靠
- 差错帧丢弃,纠错由高层实现
- 重传数据帧和普通数据帧格式相同
3.9.4 利用集线器Hub组成以太网
- 传统(早期)以太网最初是使用粗同轴电缆,后来演变到使用便宜的同轴电缆。再后来发展为使用更便宜和更灵活的双绞线。不用电缆而使用无屏蔽双绞线
- 每个站需要采用两队双绞线,分别用于发送和接收
- 这种以太网采用星形拓扑,在星形的中心则添加一种可靠性非常高的设备叫作集线器(Hub)
- 使用集线器Hub(物理层设备)组织的以太网,就是一个冲突域。(现在这种方式基本弃用了)
3.9.5 集线器的Hub一些特点
-
集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。集线器使用了大规模集成电路芯片,因此这样的硬件设备的可靠性已大大提高了。
-
使用集线器的以太网在逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线。
-
集线器很像一个多接口的转发器,工作在物理层。
(集线器Hub没啥智商,受到流进某一接口的数据,就直接往集线器的其他Hub接口广播发送)
3.9.6 常见以太网标准(网线)
-
10BASE-T的通信距离稍短,每个站到集线器的距离不超过100m,这种10Mb/s速率的无屏蔽双绞线星形网的出现,既降低了成本,又提高了可靠性。
-
10BASE-T双绞线以太网的出现,是局域网发展史上一个非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。
3.9.7 以太网的信道利用率
- 以太网的信道被占用的情况:
- 争用期长度为 2 τ 2τ 2τ,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号
- 帧长为 L ( b i t ) L(bit) L(bit),数据发送速率为 C ( b i t / s ) C(bit/s) C(bit/s),因此帧的发送时间为 L / C = T 0 ( s ) L/C = T_0(s) L/C=T0(s)
- 一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间τ使得信道上无信号在传播)时为止,是发送一帧所需的平均时间
- 发送时间用了 T 0 T_0 T0这么多时间,都发送出去到达目的地之后用了一个 τ τ τ这样的时间
3.9.8 以太网的信道利用率:参数а
-
注意到,成功发送一个帧需要占用信道的时间是 T 0 + τ T_0 + τ T0+τ,比这个帧的发送时间要多一个单程端到端时延 τ τ τ
-
这是因为当一个站发送完最后一个比特时,这个比特还要在以太网上传播
-
在最极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是 τ τ τ
-
所以要提高以太网的通信利用率,就必须减小 τ τ τ(传播时延)与 T 0 T_0 T0(发送时延)之比,因为时延越大,肯定利用率就越低了。在以太网中定义了参数 а а а,它是以太网单程端到端时延 τ τ τ与帧的发送时间 T 0 T_0 T0之比: а = τ T 0 а=\frac{τ}{T_0} а=T0τ
-
a > 0 a>0 a>0表示一发生碰撞就可以立即检测出来,并立即停止发送,因而信道利用率很高
-
a a a越大,表明争用期所占比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低
-
对以太网参数的要求
- 当数据率一定时,以太网的连线的长度受到限制,否则 τ τ τ的数值会太大
- 以太网的帧长不能太短,否则 T 0 T_0 T0的值会太小,使 a a a值太大
-
信道利用率的最大值
- 在理想化的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是 C S M A / C D CSMA/CD CSMA/CD,而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一站立即发送数据
- 发送一帧占用线路的时间是 T 0 + τ T_0+τ T0+τ(也就是前面提到的发送成功且线路恢复空闲的所需时间),而帧本身的发送时间是T0。于是我们可以计算出理想情况下的极限信道利用率 S m a x S_{max} Smax为: S m a x = T 0 T 0 + τ = 1 1 + a S_{max} =\frac{T_0}{T_0+τ}=\frac{1}{1+a} Smax=T0+τT0=1+a1
- 但是这不可能达到,因为避免不了发生碰撞
3.10 MAC层
3.10.1 MAC层的硬件地址(MAC地址)
- 在局域网中,硬件地址又称为物理地址,或 M A C MAC MAC 地址
- 802 802 802 标准所说的“地址”严格地讲应当是每一个站的“名字”或标识符
- 但鉴于大家都早已习惯了将这种 48 48 48 位的“名字”称为“地址”,所以这里也这样说,尽管这种说法并不太严格
- IEEE的注册管理机构RA负责向厂家分配地址字段的前三个字节(即高位24位)
- 地址字段中的后三个字节(即低位24位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址
- 一个地址块可以生成224个不同的地址。这种48位地址称为MAC-48,它的通用名称是EUI-48
- "MAC地址"实际上就是适配器地址或适配器标识符EUI-48。
(厂家标识符24bit | 商品编码24bit)大概这个样子。MAC在硬件出厂前就设置在硬件内了。
网卡芯片的MAC出厂固定不能修改,但我们可以制定计算机用我们自定义的MAC地址通讯,而不用网卡自带的MAC地址。
w i n 10 / 11 win10/11 win10/11通过CMD输入ipconfig /all可以查看MAC地址
- 有些对网络用户鉴权较严格的网络,会通过MAC等手段验证连接网络的用户的身份。(比如某些校园网,只有在学校系统注册过身份的MAC地址能够连通校园网)
- 接入同一台交换机 s w i t c h switch switch的两个设备要是拥有相同MAC,则两者皆无法连通网络
3.10.2 修改MAC地址
- 虽然网卡上的MAC地址是焊死的,但是我们可以不使用网卡的MAC,而使用自己指定的MAC
- 这就涉及到MAC地址的修改
- 如图 w i n 11 win11 win11当中的高级网络设置,就可以更改MAC地址
- 把你要更改的MAC地址写上去,就使用了你人工指定的MAC地址了
3.10.3 适配器检查MAC地址
适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址
- 如果是发往本站的帧则收下,然后再进行其他的处理。
- 否则就将此帧丢弃,不再进行其他的处理。
"发往本站的帧"包括以下三种帧:
- 单播( u n i c a s t unicast unicast)帧(一对一)
- 广播( b r o a d c a s t broadcast broadcast)帧(一堆全体)
- 多播( m u l t i c a s t multicast multicast)帧(一对多)
3.10.4 MAC帧格式
-
常用的以太网MAC帧格式有两种标准:
- DIX Ethernet V2标准
- IEEE 的 802.3 标准
-
最常用的MAC帧是以太网V2的格式
-
数据字段的正式名称是MAC客户数据字段(可封装IP数据报),最小长度64字节-18字节的首部和尾部=数据字段的最小长度(46字节)。当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧不小于64字节
-
FCS字段4字节。当传输媒体的误码率为1\10-8时,MAC子层可使未检测到的差错小于110-14
-
在帧的前面插入的8字节中第一个字段共7个字节,是前同步码,用来迅速实现MAC帧的比特同步。第二个字段就是帧开始定界符,表示后面的信息就是MAC帧
由于以太网使用曼彻斯特编码(物理层、数字信号),其表示0和1时都有电平跳变,所以能够区分数据0和停止传输数据这两种情况。再加上以太网传输数据时有"帧间最小间隔"的限制,所以以太网传输MAC帧只需要告知帧开始定界符,而没必要告知帧结束定界符
3.10.5 无效的MAC帧
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不在 46 − 1500 46-1500 46−1500字节之间
有效的MAC帧长度为 64 − 1518 64-1518 64−1518字节之间。对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢失的帧。
3.10.6 帧间最小间隔
- 帧间最小间隔为 9.6 μ s 9.6μs 9.6μs,相当于 96 b i t 96bit 96bit的发送时间
- 一个站在检测到总线开始空闲后,还要等待 9.6 μ s 9.6μs 9.6μs才能再次发送个数据
- 这样做时为了使刚刚接受到数据帧的站的数据缓存来得及清理,做好接收下一帧的准备
3.11 物理层、数据链路层的网络设备(组网)考虑
3.11.1 在物理层考虑扩展
用集线器扩展局域网优点
- 使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信
扩大了局域网覆盖的地理范围
用集线器扩展局域网的缺点
-
碰撞域增大了,但总的吞吐量并未提高。 (毕竟广播数据,占用总线)
-
如果不同的碰撞域使用不同的数据率,那么就不能用集线器将他们互连起来
3.11.2 在数据链路层考虑扩展
-
在数据链路层扩展局域网是使用网桥
-
网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确认将该帧转发到哪一个接口
3.11.3 使用网桥扩展以太网:好与坏
好:
- 过滤通信量。(如果MAC-端口表显示在获取数据的这个端口就存在目的地址,那么就不用再广播到其他接口。)
- 扩大了物理范围。(毕竟是集线器Hub的升级版)
- 提高了可靠性。(网桥有缓存再转发的功能,但是缓存再转发也意味着更加耗时)
- 可互连不同物理层、不同MAC子层和不同速率(如10Mb/s和100Mb/s以太网)的局域网。(传统集线器就做不到)
坏:
- 存储转发增加了时延(补充,查MAC-端口表后,其实转发到另一个端口也还是广播另一头的整个总线)
- 在MAC子层并没有流量控制功能。(MAC子层主要就传输数据,前面提到的基本弃用了的LLC子层就能提供一些类似流控制的功能)
- 具有不同MAC子层的网段桥接在一起时时延更大。(毕竟网桥还是广播转发的数据)
- 网桥只适合用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴
3.11.4 透明网桥
-
目前使用得最多的网桥就是透明网桥( t r a n s p a r e n t transparent transparent b r i d g e bridge bridge)
-
"透明"是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。(反正网桥会学习MAC-端口表,用户无需参与学习过程。)
-
透明网桥是一种即插即用设备,其标准是IEEE 802.1D
3.11.5 透明网桥的自学习算法
按照以下自学习算法处理收到的帧和建立转发表
-
若从A发出的帧从接口x进入了某网桥,那么从这个接口出发沿相反方向一定可以把一个帧传送到A
-
网桥每收到一个帧,就记下其源地址和进入网桥的接口,作为转发表中的一个项目
-
在建立转发表时把帧首部中的源地址写在"地址"这一栏的下面
-
在转发帧时,则是根据收到的帧首部中的目的地址来转发的。这时就把"地址"栏下面已经记下的源地址当作目的地址,而把记下的地址直接当作转发接口
网桥在转发表中登记了以下三个信息 -
地址
-
接口
-
帧进入网桥的时间
这是因为以太网的拓扑可能经常会发生变化,站点也可能会更换适配器(这就改变了站点的地址)。另外,以太网上的工作站并非总是接通电源的。
把每个帧到达网桥的时间登记下来,就可以在转发表中只保留网络拓扑的最新状态信息。这样就使得网桥中的转发表能反应当前网络的最新拓扑状态。黑客可以利用这点搞ARP欺骗等,导致网络产生广播风暴,谁也别想上网。
3.11.6 透明网桥的自学习和帧转发-小结
-
网桥收到一帧后先进行自学习。查找转发表中与收到帧的源地址有无相匹配的项目。如没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。如有,则把原有的项目进行更新。
-
转发帧。查找转发表中与收到帧的目的地址有无相匹配的项目
- 如没有,则通过所有其他接口(但进入网桥的接口除外)转发。(接口广播)
- 如有,则按转发表中给出的接口进行转发。(如果那个接口连接多个主机,那这多个主机都能收到广播)
- 若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(因为这时不需要经过网桥进行转发)
3.11.7 透明网桥的生成树算法STP
-
互联在一起的网桥在进行彼此通信后,就能找出原来的网络拓扑的一个子集。在这个子集里,整个连通的网络中不存在回路,即在任何两站之间只有一条路径
-
为了避免产生的转发的帧在网络中不断地兜圈子。(广播风暴)
-
为了得出能够反应网络拓扑发生变化时的生成树,在生成树上的根网桥每隔一段时间还要对生成树的拓扑进行更新
3.12 多接口网桥:交换机switch
-
1990年问世的交换式集线器(switch hub),可明显地提高局域网的性能。
-
交换式集线器常被称为以太网交换机(switch)或第二层交换机(表明此交换机工作在数据链路层)。
-
以太网交换机通常都有十几个接口。因此,以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层
交换机特点:
- 以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式。(网桥)
- 交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。(每根连接交换机的网线拥有自己的独享带宽)(别的通信你收不到)(交换机通信更安全)
- 以太网交换机由于使用了专用的交换结构芯片,其交换速率就比较高
3.13 虚拟局域网VLAN
3.13.1 VLAN
-
首先补充两个概念
-
网段(network segment) 一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分
-
在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN
-
VLAN是在交换机组网才有的概念
-
交换机switch的使用使得VLAN的创建称为可能。(言外之意就是有了交换机后才有VLAN的概念)
-
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组。
- 这些网段具有某些共同的需求
- 每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN
-
虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网
一个VLAN=一个广播域=逻辑网段(子网)
(交换机switch可以设置接口对应的VLAN,比如某交换机共24个接口,默认24个接口共同在一个默认的VLAN。如果我们手动修改,配置成后12个接口在新建的VLAN2里,那么连接前12接口的设备无法通过该交换机直接与后12接口的设备进行通讯)
- 一个部门一个VLAN可以通信
- 不同部分的VLAN不可以通信
通过VLAN能够有效的降低局域网的广播包,提升局域网的网络性能;划分VLAN需要通过支持命令行的二层交换机,普通交换机无法实现VLAN划分。
实现不同VLAN之间的访问,有两种方式:一种是通过三层交换机,通过默认网关的方式实现不同VLAN之间的访问;一种是通过路由器,利用路由器的子端口和默认路由的方式实现访问。
3.13.2 跨交换机的VLAN
- 在两个交换机 s w i t c h − A switch-A switch−A、 s w i t c h − B switch-B switch−B 上都划分前一半端口属于 V L A N 1 VLAN1 VLAN1,后一半端口属于 V L A N 2 VLAN2 VLAN2
- A这个计算机发一个广播到一个口,那么交换机知不知道这个口是哪个 V L A N VLAN VLAN?肯定知道,然后这个交换机会把这个广播给其他口,以及同一网段上的机器
- 如上图,将财务部4台计算机 P C − a d PC-ad PC−ad平均分配到 s w i t c h − A switch-A switch−A、 s w i t c h − B switch-B switch−B 的 V L A N 1 VLAN1 VLAN1 接口上,然后将销售部的 4 4 4台计算机 P C − e h PC-eh PC−eh平均分配到 s w i t c h − A switch-A switch−A、 s w i t c h − B switch-B switch−B 的 V L A N 2 VLAN2 VLAN2 接口上。为了确保两个交换机上的 V L A N 1 VLAN1 VLAN1 能够直接通信,可以使用一根网线将 s w i t c h − A switch-A switch−A、 s w i t c h − B switch-B switch−B 前半部分属于 V L A N 1 VLAN1 VLAN1 的接口相连,同理用一个网线把 s w i t c h − A switch-A switch−A、 s w i t c h − B switch-B switch−B 的后半部分属于 V L A N 2 VLAN2 VLAN2 的接口相连。这样财务部的计算机 P C − a PC-a PC−a、 b b b、 c c c、 d d d 就属于同一逻辑网段了,而销售部同理 P C − e PC-e PC−e、 f f f、 g g g、 h h h 属于同一个逻辑网段
- 所以说,以上这种方法,加入有 10 10 10 个 V L A N VLAN VLAN 跨这两个交换机,每一个 V L A N VLAN VLAN 使用一根网线连接两个交换机,这对交换机端口以及网线造成了大量的浪费,更好的方法就是使用干道链路
交换机的端口有两种类型:
- 访问端口: 访问端口只能属于某一个 V L A N VLAN VLAN,它只能承载某一个 V L A N VLAN VLAN的流量,连接访问端口的链路称为访问链路
- 中继端口: 中继端口能够同时承载多个 V L A N VLAN VLAN的流量,连接中继端口的链路称为干道链路。数据帧进入干道链路时需要添加帧标记(或称 V L A N VLAN VLAN I D ID ID),离开干道链路时去掉帧标记,这个过程对计算机来说是透明的
- 干道链路采用统计时分复用( S T D M STDM STDM)(就是在干道链路上传的东西都进行标记了),会在数据帧上标记所属的 V L A N VLAN VLAN(如果网络内就只有一个 V L A N VLAN VLAN就不会标记),然后通过干道链路访问另一个交换机 s w i t c h switch switch的同一个 V L A N VLAN VLAN区域
交换机组件的网络,如果需要多个VLAN通过的链路就需要配置为干道链路。如果链路上只需要单一VLAN的数据通过就可以配置为访问链路。 (言外之意就是交换机连接交换机,不一定就是干道链路,因为接入层的交换机虽然接入汇聚层的交换机,但是其switch没有进行VLAN的划分,即属于一整个默认的VLAN。而假如另外三个接入层交换机各通过一条线接入汇聚层的交换机,且这三个交换机switch都平均分配自己的端口到VLAN1、VLAN2、VLAN3,那么他们接入汇聚层交换机的三条链路都是干道链路,需要通过统计时分复用STDM来共用带宽。)
3.13.3 ISL标记
-
I S L ISL ISL干道使 V L A N VLAN VLAN能够跨骨干
- 通过特定集成电路来实现
- 不需要在客户计算机上采取配置,客户机不能够看到ISL头
- 在交换机之间,路由器和交换机,交换机和支持ISL网卡的服务器之间配置
3.13.4 虚拟局域网帧格式
- 虚拟局域网协议允许在以太网的帧格式中插入一个 4 4 4字节的标识符,称为 V L A N VLAN VLAN标记 ( t a g ) (tag) (tag),用来指明发送该帧的工作站属于哪一个虚拟局域网
3.14 不同规格的以太网
3.14.1 100BASE-T 以太网
- 速率达到或超过 100 Mbit/s 的以太网称为高速以太网
- 100BASE-T 在双绞线上传送 100 Mbit/s 基带信号的星形拓扑以太网,仍使用 IEEE 802.3 的 CSMA/CD 协议
- 100BASE-T 以太网又称为快速以太网 (Fast Ethernet)
- 1995 年IEEE已把 100BASE-T 的快速以太网定为正式标准,其代号为 IEEE 802.3u
100Base-T以太网的物理层:
- 100BASE-TX:使用2对UTP5类线或者屏蔽双绞线STP
- 100BASE-FX:使用2对光纤
- 100BASE-T4:使用4对UTP3类线或5类线。
3.14.2 100Base-T特点
-
可在全双工方式(同时收发)下工作而无冲突发生。因此,不使用CSMA/CD协议
-
MAC帧格式仍然是802.3标准规定的。
-
保持最短帧长不变,但将一个网段的最大电缆长度减小到100m。帧间时间间隔从原来的9.6μs该为现在的0.96μs。
(可全双工,因为接口可缓存,有阻塞队列,所以收发不影响。)
3.14.3 吉比特以太网
-
允许在1Gb/s下全双工和半双工两种方式工作
-
使用802.3协议规定的帧格式
-
在半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)
-
与10BASE-T和100BASE-T技术向后兼容
-
可以是光纤也可以是铜线
-
可以实现端到端的以太网传输
当吉比特以太网工作在全双工方式时(即通信双方可同时进行发送和接收数据),不使用载波延伸和分组突发
物理层:
- 1000BASE-X 基于光纤通道的物理层:
-
1000BASE-SX SX表示短波长
-
1000BASE-LX LX表示长波长
-
1000BASE-CX CX表示铜线
- 1000BASE-T
- 使用4对5类UTP
3.14.4 10吉比特以太网
-
10吉比特以太网与10Mb/s,100Mb/s和1Gb/s以太网的帧格式完全相同。
-
10吉比特以太网还保留了802.3标准规定的以太网最小和最大帧长,便于升级。(其实很多类似的,都是因为早期设定已经出了很多对应的设备和用于实际网络了,不方便改标准什么的,所以就沿用呗。)
-
10吉比特以太网不再使用铜线而只是用光纤作为传输媒体。
-
10吉比特以太网只工作在全双工方式,因为没有争用问题,也不使用CSMA/CD协议。
3.14.5 端到端的以太网传输
- 10吉比特以太网的出现,以太网的工作范围已经从局域网(校园网、企业网)扩大到城域网和广域网,从而实现了端到端的以太网传输。(毕竟我大中华就是一个大局域网呗)
这种工作方式的好处是:
- 成熟的技术
- 互操作性很好
- 在广域网中使用以太网时价格便宜
- 统一的帧格式简化了操作和管理(MAC帧)
4 网络层
4.1 网络层提供的两种服务
- 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论
- 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责? 是网络还是端系统?是端系统实现的可靠,比如网络比较堵,丢包了,路由器不管
- 网络层关注如何将分组从源端沿着网络路径送达目的端
在计算机网络领域中,网络层应该向传输层提供怎么样的服务(“面向连接"还是"无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统
两种服务:网络层应该向传输层提供怎么样的服务?
- 虚电路服务(需建立连接,基本不再使用)
- 数据报服务
现一般认为,可靠性传输,需要端系统(传输层)去实现。网络中路由器丢包不要求上一个路由器重发。
4.1.1 电信网:虚电路服务
- 虚电路可以不写地址
-
只走自己配置好的这一条路,如果这条路断了就直接不走了,这就是虚电路服务
-
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
-
注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,完全不一样
假设有PC1+++++Router1、Router2、Router3++++++PC2,PC1连接到Router1~3,并且这些Router下一跳都是PC2。如果PC1和PC2建立虚连接时,采用PC1->Router3->PC2,那么之后PC1发送给PC2的所有分组都沿着这条虚电路传送(除非中间这个Router3与其中一方连接出问题,才会重新PC1才会重新和其他Router建立虚连接)
4.1.2 因特网:数据报服务
-
数据报服务就是数据包写上地址,从哪来到哪去,目标地址源地址是什么,沿着路径,由路由器来选择
-
网络层向上只提供简单灵活的、无连接的、尽最大努力交付(比如中间某路由缓存容量20分组,结果一瞬间收到100分组,只保留20个,其余直接丢弃,也不会叫上一个路由重传。)的数据报服务
-
网络在发送分组时,不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限
尽最大努力交付的好处:
- 由于传输网络不提供端到端的可靠服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网得交换机相比较)
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么久由网络中的主机的运输层(传输层)负责(包括差错处理、流量控制等)
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用
- 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性
4.1.3 虚电路与数据报服务的比较
4.2 网际协议IP
4.2.1 物理层、数据链路层、网络层
-
中间设备又称为中间系统或中继(relay)系统
- 物理层中继系统:转发器(repeater)(集线器Hub等)
- 数据链路层中继系统:网桥或桥接器(bridge)、交换机(switch)等
- 网络层中继系统:路由器(router)等
- 网络层以上的中继系统:网关(gateway)(现在说的网关,一般指路由器的通信接口)(智能家居的网关)
- 计算机不但能指定多个网关,还能指定多个IP地址
- 在这里可以添加网关以及IP地址
4.2.2 网络互连的设备:路由器
- 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络
- 网关由于比较复杂,目前使用得较少
- 网络互连都是指用路由器进行网络互连和路由选择
- 由于历史的原因,许多有关 TCP/IP 的文献**将网络层使用的路由器称为网关 **
4.2.3 网络互联的问题
- 互联在一起的网络进行通信,需要解决的一些问题:
- 不同寻址方案
- 不同的最大分组长度
- 不同的网络接入机制(ADSL拨号、光纤接入、无线接入…)
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务(面向连接服务和无连接服务)
- 不同的管理与控制方式
4.2.4 互联网络和虚拟互联网络
- 互联网络,物理上多个网段都有物理链路连接,多个路由器直接相连,然后路由器再连接交换机、主机设备。虚拟互联网络,主机所在网络接入互联网
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
- 使用 IP 协议的虚拟互连网络可简称为 IP 网
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)
4.3 IP协议
4.3.1 IP协议简介
-
网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配套使用的还有四个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
一般,ARP和RARP也被直接被合起来说成ARP(毕竟,ARP是知道IP获取MAC,而RARP是知道MAC获取IP,都是IP和MAC的对应问题)
4.3.2 网络层4个协议之间的层次
- 其中IPv4依赖ARP(这里把ARP和RARP合起来了),ICMP、IGMP依赖IPv4。(依赖的意思就是,没有前者,就没法工作了)
4.3.3 IP层次结构
- 层次化IP地址将32位的IP地址分为网络号(网络ID)和主机号(主机ID)。(这里说的IPv4,现IPv6是64位)
- IP地址的区别,其实就是网络ID与主机ID之间分配的多少
- 注意看,如果我自己配置一个IP地址,现在我是随便输了一个C类地址
- 然后按一下TAB键
- 子网掩码直接就是3个255了
- 这说明了什么?通过子网掩码,我们知道网络部分就是那三个255(24位)所占的部分,主机部分就是后面的0所占的部分
- 同理,如果我直接写一个A类地址
- 如下,就代表一个255(8位)之前都是网络部分,剩下的是主机部分
- B类地址同理
- A类地址就是首位都是0的,对应的就是1~126,注意127并没有划分到A类地址当中去,127是本地环回地址
- B类地址从128开始
- C类从192开始
-
网络地址(也可以称为网络号)唯一指定了每个网络。同一网络中的每台计算机都共享相同的网络地址,并用它作为自己IP地址的一部分
-
分类IP地址
-
每一类地址都由两个固定长度的字段组成,网络号(net-id)标识主机(或路由器)所连接到的网络,主机号(host-id)标识该主机(或路由器)。
-
两级的IP地址可以记为IP地址::={<网络号>,<主机号>}
-
A类地址(前8位主机号,0开头)1.0.0.0~126.255.255.255
-
B类地址(前16位主机号,10开头)128.0.0.0~191.255.255.255
-
C类地址(前24位主机号,110开头)192.0.0.0~223.255.255.255
-
D类地址(1110开头,组播地址也叫多播地址)224.0.0.0~239.255.255.255
-
E类地址(1111开头,保留研究用)240.0.0.0~255.255.255.255
-
-
只要看前4bit就可以区分IP地址类别了
-
常用的三种类别的IP地址
4.3.4 特殊的几个地址
- 127.0.0.1 本地环回地址
- 169.254.0.0 (DHCP分配IP失败时,windows默认设置这个网段)
- 10.0.0.0(一般大企业内网网段,因为主机数量多)
- 172.16.0.0 ~ 172.31.0.0(企业常用的局域网网段)
- 192.168.0.0 ~ 192.168.255.0(一般家用路由器出厂设置的IP都是192.168.xx.xx)
4.3.5 子网掩码的作用
-
会告诉计算机哪些是网络部分哪些是主机部分
-
子网掩码( s u b n e t subnet subnet m a s k mask mask)又叫网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分
-
如果一台计算机的IP地址配置为172.16.122.204,子网掩码为255.255.0.0。将其IP地址和子网掩码都写成二进制,进行与运算,即1和1与运算得1,0或1和0做与运算都得0。这样经过IP地址和子网掩码昨晚与运算后,主机位不管是什么值都归零,网络位得值保持不变,这样就得到该计算机所处的网段为172.16.0.0
-
综上,IP地址与子网掩码做与运算,主机位全归零,得到的就是网络部分
4.3.6 子网划分
- 主机号不能全0或者全1(全0就是网络号了(参考0,128);全1是广播地址(参考127,255))
- 正是因为子网划分的技术,IPv4才坚持到现在,要不然早不够用了
- 上方的子网掩码255.255.255.128,说明子网掩码往后移动了1位
一个网段的情况:
- 某公司两部分,每个部门100台计算机,通过交换机连接,组成局域网,通过路由器连接Internet。这两部门200台计算机使用192.168.0.0C类网络,该网段的子网掩码为255.255.255.0,连接局域网的路由器接口配置使用该网段的第一个可用的IP地址192.168.0.1
(虽然路由器可以使用该网段的任何可用IP地址,为了避免该网段计算机的地址和路由器的地址冲突,一般路由器设置为该网段的第一个可用的IP地址或最后一个可用的IP地址)
4.3.6.1 划分成两个子网
-
A子网:192.168.0.0xxx,xxxx(可用主机号1~126,全0的0和全1的127舍去) (网关192.168.0.1,取第一个主机号)
-
B子网:192.168.0.1xxx,xxxx(可用的主机号129~254,全0的128和全1的255舍去) (网关192.168.0.129,取第一个主机号)
-
这样就分成了A与B两个子网
-
子网掩码:255.255.255.0 -> 255.255.255.128【1000,0000】
-
| A子网 | B子网 |
-
0-------128------255
-
每个子网是原本的1/2,子网掩码往右移动(右移就是除以2,就是1/2)一位(每后移动1位,划分1/2)
-
你看,未划分的时候,192.168.0.xxxxxxxx就是一个C类地址,默认的子网掩码就是255.255.255.0,现在你要将子网进行划分,所以子网掩码就必须向右移动一位,也就是255.255.255.128,相当于是原来的1/2
4.3.6.2 划分成四个子网
-
现在子网掩码再往后移动一位,所以就有00,01,10,11这四种可能了
-
A子网 192.168.0.[00…]
-
B子网 192.168.0.[01…]
-
C子网 192.168.0.[10…]
-
D子网 192.168.0.[11…]
-
子网掩码:255.255.255.0 -> 255.255.255.192【1100,0000】
-
| A子网 | B子网 | C子网 | D子网 |
-
0------64------128------192------255
-
A子网能用的地址:1~62,因为每一个分段前面的地址,是这一个网段的广播地址,所以64前面的63是广播地址,不能用
-
B子网能用的地址:65~126
-
C子网能用的地址:129~190
-
D子网能用的地址:193~254(最后一个因为255就是广播地址了,所以直接往前一位)
-
一定要写出第一个能用的地址到最后一个能用的地址这个区间,然后再说每一个网段的子网掩码是多少
-
每个子网是原来的1/2 * 1/2,子网掩码向右移动两位
- 子网掩码除以一次2就是往右移动一位
4.3.6.3 划分为八个子网
-
现在是有三种情况了,子网掩码往后移动三位,也就是000,001,010,011,100,101,110,111
-
A子网 192.168.0.[000…]
-
B子网 192.168.0.[001…]
-
C子网 192.168.0.[010…]
-
D子网 192.168.0.[011…]
-
E子网 192.168.0.[100…]
-
F子网 192.168.0.[101…]
-
G子网 192.168.0.[110…]
-
H子网 192.168.0.[111…]
-
子网掩码:255.255.255.0 -> 255.255.255.224【1110,0000】
-
那么现在A子网是从1~30可用,大范围0~32,那么A子网的子网掩码是多少呢?
-
A这一段,是除以了三个2才划分得来的,所以子网掩码直接就是255.255.255.224(224就是11100000,因为除了3个2,每除一个2就往后移动一位)
- 8个子网,2^3 >= 8 ,移动3位
- 0 128 255
- 0 64 128 192 255
- 0 32 64 96 128 160 192 224 255
- 每个子网是原来的1/2 * 1/2 * 1/2,子网掩码向右移动3位
- 乘以几次1/2,子网掩码向右移动几位
4.3.6.4 无法划分的情况
- 点到点的子网掩码是252,因为发现向右移动了6次的话,就没有浪费了,所以子网掩码是255.255.255.252(11111100)
划分不了的情况:
-
划分子网得遵循除以2的规律进行划分
-
200划分成50和150:0—128—255,150>128,不可能拆出某个>=150的子网
4.3.6.5 变长子网的划分
-
与等长基本一致
-
180划分成10,20,50,100
-
100<1281; 50<64; 20<32; 10 <16
-
0—128—255 (128~255给100)
-
0—64—128—255 (64~128给50)
-
0—32—64—128—255 (32~64给20)
-
0—16—32—64—128—255 (16~32给10)
-
判断192.168.201.168/30和192.168.201.169/30哪个是正常的主机地址
-
30说明只有后2位是主机号。22=4,得168/4余0,即168后两位是00,那么169后两位是01,由于主机号不能全0or全1,所以169才是正确的
-
判断192.168.0.67/26的子网掩码
-
64 < 67 < 128,0—[64—128]—192—255,向右移动2位,所以子网掩码是192.168.0.64(主机号全0)
子网掩码作用,与IP做与运算,判断目标地址和源地址是否同一网段(同一主机号),同一网段则直接ARP请求解析MAC地址,然后发送数据给对方;如果不同网段,则发送到默认网关(默认路由),访问其他网段(路由器根据路由表判断怎么走)
- 综上,看某一段子网掩码就看这一段是全部网段的几分之几,再除以了多少个2(比如占比1/2,那么就是除以了一次2,所以子网掩码就是128;比如占比1/4,那么就是除以了两次2,所以子网掩码就是192,以此类推),即可知道子网掩码是多少
- 现在变长的子网掩码,有两个点到点,都是30位,极限二选一,选哪个呢?
- 因为之前说过,全0或者全1的都不能给计算机当地址
- 而168除下来是全0的余数,所以排除168,所以169是对的
4.3.7 超网
现有两计算机PC-A和PC-B分别连接到交换机Switch1和Switch2,且Switch1和Switch2相连(即数据链路层上,两计算机位于同一个网段)。Switch2连接Router。已知PC-A(IP:192.168.0.2;net mask:255.255.255.0;gateway:192.168.0.1),而PC-B(IP:192.168.1.2;net mask:255.255.255.0;gateway:192.168.1.1),由于主机号不同(网络层,A和B不在同一网段),导致A和B通讯还不能直接通过链路层交换机Switch就完成,必须再经过路由器。(理想:A->Switch1->Switch2->B;现实:A->Switch1->Switch2->Router->Switch2->B)
-
如何看两个计算机在不在一个网段? 将这两台计算机的子网掩码与IP地址分别进行与运算,看得出来的结果是不是一致,如果一致,则说明在同一个网段,就能通信,如果不一致,则不在一个网段
-
很明显本来两层(物理层、数据链路层)就能完成的通讯,现在变成三层(物理层、数据链路层、网络层),效率更低了。为解决这种问题,就需要超网,两个某类网络合并成一个网段
-
将两个PC的IP地址写成2进制形式,容易发现前23位数字相同(8+8+7),那么只要保留前23位作为网络号,后面不同的部分作为主机号即可,即修改两者的子网掩码为255.255.254.0。(子网掩码向前移动一位,网络号相同)
192.168.【0000 0000】.0
192.168.【0000 0001】.0
255.255.【1111 1111】.0
255.255.【1111 1110】.0 => 255.255.254.0
# 合并A和B子网后,新的子网掩码
- 192.168.0.2
- 与192.168.1.2
- 将这两个子网进行合并,怎么合并呢?
- 你看,写成二进制,找出第一个不同的点,然后进行划分
- 找到了第23位不一样,所以把这个一样的部分都认为是网络部分,第一个不一样的部分都变成主机部分(主机部分归零)不看了
- 这样子网掩码就变成了255.255.254了,相当于往前移动了一位
- 子网掩码合并规律总结
- 117和118能不能合并?
- 不能,除以4之后一个余1一个余2,但是1和2不能合并
- 所以说,如果小的是偶数就能合并,118和119就能合并
- 以上117和118全称为:192.168.117/8.0
4.3.8 互联网上计算机通信过程
-
IP地址与MAC地址应用:网络层及以上,使用IP地址;链路层及以下,使用硬件地址
-
M1~M6表示MAC地址,Router有两个接口对应不同MAC地址
PC1(M1) === Switch1 === Router1(M2,M3) === Router2(M4,M5) === Switch2 === PC2(M6)
PC1 ===> PC2 发送数据报,经过以下几个流程:
- PC1(M1) ==> Switch1 ==> Router(M2);MAC帧源地址M1,目的地址M2;MAC帧数据部分(IP数据报,内容不变)
- Router1(M3) ==> Router2(M4);MAC帧首部修改,源地址M3,目的地址M4;MAC帧数据部分(IP数据报,内容不变)
- Router2(M5) ==> PC2(M6);MAC帧首部修改,源地址M5,目的地址M6;MAC帧数据部分(IP数据报,内容不变)
数据传输时,只有MAC的源地址和目的地址被修改(毕竟链路层就靠这个识别路径的),数据包是不会变的
MAC地址决定了下一跳给谁,IP地址决定了终点到哪去
-
交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据包
-
数据包在传输过程不变,过网络设备数据帧要用新的物理层地址重新封装
-
MAC地址决定了数据帧下一跳哪个设备接收,而IP地址决定了数据包的起点和终点
4.3.9 为什么不直接使用硬件地址进行通信
- 由于全世界存在各种各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事
- 连接到因特网的主机都拥有统一的IP地址(指公网IP),它们之间的通信就像连接在同一个网络上那样简单方便。因为调用ARP来寻找某个路由器或者主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的
4.4 ARP&RARP
4.4.1 ARP和RARP概述
-
IP地址 ==> ARP == (IGMP组播) ==> 物理地址MAC
-
物理地址MAC ==> RARP == (IGMP组播) ==> IP地址
-
(所有的动态路由协议都属于IP协议)
-
(ARP协议存在重大安全隐患。ARP欺骗、中间人攻击等)
4.4.2 ARP概述
-
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
-
每一个主机都设有一个ARP高速缓存(ARP cache),里面由所在的就局域网上的各主机和路由器的IP地址到硬件地址的映射表
-
当主机A欲向本地局域网上的某个主机B发送IP数据报时,就现在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,在将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发送此硬件地址。如果没,则广播ARP请求报文,正常情况下只有ARP的目的IP地址和自己相同的某个主机才会回应该ARP请求(同时把从ARP请求分组中的源IP和MAC地址加入或更新自己的ARP缓存),其他主机要是开启了ARP学习功能(如果本地没有该IP-MAC项,就新增),否则只要本地没有记录过该IP-MAC项(有的话就更新)则直接丢弃收到的ARP请求报文。收到ARP回应的原请求者,再把响应的IP和MAC加入到本地IP-MAC缓存中
-
(windows的cmd通过
arp -a
查看arp缓存。可以看到IP广播255.255.255.255
IP地址对应帧广播的ff-ff-ff-ff-ff-ff
MAC地址)
4.4.3 ARP高速缓存的作用
-
为了减少网络上的通信量,主机A再发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入到ARP请求分组
-
当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报就更方便了
4.4.4 ARP应当注意的问题
-
ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题,如果索要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。(代理ARP)
-
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的
-
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由进行通信,ARP协议就会自动地将将IP地址解析为链路层所需要的硬件地址
4.4.5 使用ARP的四种典型情况
- 发送方是主机,要把数据报发送到本网络上的另一个主机。这时用ARP找到主机的硬件地址
- 发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
- 发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址
- 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
4.4.6 逆地址解析RARP
反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用
RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份
-
使只知道自己硬件地址的主机能够知道其IP地址。
-
虽然RARP在概念上很简单,但是一个RARP服务器的设计与系统相关而且比较复杂。相反,提供一个ARP服务器很简单,通常是TCP/IP在内核中实现的一部分。由于内核知道IP地址和硬件地址,因此当它收到一个询问IP地址的ARP请求时,只需用相应的硬件地址来提供应答就可以了
-
作为用户进程的RARP服务器的复杂性在于:服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中(在Unix系统中一般位于/etc/ethers目录中)。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分
-
更为复杂的是,RARP请求是作为一个特殊类型的以太网数据帧来传送的(帧类型字段值为0x8035)。这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。由于发送和接收这些数据帧与系统有关,因此RARP服务器的实现是与系统捆绑在一起的
每个网络有多个RARP服务器实现的一个复杂因素是RARP请求是在硬件层上进行广播的。这意味着它们不经过路由器进行转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上(例如一根电缆)要提供多个RARP服务器。当服务器的数目增加时(以提供冗余备份),网络流量也随之增加,因为每个服务器对每个RARP请求都要发送RARP应答。发送RARP请求的无盘系统一般采用最先收到的RARP应答。另外,还有一种可能发生的情况是每个RARP服务器同时应答,这样会增加以太网发生冲突的概率。
4.5 数据报(包)
- lP数据报采用数据报分组传输的方式,提供的服务是无连接方式
- 数据封装的过程,应用程序,再在传输层加上编号,在网络层加上源地址,目标地址这些信息,在数据链路层上加上 MAC 地址等等,这就是数据封装,数据在传输之前,都是要加点内容,加上帧头帧尾再传
- 传到接收端之后,把 MAC 地址去掉,IP 地址去掉,编号去掉,补成数据,这就是解封的过程
4.5.1 IP数据报 - 报文格式
-
一个IP数据报由首部和数据两部分组成
-
首部前一部分是固定长度,共20字节,是所有IP数据报必须有的
-
在首部的固定部分的后面是一些可选字段,其长度是可变的
- 长度为: 0 − 31 0-31 0−31
- 固定部分:
-
版本: 占4位,指IP协议的版本(IPv4还是IPv6)。通信双方使用的IP协议版本必须一致。广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,还处于草案阶段
-
首部长度: 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项;还有就是首部有一部分是可变部分,可变部分有时多一点有时短一点,然后要告诉他首部有多长
-
区分服务: 占8位,用来获得更好的服务(让数据包打上一个标记,来告诉网络中传输的数据这个数据包在传的时候是着急还是不着急;所以总的来说,在计算机上配置数据包加标记再在沿途路由器上配置标记的先传,这就是区分服务,区分服务一定要和路由器的区分服务一块配)。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。(数值越低,优先级越高。需要路由器也设置区分服务才有用。路由器收到区分服务250和区分服务100的两个数据报时,则优先处理、转发区分服务为100的数据报。一般情况下都不使用这个字段QoS服务质量)
-
总长度: 总长度指首部和数据部分之和的长度(数据包一共多大),单位为字节。总长度字段为16位,因此数据报的最大长度为 2 16 − 1 = 65535 2^{16}-1=65535 216−1=65535 字节
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值
- 标识(identification): 占16位(用来告诉数据包是否分片)。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU(最大传输单元) 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报
- 标志(flag): 占3位,但只有前2位有意义
-
标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个
-
标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片
-
片偏移: 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
-
生存时间: 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命(每过一个路由器,这个TTL就减1,变成0之后,路由器就不转发了,这个包就往上消失)。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255。若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送,。如果没有TTL,就代表这个数据包有可能不断被转发,永远到不了目的地
- 比如我 ping 了一个地址,如上图所示,TTL为128
- 从TTL里面可以粗略的断定对方是什么操作系统
- 一般来说,如果是 Windows 系统的话,TTL是128;如果是 Linux,TTL是127
- 但是不在一个网段的话,Windows 也可能是 127 或者更小,因为不在一个网段,需要路由器转发,所以 相应的 TTL 会减少,所以具体问题具体分析
- 以上,指定 TTL 就是5,但是这里ping 这个地址,实际上是需要 TTL = 15
- 什么现象呢?发包的时候就是5,过一个路由器就减1,数据包还没送到呢,没到达目的地呢,数据包就自行销毁了,返回来的结果是,从路由器的那个地址回复说很不幸,数据包没送到,TTL 过期
- 实际上,这条语句还能告诉我途径了哪些路由器
ping 地址 -i 1
,这样经过一个路由器,TTL = 0,然后这个路由器就会有回复了 - 那么下一个路由器是哪个?
ping 地址 -i 2
就行,其他的以此类推就行 - 这样就能一个一个更新到数据包经过了哪几个路由器了
(综上,可以用ping指令看看数据报传输时的TTL。pathping查看沿途经过的路由+分析丢包率)
- 协议: 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程,告诉数据包是什么东西,具体查看这里IP协议号大全
-
首部检验和: 占16位。这个字段只检验数据报的首部(验证首部有没有错误),但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量
-
源地址: 占32位
-
目的地址: 占32位
可选字段(长度可变):
-
IP首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
-
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。这些任选项定义如下:
-
安全和处理限制(用于军事领域)
-
记录路径(让每个路由器都记下它的IP地址)
-
时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
-
宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)
-
严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)
这些选项很少被使用,并非所有主机和路由器都支持这些选项
4.5.2 IP数据报传输
原则:有来有回
-
数据路由,路由器在不同网段转发数据包,跨网段通讯的都叫路由
-
那么怎么去呢?
-
沿途的路由器必须知道到目的网络下一跳给哪个接口
-
沿途的路由器必须知道到源网络下一跳给哪个接口
- 就是要把沿途的路由器下一跳的接口给分配好
- 对于连着的网段,这个路由器不需要连着的这两个网段告诉,直接就知道怎么走
- 比如对A这个路由器,他就知道连着的旁边的那两个网段1和2,所以就必须添加其未知的网段345,这就知道了了全网段
- 同理,B就得增加145网段,其他的以此类推
- 如果需要路由器其没有直连的所有网段该怎么走,这就是静态路由,配完之后才能通
(windows使用route print查看路由表,arp -a查看mac高速缓存)
- 没有配置默认路由(网关、缺省路由)的主机无法访问其他网段。
- 如果一台主机有多个网卡,每个网卡都配置了默认路由,这几个默认路由的权重相同,会负载均衡。(所以为了正常上网,只能有一个网卡配置默认路由!!!)
(一般局域网ping网关响应在10ms以内属于正常;ping外部网络IP如果经常是数百ms且偶尔丢包,则可能是网络阻塞。)
下面举例,某PC主机有两个网卡,分别配置一个默认路由,一个连接因特网,一个连接同一局域网环境的其他网段。
局域网其他网段----(eth0 配置了默认路由0)PC(eth1 配置了默认路由1)---- 因特网
此时 ping 因特网上某一服务器,会发现一次能通、一次不能通、一次能通、一次不能通,有规律地交替出现能通、不能通的情况。因为主机认为两个网关的路由配置权重相同,认为等价,所以轮流使用默认路由0、默认路由1访问外部网络。(50%丢包率)
如果PC只有一个网卡,且只有1默认路由,如果ping外部网络,偶尔出现一次丢包,而且每次成功的数据报响应都在几百ms,那么大概率是网络阻塞问题
- 一些路由器控制命令如下
en //进入特权模式
config t
show ip route //ip路由表
(config) #ip route 192.168.0.0 255.255.255.0 172.16.0.1 //告诉下一跳的地址,形成静态路由
//这里192.168.0.0不写主机号是因为路由器只认网段,所以不写主机号也没事
(config) #no ip route 192.168.0.0 255.255.255.0 172.16.0.1 //删除刚刚添加的地址
- 同时,使用命令
route print
可以查看路由表 - 计算机的网关就是默认路由
- 加路由的命令
route add
- 更多命令请看:
ping /?
或route /?
4.5.3 路由器分组转发
- IP数据报的首部长没有可以用来指明“下一跳路由器的IP地址”。当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件。网络接口软件使用ARP负责将下一跳路由器的IP地址换换成硬件地址,并将此硬件地址放在链路层的MAC帧首部,然后根据这个硬件地址找到下一跳路由器
-
从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N
-
若网络N与此路由器直接相连,则把数据报直接交付目标主机D;否则是间接交付,执行3
-
若路由表中有目的地址为D的特定主机路由,则把数据报传给路由表中指明的下一跳路由器;否则执行4
-
如路由表中有到达网络N的路由器,则把数据报传给路由表指明的下一跳路由器;否则,执行5
-
若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
-
报告转发分组出错。(ICMP)
4.5.4 路由聚合(route aggregation)
-
一个CIDR地址块可以表示很多地址,这种地址得到聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个原来传统分类地址的路由)。
-
路由聚合也成为构成超网(suppernetting)。0100 0100
-
CIDR虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。对于/20地址快,它的掩码是20个连续的1。斜线记法的数字就是掩码中1的个数。
4.5.5 最长前缀匹配
-
在使用CIDR时,路由表中的每个项目由“网络前缀”和”下一跳地址“组成。在查找路由表时可能会得到不止一个匹配结果。
-
应当从匹配结果中选择居于最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
-
网络前缀越长,其地址快越小,因而路由就越具体(more specific)。
-
最长前缀匹配又称为最长匹配或最佳匹配。
4.5.6 二叉搜索树与路由表查找
-
当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题
-
为了进行更加有效的查找,通常是将无分类地址的路由表存放在一个层次的数据结构中,然后自顶向下地按层次进行查找。这里最常用的就是二叉线索树(binary trie)。(IP地址32位,查找深度最多32)
-
IP地址中从左到右的比特值决定了从根节点逐层向下延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
-
为了提高二叉线索的查找速度,广泛使用了各种压缩技术
# 二叉线索树与路由表查找举例
|-------------32位的IP地址-------------|唯一前缀|
01000110 00000000 00000000 00000000 0100
01010110 00000000 00000000 00000000 0101
01100001 00000000 00000000 00000000 011
10110000 00000010 00000000 00000000 10110
10111011 00001010 00000000 00000000 10111
4.5.7 网络负载均衡
- DNS负载均衡。在DNS中为多个地址配置同一个名字,查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
- 代理服务器。代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
- 负载均衡器。负载均衡器采用各种分配算法把网络请求分散到一个服务器集群中的可用服务器上去,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将负载均衡功能集成到PC中,一块连接到 Internet上,一块连接到后端服务器群的内部网络上。当Web服务器为图像服务、安全套接层(SSL)会话或数据库事务而进行优化时,负载均衡器可以发挥特别功效。
4.6 ICMP
4.6.1 ICMP简介
-
向主机报告差错的,看网络有没有故障,就用 ICMP 协议
-
为了提高IP数据报交付成功的机会,在网际层使用了忘记控制报文协议ICMP(Internet Control Message Protocol)
-
ICMP允许主机或路由器报告差错情况或提供有关异常情况的报告
-
ICMP不是高层协议,而是IP层的协议
-
ICMP报文作为IP层数据报的数据, 加上数据报的首部,组曾IP数组报发送出去
4.6.2 ICMP报文格式
4.6.3 ICMP报文的类型
-
ICMP报文的种类有两种,即ICMP差错报文和ICMP询问报文
-
ICMP报文的前4个字节是统一的格式,共有三个字段,即”类型“、代码和校验和。接着的4个字节的内容与ICMP的类型有关
-
差错报告报文有五种(细分的话不止,详情可百度):终点不可达、源点抑制(Source quench)(已弃用)、时间超过、参数问题、改变路由(重定向)(Redirect)
-
访问报文有两种(同样不止,详细百度):回送请求和回答报文,时间戳请求(弃用)和回答报文
举例:
-
A—>B发送ICMP访问报文时,若B发现检验和出现差错,丢弃该数据报,并会送ICMP差错报文。
-
A—>B ,IP数据报:【ip首部】【ICMP前8字节】【ICMP数据部分–无用】
-
B收到后,检查ip首部的校验和,发现出错,于是丢弃【ICMP数据部分】,在剩余的【ip首部】【ICMP前8字节】前面再添加新的【ICMP前8字节】和【IP首部】,原本的【ip首部】【ICMP前8字节】作为新的ICMP数据部分,整体封装成一个IP数据报回送。
-
B—>A,【IP首部】【ICMP前8字节】【ICMP数据部分(原本A—>B的ip首部、ICMP前8字节)】
4.7 内部网关协议RIP(Router Information Protocol)
4.7.1 RIP概述
- 网关就是默认路由
路由信息协议RIP(Routing Information Protocol)是基于距离矢量算法的路由协议,利用跳数来作为计量标准。
在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。
-
RIP是互联网上最早的动态路由协议
-
RIP是一种分布式的基于距离向量的路由选择协议,周期性将自己的网段进行广播
-
最早
-
周期性广播30秒(广播告知邻居路由器到自己跳一次,邻居路由器告知下一个路由器,到自己1,到上一个路由器2…如果遇到重复的到X路由器,选择跳数最小的作为以后转发的路径,其余条数要求大的暂保留备用。)
-
跳数16(第16跳不可达,也就是路由器最多跳转15次)
Net1 ---- Router1 ---- Net2 ---- Router2 ---- Net3
N1 1 直接 N1 2 R1
N2 1 直接 N2 1 直接
N3 2 R2 N3 1 直接
-
RIP三要点:
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
4.7.2 RIP协议的优缺点
- RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。(如果某处故障,在其他路由器发起RIP请求前,以为没有故障,还是会继续往故障的地方发送数据,直到中间所有路由包括自己都重设路由表。好消息传得快,坏消息传得慢)
- RIP协议最大的优点就是简单,开销较小
- RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)
- 路由器之间交换的路由器信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加
4.8 内部网关协议OSPF(Open Shortest Path First)
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
自治系统:autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。
4.8.1 OSPF概述
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息(RIP则交换全部)
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息
几个要点:
- 动态路由协议
- 开放式(各个厂商都支持)
- 度量值为带宽
- 支持多区域(和网络地址规划有关,各个区域的链路状态组播数据LSA互不影响)
- 触发式更新
- 三张表
- 邻居表
- 链路状态表
- 计算路由表(不会产生环路)
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的
作为一种链路状态的路由协议,OSPF将链路状态组播数据LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器
在信息交换的安全性上,OSPF规定了路由器之间的任何信息交换在必要时都可以经过认证或鉴别(Authentication),以保证只有可信的路由器之间才能传播选路信息。OSPF支持多种鉴别机制,并且允许各个区域间采用不同的鉴别机制。OSPF对链路状态算法在广播式网络(如以太网)中的应用进行了优化,以尽可能地利用硬件广播能力来传递链路状态报文。通常链路状态算法的拓扑图中一个结点代表一个路由器。若K个路由器都连接到以太网上,在广播链路状态时,关于这K个路由器的报文将达到K的平方个。为此,OSPF在拓扑结构图允许一个结点代表一个广播网络。每个广播网络上所有路由器发送链路状态报文,报告该网络中的路由器的链路状态
4.8.2 OSPF区域
-
OSPF 中划分区域的目的就是在于控制链路状态信息LSA 泛洪的范围、减小链路状态数据库LSDB的大小、改善网络的可扩展性、达到快速地收敛。
-
当网络中包含多个区域时,OSPF 协议有特殊的规定,即其中必须有一个 Area 0,通常也叫做骨干区域(Backbone Area),当设计 OSPF 网络时,一个很好的方法就是从骨干区域开始,然后再扩展到其他区域。骨干区域在所有其他区域的中心,即所有区域都必须与骨干区域物理或逻辑上相连,这种设计思想的原因是 OSPF 协议要把所有区域的路由信息引入骨干区,然后再依次将路由信息从骨干区域分发到其它区域中
-
由于划分出来的区域都必须和骨干区域连接,所以只能再分出二级区域,不存在第三级
4.8.3 OSPF特点
-
OSPF不用UDP而是直接用IP数据报传输
-
OSPF对不同的链路可根据IP分组的不同服务类型而设置不同的代价。因此,OSPF对不同类型的业务可计算出不同的路由
-
如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡
-
所有在OSPF路由之间交换的分组都具有鉴别的功能
-
支持可变长度的子网划分和无类别编址CIDR
-
每一个链路状态都带上一个32位的序号,序号越大状态越新
4.8.4 OSPF的基本操作
4.8.5 回顾OSPF和RIP
- OSPF
- OSPF开放最短路径优先(Open Shortest Path First),是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对,OSPF是链路状态路由协议,而RIP是距离向量路由协议。链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由。最主要的特点是使用分布式的链路状态协议,而不是像RIP那样的距离向量协议。三个要点:(1)向本自治系统中所有路由器发送信息。(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。(3)只有在链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
- RIP
- RIP(Routing Information Protocol) ,路由信息协议,是内部网关协议中应用最广泛的一种协议,它是一种分布式的,基于距离向量的路由选择协议,其特点是协议简单。适用于相对较小的自治系统,它们的直径“跳数”一般小于15。 RIP协议特点是:(1)仅和相邻路由交换信息(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到那个网络应经过的下一跳路由器。”(3)按固定时间间隔交换路由信息,例如,每隔30秒。然后路由器根据收到的路由信息更新路由表。
4.9 外部网关协议BGP
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策
由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edge router)。在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP
4.9.1 BGP概述
-
连接各个自治系统用的
-
BGP是不同自治系统的路由器之间交换路由信息的协议,BGP较新版本是BGP-4
-
边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
-
每一个自治系统AS的管理员至少要选择一个路由器作为该自治系统的“BGP发言人”,发言人一般放到边界上面
-
(自治系统的动态路由协议一般是RIP(跳数)或者OSPF(带宽))
-
BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。
4.9.2 BGP协议的特点
- BGP协议交换路由信息数量不是很多
- BGP发言人数目不多,路由选择相对简单
- BGP协议支持CIDR
- BGP建立时,交换整个路由表但之后只交换变化部分。
- BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议(eg:RIP),也不是纯粹的链路状态协议(eg:OSPF),通常被称为通路向量路由协议。这是因为BGP在发布到一个目的网络的可达性的同时,包含了在IP分组到达目的网络过程中所必须经过的AS的列表。通路向量信息时十分有用的,因为只要简单地查找一下BGP路由更新的AS编号就能有效地避免环路的出现。BGP对网络拓扑结构没有限制,其特点包括:
- 实现自治系统间通信,传播网络的可达信息。BGP 是一个外部网关协议,允许一个AS与另一个AS进行通信。BGP允许一个AS向其他AS通告其内部的网络的可达性信息,或者是通过该AS可达的其他网络的路由信息。同时,AS也能够从另一个AS中了解这些信息。与距离向量选路协议类似,BGP为每个目的网络提供的是下一跳(next-hop)结点的信息。
- 多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以协调者一系列路由器,使这些路由器保持路由信息的一致性。
- BGP支持基于策略的选路(policy-base routing)。一般的距离向量选路协议确切通告本地选路中的路由。而BGP则可以实现由本地管理员选择的策略。BGP路由器可以为域内和域间的网络可达性配置不同的策略。
- 可靠的传输。BGP路由信息的传输采用了可靠的TCP协议。
- 路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(path vector),即去往该目的网络时需要经过的AS的列表,使接受者能够了解去往目的网络的通路信息。
- 增量更新。BGP不需要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。
- BGP支持无类型编制(CIDR)及VLSM方式。通告的所有网络都以网络前缀加子网掩码的方式表示。
- 路由聚集。BGP允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。
- BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。
4.10 广域网
4.10.1 VPN
- 虚拟专用网络(Virtual Private Network,VPN)可以通过特殊的加密的通信协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间简历一条专有的通信线路,其核心就是在利用公共网络建立虚拟私有网。
- 远程用户可以通过Internet建立到企业内部网络的VPN连接,这样该用户就可以像是在内网一样访问企业内部网络的任意计算机。
下面举个实际连接VPN时,查看ifconfig /all的配置
以太网适配器 以太网3:
连接特定的DNS后缀:
描述:Array Networks VPN Adapter
物理地址: 某 48位
DHCP已启用: 否
自动配置已启用:是
IPv4地址:10.90.197.116(首选) #可见连接VPN时虚拟出来的虚拟网卡,其配置优先级最高
子网掩码:255.255.0.0
默认网关:
DNS服务器:127.0.0.1
TCPIP上的NetBIOS:已启用
此时若访问需要该VPN才能访问的网站,抓包,发现源地址即VPN虚拟网关
10.90.197.116
,获得的响应其目的地址同样是VPN的10.90.197.116
。(一般每次不一样,比如我断开VPN后,第二次重开VPN就变成10.90.201.6
)
- 实际工作流程大致如下:
# 就拿我本地VPN虚拟网关为10.90.197.116 255.255.0.0作为样例
# 我想要访问VPN代理后才能访问的因特网上某一个局域网
(1) 我使用VPN网关发送数据10.90.197.116,预访问对面局域网的10.90.223.100(这个随便写的)
【IP源地址10.90.197.116】【IP目的地址10.90.223.100】{数据部分}
(2) VPN再IP数据报前再添加对面远程RAS所在网段的某一地址作为源地址;比如对面RAS的公网IP为23.23.2.2,那么VPN给本地访问RAS的源地址设置为23.23.2.20(都是瞎编的)
【IP源地址23.23.2.20】【IP目的地址23.23.2.2】{【IP源地址10.90.197.116】【IP目的地址10.90.223.100】{数据部分}}
(3) 通过和远程目的局域网的RAS(远程访问服务器)建立的连接(PPTP or L2TP)发送数据到对面RAS{一般本地VPN会和对面RAS配合,进行一些身份认证、加密解密等操作}
(4) 对面RAS接收到数据后,把原本VPN添加的外层IP数据报头去掉,再继续把数据报传输到内部局域网
【IP源地址10.90.197.116】【IP目的地址10.90.223.100】{数据部分}
(5) 对面局域网10.90.223.100接受到数据报后,回应时,再把我们本地的VPN网关10.90.197.116作为目的地址,同样发送给RAS
【IP源地址10.90.223.100】【IP目的地址10.90.197.116】{数据部分}
(6) RAS收到数据报后,根据根据IP目的地址为10.90.197.116,查表,包装IP数据报,再发送回我们这里的VPN网关
【IP源地址23.23.2.2】【IP目的地址23.23.2.20】{【IP源地址10.90.223.100】【IP目的地址10.90.197.116】{数据部分}}
(7) VPN收到来自RAS的数据报,再舍弃最外层IP数据报的IP首部字段
【IP源地址10.90.223.100】【IP目的地址10.90.197.116】{数据部分}
-
如果是 W i n d o w s 7 Windows7 Windows7使用系统自带的VPN服务,配置VPN时,有个在远程网络上使用默认网关的选项
-
在远程网络上使用默认网关,即所有VPN代理的流量,不管访问的是VPN制定的对面内部局域网,还是访问我们本来就能正常访问的正常因特网,我们访问流程都变成
本地VPN--> 对面远程RAS --> 对面局域网or我们本来自己就能访问的因特网
。很明显,大多数情况下,访问正常的因特网,我们没必要再特地经过VPN代理,这样网速还更慢,这时候我们去掉勾选的远程网络上使用默认网关
,那么访问对面局域网时,还是本地VPN--> 对面远程RAS --> 对面局域网
,访问因特网时,则直接本地原本连接外网的网关–>我们自己能访问的因特网 -
(上面这些这个
远程网络上使用默认网关
经常也被VPN叫作全局模式
,不开启则是PAC
模式。亲测远程网络上使用默认网关
的选项弃用时,访问正常因特网还是用的本地默认网关;而访问VPN和对面RAS协商的指定网段时,才会走VPN) -
VPN还有一些奇葩的使用情况:
-
比如ABC三个网络环境不同(理解为三个互不相干的局域网)
-
此时,A和C因为某些原因,需要互相访问,但是两种都没有设置
远程访问服务器RAS
,所以不能通过VPN互联,但是B有远程访问服务器RAS
,其归C管理。于是C通过VPN连接B,并且新增VPN用户账号,通过电话、邮件等方式把该账号告知A,那么A和C就能通过都通过VPN连接到网络C中,互相访问对方。(连接VPN就类似把自己电脑搬到对面RAS管理的网段内。这里约等于,两个人都变成B网络内的主机了,所以能互相访问) -
虚拟专用网VPN
-
本地地址——仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
-
全球地址——全球唯一的IP地址,必须向因特网的管理机构申请。
-
RFC1918指明的专用地址( p r i v a t e private private a d d r e s s address address):
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
-
通过隧道技术实现虚拟专用网,这在现实的连锁店管理等场景经常使用
-
记住,VPN 拨号拨通之后相当于搬到那个网段里面去了
4.10.2 点对点隧道协议(PPTP)
-
点对点隧道协议(英语:Point to Point Tunneling Protocol,缩写为PPTP)是实现虚拟专用网(VPN)的方式之一。PPTP使用传输控制协议(TCP)创建控制通道来发送控制命令,以及利用通用路由封装(GRE)通道来封装点对点协议(PPP)数据包以发送数据。这个协议最早由微软等厂商主导开发,但因为它的加密方式容易被破解,微软已经不再建议使用这个协议。
-
PPTP的协议规范本身并未描述加密或身份验证的部分,它依靠点对点协议(PPP)来实现这些安全性功能。因为PPTP协议内置在微软视窗系统家族的各个产品中,在微软点对点协议(PPP)协议堆栈中,提供了各种标准的身份验证与加密机制来支持PPTP。 在微软视窗系统中,它可以搭配PAP、CHAP、MS-CHAPv1/v2或EAP-TLS来进行身份验证。通常也可以搭配微软点对点加密(MPPE)或IPSec的加密机制来提高安全性。
4.11 网络地址转换NAT
NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。在RFC 2663中有对NAT的说明。
- 在一个单位里面,大家都用私网地址,而互联网上的路由器,都不知道到私网地址怎么走,因为互联网上没一个网段使用私网地址
- 以下是上网的原理
- 假如我这台计算机是
10.7.1.2
的私网,然后现在要访问202.12.49.10
这个公网,能访问吗?能发送过去,但是回不来了,因为202
网段不知道10
网段怎么回去。假如现在用私网的单位有一个公网的地址111.23.213.69
,这时候再想访问之前的202
网站,就会先设置目标地址为202
,源地址为10
,然后走到公网111
的时候,进行更改,变成目标地址202
,源地址111
。这样就能做到有去有回
4.11.1 NAT概述
-
用 NAT 这种方式,内网的能主动出去,外网的进不来
功能: -
NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
-
宽带分享:这是 NAT 主机的最大功能
-
安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC
实现方式:
- NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad
-
静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问
-
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式
-
**端口多路复用(Port address Translation,PAT)**是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式
-
ALG(Application Level Gateway),即应用程序级网关技术:传统的NAT技术只对IP层和传输层头部进行转换处理,但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令、DNS协议的 “A” 和 “PTR” queries命令和部分ICMP消息类型等都需要相应的ALG来支持
-
如果协议数据报文中不包含地址信息,则很容易利用传统的NAT技术来完成透明的地址转换功能,通常我们使用的如下应用就可以直接利用传统的NAT技术:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等
-
虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的
-
cmd使用指令
netstat -n
查看主机与外部建立的会话
4.11.2 NAPT(PAT)概述
-
NAPT(Network Address Port Translation),即网络地址端口转换,可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是**<内部地址+内部端口>与<外部地址+外部端口>之间的转换**。NAPT普遍用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT也被称为“多对一”的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。
-
NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。除了一对源和目的IP地址以外,这个表还包括一对源和目的协议端口号,以及NAT盒使用的一个协议端口号。
-
NAPT的主要优势在于,能够使用一个全球有效IP地址获得通用性。主要缺点在于其通信仅限于TCP或UDP。当所有通信都采用TCP或UDP,NAPT允许一台内部计算机访问多台外部计算机,并允许多台内部主机访问同一台外部计算机相互之间不会发生冲突。
4.11.3 NAT转换方法
-
Full cone NAT
-
即著名的一对一(one-to-one)NAT
-
一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机都能通过给eAddr:port2发包到达iAddr:port1
-
Address-Restricted cone NAT
-
限制地址,即只接收曾经发送到对端的IP地址来的数据包。
-
一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机(hostAddr:any)都能通过给eAddr:port2发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:any. "any"也就是说端口不受限制
-
Port-Restricted cone NAT
-
类似受限制锥形NAT(Restricted cone NAT),但是还有端口限制。
-
一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。一个外部主机(hostAddr:port3)能够发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:port3.
-
Symmetric NAT(对称NAT)
-
每一个来自相同内部IP与port的请求到一个特定目的地的IP地址和端口,映射到一个独特的外部来源的IP地址和端口。
-
同一个内部主机发出一个信息包到不同的目的端,不同的映射使用
-
外部主机收到了一封包从一个内部主机可以送一封包回来
NAT表在路由器上保持的时间大概30~50s左右,至少我本地测试的时候,如果创建多个UDP client与外部通信,且外部通信能成功区分各个UDP client响应回来的话,其实差不多要保持40s左右的心跳包刷新NAT表才行
4.11.4 NAT穿透方法
- 目前常用的针对UDP的NAT 穿透(NAT Traversal)方法主要有:STUN、TURN、ICE、uPnP等。其中ICE方式由于其结合了STUN和TURN的特点,所以使用最为广泛。针对TCP的NAT穿透技术目前仍为难点。实用的技术仍然不多
4.11.5 虚拟机怎么上网?
- 也是采用了 NAT 的技术
- 这两个都是 NAT 的网段
- 做端口映射即可完成外网到内网的切换
- 源端口是随机的
- 不光在虚拟机当中能实现端口映射,在路由器上也能实现端口映射
5 传输层
5.0 预备知识与回顾
5.0.1 传输层与应用层关联
-
传输层为相互通信的应用进程(应用层)提供了逻辑通信。从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
-
应用层 http https ftp DNS SMTP(发邮件) PoP3(收邮件) RDP(远程桌面协议)
-
传输层 TCP UDP
-
网络层IP(RIP OSPF BGP) (路由选择相关的,统称IP协议) ICMP IGMP ARP
-
传输层两个协议的应用场景
- TCP:分段 编号 流量控制 建立会话
netstat -n
(查看建立的会话) - UDP 一个数据报就能完成数据通信 不建立会话 多播
- TCP:分段 编号 流量控制 建立会话
-
传输层和应用层之间的关系
-
http = TCP+80
-
https = TCP+443
-
ftp=TCP+21
-
SMTP=TCP+25
-
POP3=TCP+110
-
RDP=TCP+3389(windows可以通过mstsc使用RDP服务远程桌面连接)
-
共享文件夹=TCP+445
-
SQL Server=TCP+1433
-
DNS = UDP+53 or TCP+53(少部分情况)
-
(IP定位主机,端口Port定位服务。eg:4个服务监听4个端口,主机根据收到的包的目的端口判别访问哪个服务)
-
查看自己计算机侦听的端口:
netstat -ano
5.0.2 运输层协议和网络层协议的主要区别
-
IP协议的作用范围:提供主机之间的逻辑通信
-
TCP和UDP协议的作用范围:提供进程之间的逻辑通信
-
运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
-
运输层还要对收到的报文进行差错检验。(网络层,当路由器收到了一个IP数据报,先对其首部进行校验,若发现存在错误,则抛弃该IP数据报,并向源主机发送ICMP(因特网控制报文协议)差错报告报文。每个分组(报文)都有首部校验和字段)
-
运输层提供面向连接和无连接的服务
5.0.3 TCP和UDP概述
- TCP/IP的运输层有两个不同的协议:
- 用户数据报协议UDP(User Datagram Protocol),一个数据包就能完成数据通信,不建立会话
- 传输控制协议TCP(Transmission Control Protocol),分段,编号,流量控制,建立会话
-
两个对等运输实体在通信时传送的数据单位叫作"运输协议数据单元"TPDU(Transport Protocol Data Unit)
-
TCP传送的协议数据单元TCP 报文段( s e g m e n t segment segment)
-
UDP传送的协议数据单元是UDP 报文或用户数据报
UDP传输数据前不需要建立连接。对方的运输层在收到UDP报文后,不需要输出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。
TCP提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销(指建立连接3次握手和释放连接4次挥手)。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
5.0.3.1 传输层与应用层之间的关系
刚刚已经说了,最好记住以下常用的联系
- 应用层协议 http 在传输层用的是 TCP 协议,那在传输层怎么表示这是一个应用层协议呢?加上一个 80 端口来表示,即: h t t p = T C P + 80 http = TCP + 80 http=TCP+80
- 然后 https ,当访问安全站点的时候,其用的是 TCP 443 端口,即: h t t p s = T C P + 443 https = TCP + 443 https=TCP+443
- 然后 ftp,用的是 21 端口,即 f t p = T C P + 21 ftp = TCP + 21 ftp=TCP+21
- 然后 SMTP ,用的是 25 端口,即 S M T P = T C P + 25 SMTP = TCP + 25 SMTP=TCP+25
- P O P 3 = T C P + 110 POP3 = TCP + 110 POP3=TCP+110
- R D P = T C P + 3389 RDP = TCP + 3389 RDP=TCP+3389
- 共享文件夹, T C P + 445 TCP + 445 TCP+445
- S Q L S e r v e r = T C P + 1433 SQL Server = TCP + 1433 SQLServer=TCP+1433
- D N S = U D P + 53 DNS=UDP+53 DNS=UDP+53或 T C P + 53 TCP+53 TCP+53
5.0.4 端口与服务的关系
- 应用层协议和服务之间的关系:服务运行后在TCP或UDP的某个端口侦听客户端的请求(记住这个服务指的是对外提供的服务)
- 然后这个侦听端口的命令:
netstat -an
-
TCP的端口,端口用一个16位端口号进行标志,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。(IP标识主机,port标识服务)
-
三类端口:
- 熟知端口,数值一般为0~1024
- 登记端口号,数值为1024~49151
- 客户端口号,数值为49152~65535
5.0.5 防火墙简述
-
通过防火墙设置,可以限定出/入端口+协议限制
-
例如:开启 Windows 防火墙后,我们可以ping外部,但是外部不能ping我们;如果防火墙对外只开放80端口,那其他人就访问不了我们的其他服务
-
(Windows 防火墙不拦截出流量,只拦截入流量)
-
灰鸽子病毒利用windows防火墙不限制出流量这点,在被攻击者误触灰鸽子安装程序后,灰鸽子程序自动在后台隐藏进程运行。灰鸽子程序按照之前攻击者设定的IP地址,主动向外部发出请求。而攻击者打开自己的灰鸽子控制面板,就能看到被攻击者向自己报告IP地址,我们就能直接在面板上对被攻击者的电脑进行操作(远程桌面控制、文件控制等)
-
一些奇特的防攻击技巧:服务器B设置只允许服务器A远程访问,然后我们远程访问A,再通过A远程访问B;这样黑客想要远程黑入服务器B,还需要先黑入服务器A
5.1 UDP
- 虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中
5.1.1 UDP的组成
UDP首部(共8字节)
[源端口2字节][目的端口2字节][长度2字节][检验和2字节]
-
长度是指包括报头和数据部分在内的总字节数。
-
虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息(一般就是单纯的丢掉。除非你开发的应用程序有作什么特殊的检测)
5.1.2 UDP主要特点
- 无连接:发送数据之前不需要建立连接
- 尽最大努力交付:不保证可靠交付,同时也不使用拥塞控制(符合媒体通信的要求)
- 面向报文
- 支持一对一、一对多、多对一的多对多的交互通信。(单播、广播、多播)
首部开销小,仅8字节
5.2 TCP
5.2.1 TCP概述
-
面向连接(三次握手、四次挥手)
-
每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。
-
可靠交付
-
全双工通信(即时是A从B下载文件,B也会时不时自己给A回应,确认下载到哪里了。)
-
面向字节流
-
面向字节流:
-
应用程序把字节流写入TCP缓存区,在空闲时将TCP缓冲区的字节按照顺序取出(取出的字节数不一定),然后加上TCP首部,够成TCP报文段,通过TCP连接发送到接收方的TCP缓冲区。对方在从TCP缓冲区读取字节流数据
-
TCP连接的端点:
-
TCP把连接作为最基本的抽象。每一条TCP连接有两个端点(套接字),端口号拼接到IP地址组成套接字,作为TCP的端点
套接字socket = (IP地址:port端口号)
TCP连接::={socket1,socket2} = {(IP1:port1),(IP2:port2)}
5.2.2 TCP的可靠传输
- TCP可靠传输的工作原理——停止等待协议
- “停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组
- 全双工通信的双方既是发送方也是接收方
- 为了讨论问题的方便,我们仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方
A B A B
|\ | |\ |
| | | |
| /| |\ |
|/ | | |
无差错情况。 | /|
A发送M1–>B。 |/ |
B确认M1–>A 有差错情况。
A发送M1–>B
M1在传输过程丢包
A超时重传M1(一般在RTT多一点的时间重传,也就是往返时间多一点点)
B确认M1
- 还有两种情况:B确认M1的回应丢失,A重传M1;A发送M1结果传太久又重发M1,B2收到最新的M1并确认M1,之后又收到M1
- A—>B,A向B发送数据,B收到重复的数据会丢弃。A只有收到B的确认后,才会认为发送的数据不需要重传
- 使用确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
- 这种可靠的传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)
- ARQ表明重传的请求是自动进行的(自动指我RTT又多一点的时间要是没收到回应,就自动再重传给你一份)。接受方不需要请求发送方重传某个出错的分组
5.2.2.1 信道利用率
信道利用率 U = T D T D + R R T + T A 信道利用率U=\frac{T_D}{T_D+RRT+T_A} 信道利用率U=TD+RRT+TATD
-
一般RTT变动不大(和物理设备、网络环境有关),TA是接受方发送+传播时延,一般极小(一收到就回应确认),TD是发送方发送+传播时延,一般比TA大,比RTT小。所以理论上发送方发送时延TD增大,信道利用率U就增大
-
现一般不采用传一次确认一次的停等式 ARQ,而是采用流水线传输方式,发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认(发送一堆,对面之后也确认一堆,回应一堆 ACK)。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率
-
发送方流水线传输数据,一般搭配发送窗口。而接受方也不再一个一个确认,而是采用累计确认的方式(比如B收到4个字节后,直接告诉A下次从第5个字节开始发。这样A就知道前4个字节都接收了,发送窗口向右移动,将得到确认的前4字节从缓冲区剔除)
-
TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一个报文段。 新的 R T T s = ( 1 − α ) ∗ ( 旧的 R T T s ) + α ∗ ( 新的 R T T 样本 ) 新的RTT_s = (1 - α) * (旧的RTT_s) + α * (新的RTT样本) 新的RTTs=(1−α)∗(旧的RTTs)+α∗(新的RTT样本)
-
很明显, α α α 越大时,说明 RTT_s 越依赖新值,如果网络平稳,那么 RTT 一般变动不大,可让 α α α 小一点。(因为稳定的网络,我们认为新的 RTT 也不会有多大的变动。而波动大的网络,某些时间段拥塞某些时间端又很顺畅的,就需要α调大)
-
超时重传时间应略大于上面得出的加权平均往返时间 RTT_s(比如多次 RTT 响应分别9,10,11,那么取平均10)
-
RFC2988推荐的 α α α 值为 1 / 8 1/8 1/8
- 通过滑动窗口技术,可以进行有效可靠传输
5.2.3 TCP报文段的首部格式
- 如上,一行4个字节,所以固定部分一共有5行,所以是20个字节固定
- TCP首部定长部分和IP数据报一样都是20字节。(UDP首部共8字节,没有可选部分)
- 序号(Sequence number):TCP数据报按顺序发送,序号每次增加到下次发送的TCP报文段在缓存的偏移量位置(初始值可能是0或其他值)
- 确认号(Acknowledgment number):接受方确认数据,并且要求发送方下次给自己数据的序列号。(比如确认收到序号1长度517的TCP数据报,下次发送方发数据报应该从1+517=518序号的位置发送数据报给我)
- 数据偏移/首部长度(Header Length):4bit,基本单位是4字节(和IP数据报的"首部长度"一样),4bit最多表示二进制15,即TCP首部最大长度就60字节(4字节*15=60字节,固定首部20+40字节可选)
- 保留(Resv):6bit,无用(以后可能拓展),全0
- 控制位(Flags):
- CWR(Congestion Window Reduced) & ECN(ECN-Echo, Explicit Congestion Notification):CWR 阻塞窗口已减少,意思是告诉对端我已经按照你的要求,进行阻塞窗口减少了,并启动阻塞算法来控制我的发包速度; ECN 显式阻塞窗口通知,意思通知发送方,我接收的报文出现了阻塞,请控制发包速度。也就是说,CWR 和 ECN 必须配合使用,CWR 是收到 ECN 的应答。此外,在tcp三次握手时,这两个标志表明tcp端是否支持ECN。如果建立连接一方支持,则在发送的SYN包,将 ECN 标志置为1,如果服务端也支持,则在ACK包只设置ECN。缘由:tcp建立连接后,报文经过经过路由或网关等网络设备后,在路由器或网关等网络设备出现阻塞时,路由器或网关等设备设置IP层的某个标志表明出现阻塞,这样接收可以明确知道报文出现了阻塞。然而,需要知道阻塞进行阻塞控制的是报文发送方而非接收方。所以接收方会在ACK报文中设置ECN标志,同时发送方在ACK中设置CWR标志,表明已经收到ECN,并进行了减少阻塞窗口操作和启用阻塞算法
- URG(Urgent):等于1时,配合紧急指针(假设数值X),标识缓存区偏移量为X的字节需要赶紧被发送。这时候系统会将X位置和排队排在它之前的缓存区数据尽快发送出去。(本来应该慢慢排队的,变成赶紧让排自己前面的数据被发出去。比如有些应用可能要凑1460字节才发送一次数据,那如果某一时刻瞬间往缓存区放入数据1460、100、1460,中间这100字节需要赶紧被发送的,就可以在第1561字节标记URG=1,原本这100应该和接下去1360凑一个包再发送的,就变成这100会直接先发送,后面剩下的1460同样是读取凑曾一个包再发送。)(据说实际基本没有多少服务真正用到URG。)
- ACK(Acknowledgment):为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段
- PSH(Push):由于发送端一般凑够MSS大小的数据内容才发送报文,但是如果某一时刻只剩下最后一部分数据需要发送,剩余部分小于MSS,这时候标记PSH=1,告知操作系统的TCP协议栈程序需要赶紧发送最后这部分的数据报。接受方接受到带有PSH标记的数据报,也会赶紧提交给上层应用(比如赶紧读取完接收缓存区,把这个PSH的报文交给上层)。(一般用在缓冲区内容不多,但是又需要赶紧发送报文让对面赶紧处理的情况。抓包可以看到HTTPS的TLS建立安全连接的过程中交互的数据报PSH=1)
- RST(Reset):连接不可达**(通常是想发数据报给另一头,而另一头的套接字已经不用于TCP连接时,对方发来一个带有RST=1的数据包。比如对面因为某些原因提早释放了连接,或者对面压根没有用这个套接字和你建立过连接。可以用于RST攻击)**
- SYN(Synchronize):建立连接时使用,三次握手的前两次,A->B和B->A的SYN=1,其余情况SYN=0
- FIN(Finish):在四次挥手的第一次和第三次,客户端向服务器和服务器向客户端表明要关闭连接时,FIN=1
-
窗口(Window Size):16bit,通知发送方自己的本地接收缓存大小(接收端滑动窗口),最大值就是2^16-1=65535字节。(在SYN建立连接阶段,协商win和WS,之后会根据带宽和RTT再定下来最终的win和RS计算出实际通信的滑动窗口大小)
-
检验和(TCP Checksum):对TCP首部和TCP数据的校验和,和UDP校验和计算方式相同,需要配合IP伪首部计算
-
紧急指针(Urgent Pointer):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。( TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。前面提到URG很少用到,所以这个也理所当然的很少用到了)
-
可选部分(Options):(只列举几个抓包经常需要注意的)
- MSS(Maximum Segment Size) tcp报文最大传输长读,tcp在三次握手建立阶段,在SYN报文交互该值,注意的是,这个数值并非协商出来的,而是由网络设备属性得出。MSS一个常见的值是1460(MTU1500 - IP头部 - TCP头部)。
- SACK(Selective Acknowledgements) 选择ACK,用于处理segment不连续的情况,这样可以减少报文重传。比如: A 向B发送4个segment,B收到了1,2,4个segment,网络丢失了3这个segment。B收到1,2segment后,回应ACK 3,表示1,2这两个ACK已经收到,同时在选项字段里面,包括4这个段,表示4这个segment也收到了。于是A就重传3这个segment,不必重传4这个segment。B收到3这个segment后,直接ACK 5,表明3,4都收到了。(抓包可以知道会具体标识需要重传的左边界和右边界)
- WS(Window Scale) 在tcp头部,Window Size(16Bit)表面接收窗口大小,但是对于现代网络而言,这个值太小了。所以tcp通过选项来增加这个窗口的值。WS值的范围0~14,表示Window Size(16Bit)数值先向左移动的位数。这样实际上窗口的大小可达31位。在程序网络设计时,有个SO_RECVBUF,表示设置接收缓冲的大小,然而需要注意的是,这个值和接收窗口的大小不完全相等,但是这个数值和接收窗口存在一定的关系,在内核配置的范围内,大小比较接近。
- TS(Timestamps) Timestamps在tcp选项中包括两个32位的timestamp: TSval(Timestamp value)和TSecr(Timestamp Echo Reply)。如果设置了TS这个选项,发送方发送时,将当前时间填入TSval,接收方回应时,将发送方的TSval填入TSecr即可(注意发送或接收都有设置TSval和TSecr )。TS 选项的存在有两个重要作用:一是可以更加精确计算RTT(Round-Trip-Time),只需要在回应报文里面用当前时间减去TSecr即可;二是PAWS(Protection Against Wrapped Sequence number, 防止sequence回绕),什么意思呢?比如说,发送大量的数据:0-10G,假设segment比较大为1G而且sequence比较小为5G,接收端接收1,3,4,5数据段正常接收,收到的发送时间分别1,3,4,5,第2 segment丢失了,由于SACK,导致2被重传,在接收6时,sequence由于回绕变成了1,这时收到的发送时间为6,然后又收到迷途的2,seq为2,发送时间为2,这个时间比6小,是不合法的,tcp直接丢弃这个迷途的报文
- UTO(User Timeout) UTO指的是发送SYN,收到ACK的超时时间,如果在UTO内没有收到,则认为对端已挂。 在网络程序设计的时候,为了探测对端是否存活,经常涉及心跳报文,通过tcp的keepalive和UTO机制也可以实现,两者的区别是,前者可以通过心跳报文实时知道对端是否存活,二后者只有等待下次调用发送或接收函数才可以断定: 1) SO_KEEPALIVE相关选项 设置SO_KEEPALIVE 选项,打开keepalive机制。 设置TCP_KEEPIDLE 选项,空闲时间间隔启动keepalive机制,默认为2小时。 设置TCP_KEEPINTVL选项,keepalive机制启动后,每隔多长时间发送一个keepalive报文。默认为75秒。 设置TCP_KEEPCNT选项,设置发送多少个keepalive数据包都没有正常响应,则断定对端已经崩溃。默认为9。 由于tcp有超时重传机制,如果对于ACK丢失的情况,keepalive机制将有可能失效
-
填充:和IP首部一样,如果TCP首部不能被4字节(16bit)整除,就填充0直到能被4字节整除
-
119
版权声明:本文标题:计算机网络知识点总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1725918874h892653.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论