计算机网络笔记

第一章概述
Internet(I大写)指因特网,internet(i小写)指互联网
因特网采用TCP/IP协议族作为通信规则
互联网又称网络的网络

注:每个用户也可以作为isp,只需设置调制解调器或路由器即可
因特网的组成
边缘部分
- 所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
核心部分
- 由大量网络和连接这些网络的路由器组成。这部分是为边缘 部分提供服务的(提供连通性和交换)。
交换方式
- 电路交换

电路交换的三个步骤:
- 建立连接(分配通信资源)
- 通话(一直占用通信资源)
- 释放连接(归还通信资源)
- 分组交换
将传输的数据,我们称之为报文或包,将其分成若干部分,并在每个部分加上首部(也称包头)
分组的首部中包含目的地址,路由器根据目的地址将各分组发送到对应的窗口(先存储)
数据经过各交换机的存储转发最终到达目的地址
目的机将首部去掉,将各数据段进行组合还原出原始报文
需要注意的是:发送的各分组不一定走一样的路由,而且各分组不一定会以发送时的顺序到达目的站,另外对于丢包重复错误等情况后续再解释

- 报文交换
与分组交换类似,对报文长度没有要求,所以需要的路由要有较大空间,另外报文交换现在很少使用,已经被更先进的分组交换取代
电路交换、报文交换、分组交换的对比
电路交换需要建立连接并占用通信资源一段时间,事后还要释放连接
报文交换和分组交换不需要建立连接,直接将数据发送到相邻的路由即可
分组交换相比与报文交换减少了转发时延


计算机网络的定义

计算机网络分类

计算机网络的性能指标
- 速率

在计算传输数据求所需时间时,有时可以约掉“兆”
- 带宽

我们常说的带宽200M完整说法应该是200Mb/s
- 吞吐量

受到带宽的影响,比如带宽1Gb/s实际吞吐量通常为700Mb/s
- 时延
发送时延:数据传输到链路上需要一定时间,计算方式:分组长度(b)/发送速率(b/s)

网卡的发送速率和 信道带宽和接口速率共同决定发送速率
传播时延:数据在链路上传播需要有一定时间
熟记下图

处理时延:交换机等进行存储转发需要一定时间
处理时延要根据网络的流畅程度,动态变化,比较难计算
通常数据传输需要经过多个链路和交换机,因此有多个传播时延和处理时延
有些教材中还有排队时延,这里将其算入处理时延
- 时延带宽积

- 往返时间

- 利用率

- 丢包率

这个性能指标用户不会关心,因为用户不知道是否有丢包
关心这个指标的是维护人员
交换机在缓存区没有满的时候就开始丢弃分组了
计算机网络体系机构

开放系统互连参考模型 简称OSI
IP的中文意思是网际协议,因此TCP/IP协议的网络层常称为网际层

由于ip协议为了更好的兼容其他接口,并没有规定网络接口层的具体内容
所以在学习时我们学习的网络体系结构结合了OSI和TCP/IP的体系结构

计算机网络体系分层的必要性
- 物理层

严格来说,传输媒体不属于网络体系
传输信号时并不是简单的方波信号
- 数据链路层

注意这种总线型的网络体系已经被淘汰,现在使用的是右下角的交换式以太网
- 网络层
分组间网络传输的问题

- 运输层
进程间网络通信

- 应用层

总结

注:
物理层的何种信号指编码比特流的方式(不包括传输媒介)
数据链路层的一个网络上的传输问题,各主机怎么知道信息是发送给谁的,以及数据中的地址和数据是如何区分的
网路层的传输和路由指分组转发的路径选择以及丢包的解决
运输层进程间的通信指不同主机(服务器端和用户端)的不同应用(浏览器、QQ等)之间的通信
应用层的特定网络应用问题指为各种功能的各种协议
举个栗子

应用层按照http协议创建一个get请求报文

应用层将get请求报文交付给运输层,运输层在get请求报文前添加一个tcp首部,使之成为tcp报文段
该首部作用主要是区分应用进程以及实现可靠传输

运输层将tcp报文段传输给网络层
网络层给tcp数据报添加一个ip首部,使之成为一个ip数据报,可以在互联网上传输,也可以被路由器转发

网络层将ip数据报传输给数据链路层,并添加一个首部和一个尾部,使之成为帧,帧首使其能在一段链路上或一个网络上传输,能够被相应的目的主机接收,帧的尾部作用是让目的主机进行检查,所接收到的帧是否有误码
假设N1是以太网,这是帧首部和尾部的格式

链路层将帧交付给物理层,物理层将帧视为比特流,由于N1是以太网,物理层会给比特流前添加前导码,作用是让目的主机做好接收帧的准备
这是前导码内容

物理层将比特流变换成相应的信号通过传输媒体到达路由器
路由器的物理层将前导码去掉,将其交付给链路层,此时交付的是帧

数据链路层将ip数据报交付给网络层,交付的是ip数据报
网络层解析ip数据报首部提取目的ip查找路由表确定目的端口
之后传输到数据链路层,数据链路层添加首部尾部使之成为帧
再将帧交付给物理层,添加前导码,转换为信号发送
到达服务器端之后又是层层拆包,再将http响应报文层层封装传输给用户
用户接收到后层层拆包进行解析,解析成网页
计算机网络体系结构中的专用术语
- 实体

- 协议

之所以是逻辑通信是因为这些通信并不实际存在,这是为了方便理解假设出来的
协议三要素
语法、语义、同步
对于一些数据报的格式(ip数据报、tcp数据报)不需要记忆,只需能看懂即可
同步并不是频率同步,是指确定交互双方的时序关系

我们不需要记住一些具体的报文格式
- 服务

什么是“透明的“打个比方:我们使用手机,享受着手机的服务,但是我们不需要知道手机这些服务的工作原理

逻辑接口就是指每层接收的数据类型,如帧,tcp数据报,ip数据报

第一章习题
体系结构


时延

在一个传输过程中只有一个传播时延,不要算错
若主机在一段链路上连续发送分组,总时延为所有分组的发送时延加上信号在这一段链路上的传播时延






第二章物理层
物理层基本概念

物理层下面的传输媒体
传输媒体不属于任意层,如果非要分,那应该是在物理层下面
导引型传输媒体
- 同轴电缆

- 双绞线

- 光纤


多模光纤:多束光在一条光纤中传输

- 电力线
在一些没有部署网线的家庭使用,或者一些多个房间的公司设备较少,不想单独布置网线,只需在电源插口处插上一个电力猫即可
非引导型传输媒体
- 无线电波

- 微波

微波穿透能力强一点,不能靠电离层反射,且是直线传播,所以远距离传输时需要中继站,也可用卫星作为中继站

笔记本电脑已经淘汰红外传输,有些手机还保留为了遥控家用电器
- 可见光
lifi,比如通过led灯的开关来传输信号,目前还在研究阶段
传输方式
- 串行传输
一条线传输
远距离传输中使用
- 并行传输
多线传输
在计算机内部使用
- 同步传输与异步传输

- 单项通信(单工)、双向交替通信(半双工)、双向同时通信(全双工)
单工:广播
半双工:对讲机
全双工:电话
编码与调制

常用编码
注意各个编码的优缺点

不归零:无法确定连续的低电平或者高电平是几个电平,需要额外再弄一根导线来同步时钟(这很浪费)
归零:每个高电平或低电平之后均归零,输入是将时钟加到传输数据中(自同步),这样还是不很好,大部分的信号都是零电平
曼彻斯特:在每个码元中间进行跳变,向下为0,向上为1(也可以是向下为1向上为0)
差分曼彻斯特:每次中间进行跳变,在码元开始处表示0或1

10BaseT 10表示10Mb/s,Base基带传输,T双绞线,这种以太网使用曼彻斯特编码
基本调制方法

一个码元包含更多比特的方法
频率和相位相关不能同时调制,通常相位和振幅可以同时调制
- 正交振幅调制QAM


四个二进制数可以表示16种情况,对应这16个码元
这些码元不能随便排,当传输失真时就会导致误码的情况
应使用格雷码,即每相邻两个码元只要有一个比特位不同
信道的极限传输速率





这里问的是波特率,和奈氏准则无关,另外若是遇到题目没有明确是低信道还是带通道,按照低信道来做(就是2W,W是带宽)



不归零编码英文缩写NRZ
第三章数据链路层

数据链路层的三个重要问题

我们将数据链路层给网络层交付的协议数据单元加上帧首和帧尾的操作称为封装成帧
如何判断传输的数据是否出现误码:依靠一种算法,根据传输数据得到4字节的检错码FCS,帧尾的作用之一。
接收方根据检错码和检错算法可以判断是否出现误码
接收方发现是误码之后会丢弃该帧
如果数据链路层向上层提供的是不可靠传输那么丢弃之后不会有其他动作,这里是可靠传输,如果是可靠传输就会有其他的操作保证收到正确的帧

封装成帧

并不是所有协议都有帧定界
以太网帧就没有,但是它会在帧前面加上前导码,前七个字节作用是使时钟同步之后的一字节为帧开始界定符
以太网还规定帧间间隔为96比特时间
透明传输:数据链路层对上层交付的数据没有限制
如当数据中出现帧界定符时加一个转义字符

同理如果既有界定符又有转义字符,也是在其前面加上转义字符

转义字符是一种特殊的字符:长度为1字节,十进制值为27,并不是ESC这三个字符

面向比特的物理链路使用比特填充来实现透明传输(eg:每遇到五个连续1插入一个0,这样就保证了帧界定的唯一性)
接收方在遇到连续五个1就删除后面一个0,对原数据没有影响(因为所有的五个1后面都会被加上一个0不用担心本来就是五个1一个0的情况)


差错检测


奇偶校验漏检率比较高,一般不用
- 循环冗余校验CRC

举个栗子
生成多项式各项系数构成的比特串是除数,见下图中间部分

上图是一些常用的多项式
CRC算法要求生成的多项式必须包含最低项

除法是异或运算,商的位置1表示够除,0表示不够除,最后得到的余数,应该与多项式最高次项位数相同,不够位在前面补0

上图是接收方要做的 事情

检错码只能用来检错不能用来纠错,常用重传的方式而不是纠错的方式。
可靠传输


误码的情况不仅仅出现在物理层

对于接收方发送NCK的情况:发送方在发送完一个分组后不能立刻删除该分组的缓存,要等到接收到接收方发送的ACK才能删除该分组的缓存
对于发送方发送数据丢失情况(接收方因为没有接收到该分组,不会无缘无故发送ACK或者NCK。):设置一个超时计时器,当超过一般发送数据需要的往返时间后,重新发送刚才的分组。这叫超时重传
对于接收方发送的ACK或NCK丢失的情况(会造成发送方超时重传,这时再被接收方接收到,接收方如何确认分组没有重复):需要给每一个分组带上序号,对于停止-等待协议,因为每次只发送一个分组,所以只需要能够分辨这个分组与上一个分组不同即可,因此只需要0和1来区分就行了,当接收方接收到分组发现重复时,丢弃该分组再发送ACK
有发送分组编号就需要有接收分组编号。


因为Ta远小于Td一般忽略


当往返时间较大时,信道利用率极低(如卫星链路)

注意是单程,rtt往返是两个单程

流水线发送可以提高信道利用率
回退N帧协议GBN
用三个比特位给分组编序号
发送方要维持一个发送窗口,窗口大小WT可变,不可超过最大值
当发送窗口和接收窗口都为1时,就是停止等待协议
落在窗口的分组可以发送,窗口外的不允许
接受窗口只能为1
同样落在接收窗口中的分组可以接受,落在接收窗口之外的分组不允许接收
每当接收方接收到一个分组就把接收窗口向后移动一位,并给发送方发送对应分组的确认分组
发送方每接收一个确认分组,发送窗口就向前滑动一位。
发送方就可以将接收方已接受的分组缓存删除,接收方也可以择机将接收到的分组交付给上层
累计确认

假使前发送方发送了1-4五个分组,接收方发送了累确认ACK1(0、1已接收),ACK4(234接收),但是ACK1丢失但是ACK4被发送方收到,那么发送方就知道分组4之前的所有分组接收方都接收完毕,同样可以滑动发送窗口。
这就可以看出累计确认即使确认分组丢失,发送方也可能不必重传(超时重传)
再来看出现误码的情况:发送方发送5个分组,但是第一个分组就出现了误码被接收方丢弃,后续分组由于与接收窗口不匹配也被丢弃,接收方会根据丢弃的分组数量发送相同数量的上一条ACK,发送方接收到ACK之后由于已经接受过了上一条ACK,可以不必等到超时计时器超时就立即重传。
至于接收到几个ACK可以立即重传,由具体实现决定


发送窗口尺寸不能超出分组序号上限,假设窗口上限为7,设置窗口大小为8,会发送0-7,接收方接收了这8个分组,并发送确认分组ACK7,但是这个确认分组丢失了,发送方会对这八个分组重传,此时的接收窗口仍然是0,不会分辨出这些数据已经接受过了。


我猜要是有对应1丢失的选项应该会选错
选择重传协议SR

按序确认,丢失的等重传,接收窗口与发送窗口大小相同
能滑动接收窗口就滑动,能滑动发送窗口就滑动
发送窗口移动之后可以发送新的落入窗口的分组,并删除已经确认收到的分组,接收窗口也可以择机将接受好的分组交付上层
对于已经接收到的分组但是由于之前分组丢失而不能滑动窗口的分组需要标记已经发送防止重传
这里想要重传只能靠超时重传

ppp协议
点对点协议,广泛应用于数据链路层
通常用户想要成为因特网上的主机想要经过ISP分配ip地址才可以,(中国三大运营商电信、移动、联通)

帧格式

ppp协议解决透明传输的方法

面向字节的异步链路采用插入转义字符的字节填充法
以0x7e作为帧定界符

规则:
7E:前插7D,后减20
7D:前插7D,后减20
03:前插7D,后加20
面向比特的同步链路采用插入比特0的比特填充法
以01111110为定界符

差错检测

工作状态(静止是初始状态)

媒体接入控制


笔记到此结束,不记了