本文主要是介绍计算机网络第一遍学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 网络、互联网、因特网
- 互联网的组成
- 三种交换方式
- 电路交换、报文交换、分组交换的对比
- 计算机网络的定义和分类
- 计算机网络的性能指标
- 计算机网络的体系结构
- 专用术语
- 物理层
- 物理层的基本概念
- 物理层下面的传输媒体
- 传输方式
- 编码与调制
- 信道的极限容量
- 数据链路层
- 数据链路层概述
- 封装成帧
- 差错检测
- 可靠传输
- 可靠传输的实现机制----停止-等待协议SW
- 可靠传输的实现机制----回退N帧协议GBN
- 可靠传输的实现----选择重传协议SR?
- 点对点协议PPP
- 媒体接入控制的基本概念
- 媒体接入控制----静态划分信道
- 媒体接入控制----动态接入控制----随机接入
- MAC地址、IP地址以及ARP协议
- MAC地址
- IP地址
- ARP协议
- 集线器与交换机的区别
- 以太网交换机自学习和转发帧的流程
- 以太网交换机的生成树协议STP
- 虚拟局域网VLAN概述
- 网络层
- 网络层概述
- 网络层提供的两种服务
- IPv4地址概述
- 分类编址的IPv4地址
- 划分子网的IPv4地址
- 无分类编址的IPv4地址
- IPv4地址的应用规划
- IP数据报的发送和转发过程
- 静态路由配置及其可能产生的路由环路问题
- 路由选择协议概述
- 路由信息协议RIP的基本工作原理
- IPv4数据报的首部格式
- 网际控制报文协议ICMP
- 虚拟专用网VPN与网络地址转换NAT
- 运输层
- 运输层概述
- 运输层端口号、复用与分用的概念
- UDP和TCP的对比
- TCP的流量控制
- TCP的拥塞控制
- 应用层
- 客户-服务器方式和对等方式
- 动态主机配置协议DHCP
- 万维网
网络、互联网、因特网
- 网络由若干结点和连接这些结点的链路组成。
- 多个网络可以通过路由器互联起来,这样就构成了一个覆盖范围更大的网络,即互联网(互连网)。因此,互联网是“网络的网络”。
- 因特网是世界上最大的互联网络(用户数以亿计,互联的网络数以百万记)
internat(互联网)是一个通用名词,它泛指由多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的。
Iternat(因特网)则是一个专用名词,他指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,他采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET.
互联网的组成
- 边缘部分
由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
-
核心部分
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
三种交换方式
-
电路交换
-
电话交换机接通电话线的方式称为电路交换;
-
从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。
-
电路交换的三个步骤
-
建立连接(分配通信资源)
-
通话(一直占用通信资源)
-
释放连接(归还通信资源)
-
-
-
分组交换
-
报文交换
电路交换、报文交换、分组交换的对比
电路交换:
- 优点:
- 通信时延小(通信线路为通信双方专用,数据直达,因此通信时延非常小。)
- 有序传输(数据只在这一条线路上传输,因此不存在失序问题)
- 没有冲突(不同的通信双方拥有不同的信道,不会出现争用物理信道的问题)
- 适用范围广(既适用于传输模拟信号,也适用于传输数字信号)
- 实时性强(通信时延小的优点)
- 控制简单(电路交换的节点交换机及其控制都比较简单)
- 缺点:
- 建立连接时间长(电路交换的平均连接建立时间对计算机通信来说太长)
- 线路独占,使用效率低(用户一旦建立连接,物理通路就被通信双方独占,即使通信线路空闲也不能被其他用户使用)
- 灵活性差(只要连接所建立的物理通道中的任何一点出现了故障,就必须重新拨号建立新的连接)
- 难以规格化(不同类型、不同规格、不同速率的终端很难相互进行通信)
报文交换:
-
优点:
- 无需建立连接(报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送报文)
- 动态分配线路(结点交换机先存储整个报文,然后选择一条合适的空闲线路,将报文发送出去)
- 提高线路可靠性(如果某条传输路径发生故障,会重新选择另一条路径传输数据)
- 提高线路利用率
- 提供多目标服务(一个报文可以发送给多个目的地址)
-
缺点:
- 引起了转发时延(报文在节点交换机上要经历存储转发的过程)
- 需要较大的存储缓存空间(因为对报文的大小没有限制)
- 需要传输额外的信息量(因为报文需要携带目标地址、源地址等信息)
分组交换:
- 优点:
- 无需建立连接
- 提高线路利用率
- 简化存储管理(因为分组的长度固定,相对的缓存区的大小也固定,管理起来相对容易)
- 加速传输
- 减少出错概率和重发数据量
- 缺点:
- 引起了转发时延
- 需要传输额外的信息量
- 对于数据报服务,存在失序、丢失和重复分组的问题;对于虚电路服务,存在呼叫建立、数据传输和虚电路释放
计算机网络的定义和分类
计算机网络的精确定义并未统一,最简单的定义是:一些互相连接的、自治的计算机的合集
- 互连:是指计算机之间可以通过有线或无线的方式进行数据通信。
- 自治:是指独立的计算机,它有自己的硬件和软件,可以单独运行使用
- 集合:是指至少需要两台计算机
计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如:传送数据或者视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
计算机网络的分类:
- 按交换技术分类:
- 电路交换网络
- 报文交换网络
- 分组交换网络
- 按使用者分类
- 公用网
- 专用网
- 按传输介质分类
- 有线网络
- 无线网络
- 按覆盖范围分类
- 广域网WAN
- 城域网MAN
- 局域网LAN
- 个域网PAN
- 按拓扑结构分类
- 总线型网络
- 星型网络
- 环形网络
- 网状型网络
计算机网络的性能指标
性能指标可以从不同的方面来度量计算机网络的性能。
常用的计算机网络的性能指标有以下8个:
- 速率
比特:计算机中数据量的单位,也是信息论中信息量的单位。一个比特就是二进制数字中的一个1或0.
速率在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率。
- 带宽
- 吞吐量
- 时延
- 时延带宽积
-
往返时间
-
利用率
- 信道利用率:用来表示某信道有百分之几的时间是被利用的
- 网络利用率:全网络的信道利用率的加权平均
根据排队论,当信道的利用率增大的时候,该信道引起的时延也会迅速增加;
因此,信道利用率并非越高越好;
-
如果令D0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以利用下面的简单公式来表示D、D0和利用率U之间的关系:
D=D0/1-U
- 当网络的利用率达到50%的时候,时延就加倍
- 当网络的利用率超过50%的时候,时延急剧增大;
- 当网络的利用率接近100%的时候,时延就趋近于无穷大;
- 因此,一些拥有较大主干网的ISP通常会控制他们的信道利用率不超过50%,如果超过了,就要准备扩容,增加线路的带宽。
- 当然也不能使信道利用率太低,这会使宝贵的通信资源白白浪费,应该使用一些机制,可以根据情况动态调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内。
-
丢包率
丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量和总分组数量的比率
- 丢包率具体可分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。
分组丢包主要有两种情况:
- 分组在传输过程中出现误码,被结点丢弃;
- 分组到达一台队列已满的分组交换机时被丢弃;在通信量较大时就可能造成网络拥塞
因此,丢包率反映了网络的拥塞情况:
- 无拥塞的时候路径丢包率为0;
- 轻度拥塞的时候路径丢包率为1%~4%
- 严重拥塞的时候路径丢包率为5%~15%
计算机网络的体系结构
OSI体系结构(法律上的国际标准)
TCP/IP体系结构(事实上的国际标准)
原理体系结构(适用于教学)
专用术语
- 实体:任何可以发送或接受信息的硬件或软件进程。
- 对等实体:收发双方相同层次中的实体。
- 协议:控制两个对等实体进行逻辑通信的规则的集合。
-
协议的三要素:语法 语义 同步
语法:定义所交换信息的格式
语义:定义收发双方所要完成的操作
同步:定义收发双方的时序关系
-
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。
-
要实现本层协议,还需要使用下一层所提供的服务。
-
协议是“水平的”,服务是“垂直的”
-
实体看的见相邻下层所提供的服务,但是并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是“透明”的。
-
服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
- 数据链路层的服务访问点为帧的“类型”字段。
- 网络层的服务访问点为IP数据报首部中的“协议字段”。
- 运输层的服务访问点为IP数据报首部中的“协议字段”。
- 运输层的服务访问点为“端口号”。
-
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
-
协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
-
服务数据单元SDU:同一系统中,层与层之间交换的数据包称为服务数据单元。
-
多个SDU可以合成一个PDU;一个SDU也可以划分为几个PDU。
物理层
物理层的基本概念
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
- 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
物理层下面的传输媒体
- 导引型传输媒体:
- 同轴电缆
- 双绞线
- 光纤
- 电力线
- 非导引型传输媒体
- 无线电波
- 微波
- 红外线
- 可见光
传输方式
- 串行传输
- 并行传输
并行传输的效率是串行传输的N倍,但是也存在一个严重的缺点,即成本高。
-
同步传输
- 外同步:在收发双方之间添加一条单独的始终信号线
- 内同步:发送端将时钟同步信号编码到发送数据中一起传输(例如:曼彻斯特编码)
-
异步传输
- 字节之间异步(字节之间的时间间隔不固定)
- 字节之间的每个比特仍然要同步(各比特的持续时间是相同的)
- 单向通信(单工)
- 双向交替通信(半双工)
- 双向同时通信(全双工)
编码与调制
传输媒体与信道的关系?
严格来说,传输媒体和信道不能直接划等号。
对于单工传输:传输媒体中只包含一个信道。要么是发送信道,要么是接收信道。
对于半双工和全双工传输:传输媒体中要包含两个信道,一个是发送信道,另一个是接收信道。
如果使用信道复用技术,一条传输媒体还可以包含多个信道
常用编码:
基本调制方法:
信道的极限容量
失真的因素:
- 码元传输速率
- 信号传输距离
- 噪声干扰
- 传输媒体质量
奈氏准则:在假定条件下,为了避免码间串扰, 码元传输速率是有上限的。
数据链路层
数据链路层概述
链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
数据链路层以帧为单位传输和处理数据。
数据链路层的三个重要问题:
-
封装成帧:
如图所示,两台主机通过一条链路互连,两个主机都会对发送或接受的数据包进行五个层次的封装或解封。
发送方将待发送的数据通过应用层封装为应用层协议数据单元。然后交给运输层。
运输层为其添加运输层协议首部,使之成为运输层协议数据单元。然后交付给网络层。
网络层为其添加网络层协议首部,使之成为网络层协议数据单元。然后交付给数据链路层。
数据链路层给网络层协议数据单元添加一个帧头和帧尾,这个操作称为封装成帧。
例如:
-
差错检测:
发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码。
那么,请思考一下:接收方主机如何判断帧在传输过程中出现了误码呢?这可以通过检错码来发现。
发送方在发送帧之前基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。
例如:以太网版本2的MAC帧的帧尾,就是4字节的FCS字段,要写入该字段的内容就是我们所说的检错。
接收方主机收到帧后,通过检测码和检错算法就可以判断出帧在传输过程中是否出现了误码。
-
可靠传输:
接收方主机收到有误码的帧后,是不会接受该帧的,将其丢弃,如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会有其他措施;如果数据链路层向其上层提供的是可靠服务,那么还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。
尽管误码是不能完全避免的,但是若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
使用广播信道的数据链路层(共享式局域网)的问题:
假如说主机A需要将信息传递给主机C,那么B、D、E是如何知道信息不是自己的,并且拒绝该信息呢?主机C又是如何知道该信息是自己的,从而接收该信息呢?
我们可以将帧的目的地址添加在帧中一起传输。
例如,在以太网版本2的MAC帧格式中,在帧头的三个字段中,有两个字段与地址相关,一个是目的地址字段,另一个是源地址字段。
编址问题解决了,那么我们来讨论下一个问题:
当总线上多台主机同时使用总线来传输帧的时候,传输信号就会产生碰撞。这是采用广播信道的共享式局域网不可避免的,以太网的协调方法是使用一种媒体接入控制协议CSMA/CD。
交换式局域网:
无线局域网:
封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
在帧头和帧尾中包含有重要的控制信息。
例如:以太网版本2的MAC帧格式,
点对点协议PPP帧格式,
发送方的数据链路层将上层交付下来的协议数据单元封装为帧后,还要通过物理层将构成帧的各比特转换为电信号发送到传输媒体。
那么,接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
帧头和帧尾的作用之一就是帧定界。
例如,点对点协议PPP帧格式,
其中,帧头和帧尾的一字节的标志就是帧定界的标志,需要注意的是并不是每一种数据链路层协议的帧都包含帧定界标志,例如在以太网版本2的帧格式中,并没有帧定界的标志,那么,接收方又是如何从物理层交付的比特流中提取出一个个的以太网帧呢??
实际上,以太网的数据链路层封装好MAC帧后,将其交付给物理层,物理层会在MAC帧前面添加8字节的前导码,然后再将比特流转换为电信号发送,
前导码中的前7个字节是前同步码,作用是使接收方的时钟同步,之后的一个字节为帧开始定界符,表明其后面紧跟着的就是MAC帧。
另外,以太网还规定了帧间间隔时间为96比特的发送时间。
因此,MAC帧并不需要帧结束定界符。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
注意:
- 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
- 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU
差错检测
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能变成0,而0也可能变成1.这称为比特差错。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER。
-
奇偶校验
-
在待发送的数据后面添加一位奇偶校验位,使整个数据(包含所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
-
如果有奇数个位发生误码,可以检查出误码;如果有偶数个位发生误码,则无法检查出误码。
-
-
循环冗余校验(CRC)
- 收发双方约定好一个生成多项式G(x);
- 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到带传输数据的后面一起传输。
- 接收方通过生成多项式来计算收到的数据是否产生了误码。
例如:
- 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
- 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但是纠错码的开销比较大,在计算机网络中较少使用。
可靠传输
-
数据链路层向上层提供的服务类型:
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
-
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输的问题由其上层处理。
-
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
-
比特差错只是传输差错中的一种。
-
从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
-
分组丢失、分组失序以及分组重复这些错误一般不会出现在数据链路层,而会出现在其上层。
-
可靠传输服务并不仅仅局限于数据链路层,其他各层均可以选择实现可靠传输。
可靠传输的实现机制----停止-等待协议SW
-
误码
-
发送方丢失
- 接收方丢失
-
接收方的确认或否认迟到
注意事项:
- 接收端检测到数据分组有误码的时候,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需要一个比特编号就够了,即编号0和编号1.
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
停止-等待协议的信道利用率:
TA一般都远小于TD,可以忽略。
当RTT远大于TD时,信道利用率会非常低。
- 可以看出当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。
- 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
可靠传输的实现机制----回退N帧协议GBN
可靠传输的实现----选择重传协议SR?
点对点协议PPP
点对点协议PPP是目前使用最广泛的点对点数据链。
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
-
对各种协议数据报的封装方法(封装成帧)
-
链路控制协议LCP(用于建立、配置以及测试数链路的连接)
-
一套网络控制协议NCPs(其中的每一个协议支持不同的网络层协议)
帧格式
标志(Flag)字段:PPP帧的定界符,取值0x7E
地址(Address)字段:取值为0xFF,预留(目前没什么作用)
控制(Control)字段:取值为0x03,预留(目前没什么作用)
协议(Protocol)字段:指明帧的数据部分送交哪个协议处理
- 取值0x0021表示:帧的数据部分为IP数据报
- 取值0xC021表示:帧的数据部分为LCP分组
- 取值0x8021表示:帧的数据部分为NCP分组
帧检验序列(FCS)字段:CRC计算出的校验位
透明传输
当PPP帧的数据部分出现帧首和帧尾的标志字段时,如果不采取措施,则会造成接受方对PPP帧是否结束的误判。
透明传输----面向字节的异步链路采用插入转义字符的字节填充法
-
发送方的处理:
- 出现的每一个7E(PPP帧的定界符)字节转变成2字节序列(7D,5E)
- 出现的每一个7D(转义字符)字节转变为2字节序列(7D,5D)
- 出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节,同时将该字符的编码加上0x20.
-
接收方的处理:进行反变换即可恢复原来的PPP帧的数据部分。
透明传输----面向比特的同步链路采用插入比特0的比特填充法
-
发送方的处理
对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,即立即填充1个比特0。
-
接收方的处理
对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的一个比特0删除。
工作状态?
媒体接入控制的基本概念
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC。
媒体接入控制----静态划分信道
- 复用是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
- 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
-
频分复用FDM
频分复用的所有用户同时占用不同的频带资源并行通信。
-
时分复用TDM
时分复用的所有用户在不同的时间占用同样的频带宽度。
-
波分复用WDM
-
码分复用CDM
媒体接入控制----动态接入控制----随机接入
载波监听多址接入/碰撞检测CSMA/CD
MAC地址、IP地址以及ARP协议
- MAC地址是以太网的MAC子层所使用的地址;
- IP地址是TCP/IP体系结构网际层所使用的地址;
- ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取设备的MAC地址;
尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是他们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此,我们将这三者放在一起讨论。
MAC地址
- 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识。即一个数据链路层地址;
- 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC,因此这类地址被称为MAC地址。
- MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
-
MAC地址有时候也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层。
-
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有限网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址,而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,MAC地址是对网络上各个接口的唯一标识,而不是对网络上各设备的唯一标识。
IP地址
- IP地址是因特网上的主机和路由器所使用的的地址,用于标识两部分信息。
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器接口)
- 显然,之前介绍的MAC地址不具备区分不同网络的功能。
- 如果只是一个单独的网络,不需要接入因特网,可以只使用MAC地址,(这不是一般用户的应用方式)。
- 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
数据包转发的过程中IP地址和MAC地址的变化情况。
- 数据包转发过程中源IP地址和目的IP地址保持不变;
- 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。
ARP协议
作用:
举例:
假如B将要发送数据包给C
但是B不知道C的MAC地址,无法填写目的MAC地址,进而无法构建MAC帧。每个主机都要自己的额ARP高速缓存表,B开始在自己的高速缓存表中查找IP地址为192.168.0.3的MAC地址,发现没有。
这时候,主机B会发送ARP请求报文(广播),来获取MAC地址
C发现问的是自己,开始响应(单播),先将B的IP地址与MAC地址记录到自己的ARP告诉缓存包表中;给B发送ARP响应,以告知自己的MAC地址。
这个时候B将C的IP地址和MAC地址记录到自己的ARP告诉缓存表中
现在主机B就可以给主机C发送之前想要发送的数据包了
- ARP中的每一条记录都有类型
- 动态:主机自动获取的,生命周期默认为2分钟
- 静态:手工设置,不同的操作系统下的周期不同,例如系统重启后不存在或者系统重启后依然有效。
这样做的原因是:IP地址和MAC地址的对应关系并不是永久性的,例如当主机的网卡坏了,更换网卡后,主机的IP地址并没有改变,但是主机的MAC地址改变了。
- ARP协议只能在一段链路或一个网络上使用。
集线器与交换机的区别
-
早期的总线型以太网
-
使用双绞线和集线器HUB的星型以太网
- 使用集线器的以太网在逻辑上仍是一个总线型,各站共享总线资源,使用的还是CSMA/CD协议
- 集线器只工作在物理层,他的每个接口仅简单地转发比特,不进行碰撞检测(由各站的网卡检测)
- 集线器一般都有少量的容错能力和网络管理能力。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作。
集线器和以太网的区别
==(发送单播帧的情况)==对于使用集线器的共享总线型以太网,各主机中的网卡根据帧的目的MAC地址,决定是否接受该帧。
==(发送单播帧的情况)==对于使用交换机的交换式以太网,交换机收到单播帧后,根据帧的目的MAC地址和自身的帧交换表,将帧转发给目的主机,而不是网络中的其他各主机。
==(发送广播帧的情况)==对于使用集线器的共享总线型以太网,广播帧会传播到总线上的其他主机,各主机中的网卡检测到帧的目的MAC地址是广播地址,就接收该帧。
==(发送广播帧的情况)==交换机收到广播帧后,检测到帧的目的MAC地址是广播地址,于是从除该帧进入交换机接口外的其他各接口转发该帧。网络中除源主机外的其他各主机收到广播帧后,接受该广播帧。
(网络中的多台主机同时给另一台主机发送广播帧的情况),对于使用集线器的共享总线型以太网,
这必然会产生碰撞,遭遇碰撞的帧会传播到总线上的各主机。
(网络中的多台主机同时给另一台主机发送广播帧的情况),对于使用交换机的交换式以太网,交换机收到多个帧后,会将他们缓存起来,然后逐个转发给目的主机,不会产生碰撞。
(使用集线器扩展以太网后发送单播帧的情况)
(使用交换机扩展以太网后发送单播帧的情况)
(使用集线器扩展以太网后发送广播帧的情况)
(使用交换机扩展以太网后发送广播帧的情况)
综上所述:
以太网交换机自学习和转发帧的流程
- 以太网交换机工作在数据链路层(也包括物理层)
- 以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
- 以太网交换机是一种即插即用的设备,刚插上电启动其内部的帧交换是空的,随着网路中各主机间的通信,以太网交换机通过自学习算法自动建立起帧交换表。
以太网交换机的生成树协议STP
如何提高以太网的可靠性?
-
添加冗余链路可以提高以太网的可靠性
-
但是,冗余链路也会带来负面效应----形成网络环路
-
网络环路会带来以下问题:
-
广播风暴
大量消耗网络资源,使得网络无法正常转发其他数据帧;
-
主机收到重复的广播帧
大量消耗主机资源
-
交换机的帧交换表震荡(漂移)
-
交换机收到重复的广播帧
大量消耗主机资源
-
-
以太网交换机使用生成树协议STP可以在增加冗余链路来增加网络可靠性的同时又避免网络环路带来的各种问题。
- 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型(无逻辑环路);
- 最终生成的树型逻辑拓扑要确保连同整个网络
- 当首次连接交换机或网络物理拓扑发生变化时,(有可能是人为改变或故障),交换机都将进行生成树的重新计算。
虚拟局域网VLAN概述
- 以太网交换机工作在数据链路层(也包括物理层)
- 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域
- 随着交换式以太网规模的扩大,广播域响应扩大
- 巨大的广播域会带来很多弊端:
- 广播风暴
- 难以管理和维护
- 潜在的安全问题
广播风暴会浪费网络资源和各主机的CPU资源!
- 网络中会频繁出现广播信息
- TCP/IP协议栈中的很多协议都会使用广播:
- 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
- 路由信息协议RIP(一种小型的内部路由协议)
- 动态主机配置协议DHCP(用于自动配置IP地址)
- TCP/IP协议栈中的很多协议都会使用广播:
- 分隔广播域的方法:
- 使用路由器可以隔离广播域(路由器的成本较高)
- 虚拟局域网VLAN技术应运而生
- 虚拟局域网是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
- 交换机的端口类型有以下三种:
- Access
- Trunk
- Hybrid
- 交换机各端口的缺省VLAN ID
- 在思科交换机上称为Native VLAN,即本征VLAN。
- 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。
网络层
网络层概述
- 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
- 要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由选择问题
- 因特网是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
网络层提供的两种服务
面向连接的虚电路服务
- 可靠服务应由网络自身来保证
- 必须建立网络层的连接----虚电路VC
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成路的每一段链路都有一个虚电路编号)
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达,不丢失、不重复)。
- 通信结束后,需要释放之前所建立的虚电路。
- 很多广域分组交换网都是用面向连接的虚电路服务,例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层里连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序。
- 由于网络本身不提供端到端的可靠传输服务,这就是网络中的路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比较)
- 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能与因特网核心。
IPv4地址概述
-
在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚
-
IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
-
IP地址由因特网名字和数字分配机构ICANN进行分配。
- 我国用户可向亚太网络信息中心APNIC申请IP地址,需要缴费。
- 2011年2月3日,互联网号码分配管理局IANA宣布,IPv4地址已经分配完毕。
- 我国在2014年至2015年也逐步停止了向新用户和应用分配IPv4地址,同时全面开展商用部署IPv6。
-
IPv4地址的编址方法经历了如下三个历史阶段:
-
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
-
8位无符号二进制整数转十进制数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmQlLSVD-1646556763374)(C:%5CUsers%5C%E6%9D%8E%E5%A4%8F%E7%A7%91%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20220303162213485.png)]
-
将十进制正整数转8位无符号二进制数
分类编址的IPv4地址
- 只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
- 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1”的地址是广播地活着,不能分配给主机或路由器的各接口
划分子网的IPv4地址
无分类编址的IPv4地址
-
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
-
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv4工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
-
CIDR使用“斜线记法”,即在IPv4地址后面加上了斜线“/”,在斜线后面写上网络前缀所占的比特数量。
路由聚合(构造超网)
IPv4地址的应用规划
- 定长的子网掩码:
- 使用一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
- 变长的子网掩码:
- 使用不同的子网来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
IP数据报的发送和转发过程
IP数据报的发送和转发过程包含以下两部分:
- 主机发送IP数据报
- 路由器转发IP数据报
为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中,我们忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
例如:
同一个网络中的主机可以直接通信,这属于直接交付;不同网络中的主机需要通过路由器来中转,属于间接交付。
C主机将自己的地址和自己的子网掩码相与,得出了C的网络的地址;将自己的地址和F的子网掩码相与,得出了F的网络地址,相比较发现不相同,说明C和F在不同的网络中。因此需要通过路由器来间接交付。
给每个主机赋予默认网关,让他们在转发的时候可以通过默认网关来转发。
路由器在收到IP数据报后应该如何转发?
静态路由配置及其可能产生的路由环路问题
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由器。
- 这种人工配置方式简单、开销小。但是不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误。
- 配置错误
- 聚合了不存在的网络
- 网络故障
【举例】静态路由配置
【举例】默认路由配置
路由选择协议概述
- 静态路由选择
- 由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
- 这种人工配置方式简单、开销小。但是不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 动态路由选择
- 路由器通过路由协议选择协议自动获取路由信息
- 比较复杂、开销比较大。能较好的适应网络状态的变化。
- 适用于大规模网络
因特网所采用的路由选择协议的主要特点:
- 自适应:动态路由选择,能较好的适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统AS。
路由信息协议RIP的基本工作原理
- 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058.
- RIP要求自治系统AS内的每一个路由器都要维护从他自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V”
- RIP使用跳数作为度量来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1.
- 路由器到非直连网络的距离定义为所经过的路由器数加1.
- 允许一条路径最多只能包含15个路由器。”距离“等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为好的路由就是“距离短”的路由,也就是所通过的路由器数量最少的路由。
- 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
- RIP包含以下三点
- 和谁交换信息:仅和相邻的路由器交换信息
- 交换什么信息:自己的路由表
- 何时交换信息:周期性交换(例如每30秒)
IPv4数据报的首部格式
-
版本:
-
占4比特,表示IP协议的版本;
-
通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4
-
-
首部长度
- 占四个比特,表示IP数据报首部的长度。该字段的取值以四字节为单位。
- 最小十进制取值为5,表示IP数据报首部只有20字节的固定部分。
- 最大十进制取值为15,表示IP数据报首部包含20字节固定化部分和最大40字节可变部分。
-
可选字段
-
长度从1个字节到40个字节不等。用来支持排错、测量及安全措施。
-
可选字段增加了IP数据报的功能 ,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
-
-
填充字段
- 确保首部长度为4字节的整数倍,使用全0进行填充。
-
区分服务字段
- 占8比特,用来获得更好的服务。
- 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
-
总长度
- 占16比特,表示IP数据报的总长度(首部+数据载荷)
- 最大取值为十进制的65535,以字节为单位。
- 【举例】
-
标识
- 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
-
标志字段
- 占3比特,各比特含义如下:
- DF位:1表示不允许分片;0表示允许分片。
- MF位:1表示“后面还有分片”;0表示“这是最后一个分片”。
- 保留位:必须为0.
- 占3比特,各比特含义如下:
-
片偏移字段:
- 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
- 片偏移以8个字节为单位。
网际控制报文协议ICMP
- 为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
- 主机或路由器使用ICMP来发送差错报告报文和询问报文。
- ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文共有以下五种:
-
终点不可达
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83yHlSE5-1646556763381)(C:%5CUsers%5C%E6%9D%8E%E5%A4%8F%E7%A7%91%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20220304171958238.png)]
-
源点抑制
-
时间超过
-
参数问题
-
改变路由(重定向)
-
以下情况不应该发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具体特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送差错报告报文。
-
常用的ICMP询问报文有以下两种:
-
回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否科大及了解有关状态。
-
时间戳请求和回答
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
-
-
ICMP应用举例
- 分组网间探测PING
- 用来测试主机或路由器间的连通性
- 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
- 使用ICMP回送请求和回答报文
- 跟踪路由
- 用来测试IP数据报从源主机到达目的主机要经过哪些路由
- 分组网间探测PING
虚拟专用网VPN与网络地址转换NAT
-
虚拟专用网VPN
如何让着两个网络通信呢?
方法一:
方法二:
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
运输层
运输层概述
之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层他们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。
- 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
- 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。
运输层端口号、复用与分用的概念
运输层端口号
- 运行在计算机上的进程使用进程标识符PID来标志。
- 因特网上的计算机并不是使用统一的操作系统,不同的操作系统(windows、linux、Mac OS)又使用不同格式的进程标识符。
- 为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
- TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。
- 端口号使用16比特表示,取值范围0~65535;
- 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些协议,例如:FTP使用21/20,HTTP使用80、DNS使用53.
- 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如Microsoft RDP微软远程桌面使用的端口是3389。
- 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。
- 端口号使用16比特表示,取值范围0~65535;
发送方的复用和接收方的分用
UDP和TCP的对比
- UDP和TCP是TCP/IP题词结构运输层中的两个重要协议
-
UDP是用户数据报协议
-
TCP是传输控制协议
TCP的流量控制
- 一般来说,我们总是希望数据传输的更快一些
- 但是如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
- 所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
- 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
TCP的拥塞控制
- 在某段时间内,若对网络的某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞。
- 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。
- 若出现拥塞而不进行控制,整个网络的吞吐量将随入负荷的增大而下降。
下面介绍这四种拥塞控制算法的基本原理,假定如下条件:
- 数据是单方向传送,而另一个方向只传送确认。
- 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定。
- 以最大报文段MSS的个数为讨论问题,而不是以字节为单位。
发送方维护一个叫做拥塞窗口的状态变量,其值取决于网络的拥塞程度,并且动态变化。
- 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些;但是只要网络出现拥塞,拥塞窗口就减少一些;
- 判断出现网络拥塞的依据:没有按时收应当到达的确认报文(即发生超时重传)。
发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd。
维护一个慢开始门限ssthresh状态变量:
-
当cwnd<ssthresh时,使用慢开始算法;
-
当cwnd<ssthresh时,停止使用慢开始算法而改用拥塞避免算法;
-
当cwnd=ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法;
-
慢开始
-
拥塞避免
-
快重传
-
快恢复
慢开始和拥塞堵塞避免算法是1988年提出的TCP拥塞控制算法。
1990年又增加了两个新的拥塞控制算法(改进TCP的性能),这就是快重传和快恢复。
有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞
- 这将导致发送方超时重传,并误认为网络发生了拥塞。
- 发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而降低了传输效率。
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
- 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认。
- 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
应用层
客户-服务器方式和对等方式
客户/服务器方式
- 客户/服务器是指通信中所涉及的两个应用进程。
- 客户/服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务请求方,服务器是服务提供方。
- 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号是80),而运行服务器的主机也具有固定的IP地址。
C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式,包括万维网www、电子邮件、文件传输FTP等。
基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少的多的服务器计算机上。
- 由于一台服务计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
- 为此,在C/S应用中,常用计算机集群构建一个强大的虚拟服务器。
对等(P2P)方式
- 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间互相通信,每个对等方既是服务的请求者,又是服务的提供者。
动态主机配置协议DHCP
万维网
万维网www并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑的信息网。
-
为了方便地访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置。
-
URL的一般形式由以下四个部分组成:
<协议>://<主机>:<端口>/<路径>
这篇关于计算机网络第一遍学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!