计算机网络的部分笔记
1 概述
-
时延带宽积: $时延带宽积=传播时延 * 带宽$ 表示的是这样的链路能够容纳多少比特
-
往返时间RTT:在计算机网络中,往返时间RTT是一个重要的性能指标,因为在许多的情况下,网络上的信息不是单向传输而是交互的。 往返时间包括在链路上往返传播的时延,排队时延以及转发数据的时延。
-
有效数据率:$有效数据率=数据长度/(发送时间+RTT)$ 单位是$bit/s$
-
利用率: 利用率分为信道利用率和网络利用率,信道利用率表示信道有百分之几的时间是被利用的。网络利用率是网络信道利用率的加权平均值。信道利用率并非是越高越好,当然,网络利用率也不是越高越好。当信道利用率或者网络利用率过高时,会产生非常大的时延。
-
协议与服务:协议是两个对等的实体(或多个实体)进行通信的规则集合。在协议的控制下,两个对等实体之间的通信使得本层能够像上一层提供服务。要实现本层的协议,还需要下面一层所提供的服务。协议与服务的概念是不同的,协议是“水平的”,但是服务是“垂直的”。第n层向上面的第n+1层所提供的服务实际上已经包括了它下面各层所提供的服务(因为第n-1层也向第n层提供服务,第n-2层也向第n-1层提供服务)
-
协议有意和很重要的特点,就是协议把所有的不利条件都估计到,而不能假定一切都是正常的和非常理想的。
-
网络体系结构描述的是网络的层次,每层使用的协议,每层要完成什么样的功能,没有描述协议内部的实现细节
2 物理层
-
可以将物理层的任务描述成为确定与传输媒介接口有关的一些特性,即:
- 机械特性:接口的形状和尺寸,引脚的数目和排列,固定和锁定装置等
- 电气特性:接口电缆的各条线上出现电压的范围
- 功能特性:指明某一条线上出现的某一种电平的意义
- 过程特性:指明对于不同功能的各种肯能事件出现的顺序
-
模拟信号:代表消息的参数的取值是连续的
-
数字信号:代表消息的参数的取值是离散的。不同离散数值的基本波形称为码元。在用用二进制编码时,只有两种不同的码元,一种代表0,一种代表1
-
三种通信的基本方式:
- 单向通信:又称为单工信道,即只能有一个方向的通信而没有反方向的交互。例子:广播。
- 双向交替通信:又称为半双工通信。双方都可以发送信息,但是双方不能同时发送(当然也不能同时接收)。这种通信只能一边发送另一边接收,或者是反过来。例子:对讲机(对讲机一般都是半双工的,电影里面特种兵在用对讲机通话时一般都是你说一句我听一句,很少有两个人同时在一起对喷的.....)
- 双向同时通信: 又称为全双工通信。双方都能同时发送信息同时接受信息。例子:手机
-
常用的编码方式(21年选择题考了,我没答上来。。。):
- 不归零制:正电平代表1,负电平代表0 (最简单,一条线的那种)
- 归零制:正脉冲代表1, 负脉冲代表0 (正脉冲:凸,负脉冲:凹) 王道书上的波形和教材上的波形不一样....
- 曼彻斯特编码:位于周期中线向上跳代表0,向下跳代表1 曼彻斯特编码有自同步能力
- 差分曼彻斯特编码:在每一位的中心处都有跳动,位于开始边界有跳动的代表0,没有跳动的代表1 (如果这一位是0的话,波形与上一位相同,如果这一位是1的话,波形和上一位相反,当然也可以规定相反) 差分曼彻斯特编码也有自同步能力
-
比特率与波特率
- 比特率是指单位时间内传输的二进制码元个数
- 波特率表示单位时间内传输的码元个数
- 比如某一个系统有16种不同电平,假设现在用二进制编码来表示这16种电平,则二进制编码需要4位。这样的系统在传输时,一段时间内如果传输了一个码元,实际上传输了4位二进制编码,这样比特率就是波特率的4倍。再比如曼彻斯特编码,虽然只有两种电平(0和1),但是对于每一种电平需要两位二进制编码来表示(分别是01和10)。如果传播一个码元,实际需要传输2位二进制编码,这样比特率是波特率的两倍。
-
奈氏准则与香农定理
- 奈氏准则:$理想低通信道下的极限数据传输速率=2W{log_2(V)}$ 其中W为信道的带宽。V表示每个码元的离散电平数目(实际做题发现貌似就是系统中有多少电平数目…)
- 香农定理:$信道的极限数据传输速率=W*{log_2(1+S/N)}$ 其中W为信道带宽,S为传输信号的功率,W为噪声的功率
- 信噪比:$信噪比=10*{log_{10}(S/N)}$,单位为dB。实际问题一般都是给信噪比,然后导出S/N,再带入香农定理
-
引导型传输媒体
- 双绞线:可以传输模拟信号和数字信号
- 同轴电缆
- 光缆
-
码分复用:
- 每一个站都有唯一的m bit 的码片序列 ,如果一个站要发送1,就发送自己的码片序列,如果要发送0,就发送自己的二进制反码。为了方便,将码片种的0写为-1 1写为+1。 比如一个站的码片是 00001111,那他的码片序列就是(-1,-1,-1,-1,+1,+1,+1,+1)。每一个站的码片都不同,且相互正交。而且,与各个站的反码的码片也正交。自己的规格化内积为1。
- 现在假如有有A,B,C,D四个站,假设他们的码片长度都是10,现在有A站收到了一个信号S(这个S可能包含着B,C,D的叠加信号)。如果A想知道B发的信号是什么,只需要用B的码片与S做内积即可。如果结果为10,那么B发的就是1,如果结果为-10,那么发的就是-1,如果结果是0,那就是B啥也没发。
-
工作在物理层的设备:中继器,集线器,网卡,网线,调制解调器
3 数据链路层
-
数据链路层的信道主要有两种:点对点信道,广播信道。数据链路层的三个基本问题:封装成帧,透明传输和差错检测。
-
局域网虽然是一个网络,但是不需要路由器的转发,所以从整个互联网来看,局域网仍然是数据链路层的范围。
-
封装成帧:就是在一段数据的前后分别加上首部和为尾部,就构成了一个帧。所有在互联网上传输的数据都是以IP数据报为单位传送。网络层的IP数据报传输到数据链路层就是帧的数据部分。每一种链路层协议都规定了传送帧的数据部分的长度上限。
-
透明传输:帧的首位都有控制字符,所以数据种的任何8 bit的组合都不能和首位的控制字符相同。如果其中某个组合和收尾的控制字符相同,需要向其前面添加一个转义字符“ESC”。
-
差错控制:数据链路层广泛使用了循环冗余检验。(这个貌似不怎么考....)
-
为网络层提供服务:
- 无确认无连接服务
- 有确认无连接服务
- 有确认面向连接服务
- 注:有链接就有确认,不存在有链接无确认的服务。
-
点对点协议PPP:用户通常需要连接到某个ISP才能链接路联网,PPP协议就是用户和ISP进行通信时所用的数据链路层协议。
-
PPP协议由三部分组成:
- 将IP数据报封装到串行链路的方法。IP数据报在PPP帧种就是其信息部分。这个信息部分的长度收到最大传送单元MTU的限制
- 一个用来建立,配置和测数数据链路链接的链路控制协议LCP
- 一套网络控制协议NCP
-
PPP协议的零比特填充:为了防止数据中出现和标志字段01111110一样的的信息,采用零比特填充的方法。简单的说就是数据中每发现连续的5个1,就在后面填充一个0。不论这5个1后面跟的数字是什么。比如数据01111110010,填充后是011111010010。在比如,数据是0111110,填充后是01111100。
-
以太网:以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。(百度百科) 为了通信的简便,以太网采取了下面的措施:
- 采用较为灵活的无连接的工作方式,不必先建立链接就可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。(这样可以让以太网工作起来非常简单,而局域网的信道质量很好,产生差错的概率小)。因此,以太网提供的服务是尽最大努力交付,就是不可靠的交付。如果接收站收到有问题的数据帧,直接丢弃,什么也不用做。对有差错的帧是否需要重传是由高层决定的。比如高层用的是TCP协议,那么TCP就会发现丢失了一部分数据,于是一段时间后,TCP就把这些数据重新交给以太网进行重传。但是以太网不知道这是重传帧,而是当成新的数据帧来发送。
- 总线上只要有一台计算机在发送数据,总线的传输资源就会被占用。因此,因此,在同一时间只能允许一台计算机发送数据。为了减小冲突的发生概率,以太网使用了CSMA/CD协议,意思是载波监听多点接入/碰撞检测。以太网是半双工的。
- 以太网数据使用了曼彻斯特编码。
-
CSMA/CD协议:先听后发,边听边发,冲突停发,随机重发
- 1适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送。
- 2如果适配器侦听到信道空闲,那么就开始发送该帧。如果监听到信道忙,那么就持监听直到信道上没有信号能量。然后开始发送该帧。
- 3在发送过程中,持续监听信道。 如果一直没有检测到碰撞,就顺利的法这个帧发送完毕。如果检测到碰撞,就终止数据发送,并且发送一个拥塞信号,让所有用户都知道。
- 4在终止发送后,适配器就执行指数退避算法,等待一段时间后重新回到步骤2。
-
CSMA/CD协议的最小帧长:$最小帧长=总线的传播时\*延数据传输速率*2$
-
纯ALOHA协议与时隙ALOHA协议(教材上没有涉及,但是王道考研中有)
- 纯ALOHA协议:当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据,如果一段时间未收到确认,该站点就认为传输过程中发生了冲突,发送站点需要等待一段时间再发送数据。
- 时隙ALOHA协议:把各个站上的时间同步起来,并将时间划分成为一段段等长的时隙,规定只能在每一个时隙的开始时才能发送一个帧
-
三种CSMA协议(教材上没有涉及,但是王道考研中有)
- 1-坚持 CSMA协议:信道忙时持续监听,信道空闲时立刻发送数据。
- p-坚持 CSMA协议:信道忙时持续监听,信道空闲时以p的概率发送数据,以1-p的概率推迟到下一个时隙,下一个时隙如果信道空闲就再以p的概率发送数据,以1-p的概率推迟…如果信道忙就监听信道。
- 非坚持 CSMA协议:信道空闲时立刻发送数据,信道忙时就放弃监听,等待一个随机时间后再监听。
- 这三个协议都没有涉及到碰撞检测,CSMA/CD协议是CSMA协议的改进版。
-
停止-等待流量控制(王道上面有,教材上貌似没有涉及,也可能是我没看到....):
- 停止-等待流量控制的基本原理:发送方每发送一个帧,都要等待接收方对的应答信号,之后才能发送下一个帧。接收方每接受一个帧,都要反馈一个应答信号,表示可以接受下一个帧。
-
滑动窗口的控制(教材上貌似没有涉及,但是明显是必考内容):在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口,同时接收方也维持一组连续的允许接收帧的信号,称为接收窗口。发送窗口用来对发送方进行流量控制,发送窗口的大小WT代表还未收到对方确认信息的情况下,最多还能发送多少个数据帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才能将该数据帧收下。如果在就收窗口外,直接丢弃。(其实我感觉这个滑动窗口,真的有点像算法里面的滑动窗口.^_^.)
-
滑动窗口的一些特性:
- 只有接收窗口向前滑动时(同时接收方发送了确认帧),发送窗口才有可能(只有收到了确认帧后才一定)向前滑动。
- 停止等待协议:发送窗口大小=1 接收窗口大小=1
- 后退N帧协议:发送窗口>1 接收窗口=1
- 选择重传协议: 发送窗口>1 接受窗口>1
-
停止等待协议:最简单的滑动窗口,接受和发送窗口都是1。其中出了出现数据帧丢失以外,还可能会出现两种问题:
- 到达目的站的帧可能遭到破坏,接收站将其丢弃。解决:发送站设置一个计数器,如果时间到后还没有收到接受站的确认帧,就再发一次,直到收到确认帧。(接收站是不会发送过来错误信息的)
- 数据帧正确,但是返回的确认帧被破坏。此时接收方已将收到了正确的数据帧,但是发送方收不到确认帧,因此发送方会重传已经被发送过的数据帧,接受方如果收到同样的数据帧,就会丢弃这个帧,同时再发送一个确认帧。
-
后退N帧协议:发送方无需在收到上一个帧对的ACK后才开始发送下一个帧,而是可以连续的发送多个帧。当接受方检测出失序的信息帧后,要求发送方重新发送最后一个正确信息帧之后的信息帧。比如说发送方一次连着发送了 1 2 3 4 5 6 7, 接收方收到了1 2 3,结果4号帧丢失了,此时接收方即使真的收到了5 6 7也不会保存,而是直接丢弃。接收方会要求发送方从新发送 3 以后的数据帧。后退N帧协议因为没有保存后面的帧,所以如果信道质量很差时,数据帧频繁的丢失,此时后退N帧协议的效率可能不如停止等待协议。
-
后退N帧的接收窗口大小为1。如果采用n比特帧进行编号(就是数据帧的编号一共有2^n种),则发送方窗口要小于等于 (2^n)-1。为什么不是2^n呢? 考虑这种情况:一共有8种编号的数据帧,发送方一次性把8个帧全部发送出去,接收端全部正确接收,发送一个确认帧。但是这个确认帧丢失了,所以一段时间后发送端再次重新发送这8个帧。但是接收端并不知道确认帧已经丢失去,确认端会认为这8个帧是新的8个数据帧(因为编号是循环的,接收端收到1~8以后向后滑动到下一个1,分辨不出来这是上一组的帧还是下一组的帧),所以继续接收,这样就多收了一组数据帧,造成了数据错误。 入过发送窗口为7,发送端发出1~7的数据帧,接收端正确收到,但是返回的确认帧又丢失了(这个确认帧也太不靠谱了 >_< ) 此时一段时间后发送方重新发送这1-7这7个帧,此时接收方本来需要8,但是收到了1~7,就会重新一个确认帧来通知发送方。
-
选择重传协议:选择重选协议会避免重复传送那些已经正确到达接收端的数据帧。接收端有缓冲区,缓冲区的大小等于接收窗口的大小。接收端一旦认为出现错误,就会发送一个NAK帧给发送方,发送方会重新发送NAK帧中指定的帧。
-
选择重传协议中,接收窗口 <= 发送窗口,不过一般都是 接收窗口= 发送窗口。且 接收窗口+发送窗口<=(2^n)。当接收窗口取最大值时,接收窗口=发送窗口=2^(n-1)。
-
以太网的mac层:在局域网中,mac地址又叫做物理地址或者硬件地址。mac地址是独一无二的48位二进制地址。
-
冲突域与广播域:
- 当一个网卡发送信息时,只要有可能和另一个网卡的信息发生冲突,那么这些发生冲突的网卡构成一个冲突域。
- 当一个方法发送广播时,能收到这个广播的所有网卡的集合构成一个广播域。
-
工作在数据链路层的设备:网桥,交换机。网桥和交换机都能隔离冲突域,但是不能隔离广播域。
(先这些,以后继续补充)
4 网络层
-
网络层:网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络层不能保证服务的质量,这里的数据报,基本说的就是IP数据报。(其实我感觉网络层能用两个字概括:IP)
-
网际协议IP:网际协议IP只TCP/IP体系中最重要的协议之一。它还有三个配套使用的协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
-
虚拟网络链接(虽然这里王道书中没有,但是我总感觉很多题中都有这里的知识点)
- 要把世界上的所有网络都连接起来,是非常复杂的,比如有很多问题:不同寻址方案,不同的最长分组,不统计网络接入机制....将这些网络连接起来,需要一些中间设备。
- 物理层使用的设备叫转发器。
- 数据链路层使用的中间设备叫网桥或者桥接器
- 网络层使用的设备叫路由器
- 在网络层以上的设备叫网关。网关链接两个不相容的系统需要在高层进行协议的转换。
- 路由器是一台专用的计算机,在互联网中进行路由选择。(后来我听做过通信的群友的介绍,路由器是一种非常NB的设备)由于历史原因,许多关于TCP/IP的文献把网络层使用的路由器叫网关(教材里面有时也会这样用)
-
IP地址:
- IP地址给互联网上的每一台计算机或者路由器的一个接口分配一个32位的标识符。
- A类IP地址:8位网络号+24位主机号,其中网络号第一位必须是0
- B类IP地址:16位网络号+16位主机号,其中网络号的前两位必须是10
- C类IP地址:24位网络号+8位主机号,其中网络号的前三位必须是110
- D类IP地址:前四位是1110,用于多播(一对多通信)
- E类IP地址:前四位是1111,保留以后使用
-
特殊的IP地址:
- 网络号全0的IP地址:表示本网络
- A类IP地址中网络号是127(01111111):本地软件环回测试本主机的进程之间通信。例如127.0.0.1。因此,网络号位127的地址根本不是一个网络地址。
-
一般不适用的特殊IP地址(教材121页的表格):
网络号 主机号 源地址使用 目的地址使用 代表的意思 0 0 可以 不可 在本网络上的本主机 0 host-id 可以 不可 在本网络上的一台主机号位host-id的主机 全1 全1 不可 可以 在本网络上广播(路由器不转发) net-id 全1 不可 可以 对网络号为net-id上的所有主机广播(我认为路由器应该要转发) 127 非全0或全1的任何数 可以 可以 本地软件环回测试 -
IP地址的一些特点:
- IP地址的管理机构在分配IP是只分配网络号,主机号由得到网络号的单位自行划分。
- 路由器仅根据目的主机所连接的网络号来转发分组,不考虑主机号。
- IP地址不是某个计算机的”身份证”,而是一个主机和一条链路的接口。如果主机连接到两个网络,它必须也有两个相应的IP地址,其网络号必须是不同的。
- 用转发器和网桥连接起来的若干个局域网仍然是一个网络。只能有一个网络号。
- 路由器的每一个接口都有一个不同网络号的IP地址
-
IP地址与MAC地址的区别:
- MAC地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址是用软件实现的)
- 使用IP地址的IP数据帧在数据链路层被封装成MAC帧,MAC帧的源地址和目的地址都是MAC地址,这两个MAC地址都写在了MAC帧的首部。
- 在网络上传输的MAC帧,他的源MAC地址和目的MAC地址可能会因为路由器的转发而发生变化,但是他的源IP地址和目的IP地是不会变化的。
- 在IP层抽象的互联网上只能看见IP数据报
- 路由器只会根据目的IP地址的网络号进行路由选择
- 在局域网的链路层,只能看见MAC帧。
-
地址解析协议ARP(Address Resolution Protocol):
- 作用:已知一个机器的IP地址,需要找出其对应的MAC地址,地址解析协议就是用来解决这样的问题。
- 每一台主机都有一个ARP高速缓存,里面有本局域网上面的各个主机与路由器的IP地址和MAC地址映射表。
-
路由器有MAC地址,网桥没有MAC地址(这个没有找到资料,百度知道上查的,不清楚对不对.....)
-
IP 数据报的含义(数据报的格式一般都会给出,不然就太变态了.....):
- IP数据报的首部有20字节的固定部分
- 版本:4位,指的是IP协议的版本。通信双方的IP协议版本必须一致。
- 首部长度:4位,表示首部长度是多少字节,注意其单位是4字节。
- 区分服务:8位,只有使用区分服务时才用到这个字段,一般不涉及
- 总长度:16位,首部和数据之和的长度,单位是字节。以太网规定在以太网上传输的IP数据报的最大总长度是1500字节。(这个貌似考过)
- 标识(identification):16位,数据报在分片后,相同标识的数据报分片才能组装成原来的数据报
- 标志(flag):占3位,但是只有两位有意义。标示字段中的最低为为MF(more fragment),MF=1表示后面还有分片,MF=0表示这是数据报片中的最后一个(即后面没有分片)。中间的一位DF(dont fragment),表示不能分片。当DF=1时表示数据报不能分片,DF=0时表示可以分片。
- 片偏移:13位,表示在某一个分片在分片之前,相对于 数据字段 的起点,该片从何处开始。片偏移的单位是8字节。也就是说每一个分片的长度一定是8字节的整数倍。
- 生存时间:8位,表示数据报在网络中的寿命,一旦生生存时间等于0,就丢掉这个数据报。
- 协议:占8位,表示数据报的数据部分使用了那种协议(比如ICMP,TCP,UDP之类的)
- 首部检验和:16位,这个字段只检验数据报的首部,但是不包括数据部分。
- 源地址:32位
-
目的地址 32位
-
注意区分标识(identification)和标志(flag),标识更类似于某种身份信息,标志类似于属性。标志占的位数很小(和算法题用到里面的flag一样,一般都不会用一个非常长的数字来表述某个属性吧....)
-
路由器的路由表中,对一条路由最重要的两个信息:(目的网络地址,下一跳地址)
-
划分子网:
- 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。划分子网属于一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成的。因为这个单位对外表现为一个网络。
- “三级IP地址” {网络号,子网号,主机号}
- 凡是从其他网络发个本单位某一台主机的IP数据报,仍然是根据IP数据报的目的网络好链接在本单位上的路由器。但是,路由器在收到IP数据报后,再根据目的网络号和子网号来找得到目的子网,把IP数据报交付给主机。
- 没有划分子网时,IP地址时两级结构,划分子网后,IP地址变成了三级结构,划分子网只是把IP地址的主机号这部分再划分,而不改变IP地址原来的网络号
-
子网掩码:
- 如果一个网络不划分子网,那么这个网络的子嘛就是默认子网掩码。
- A类地址的默认子网掩码:255.0.0.0
- B类地址的默认子网掩码:255.255.0.0
- C类地址的默认子网掩码:255.255.255.0
- 划分子网增加了灵活性,但是减少了能链接在网络上的主机总数。(因为划分了子网后,每一个子网的主机号都不能是全0或者全1,没划分以前只要在网络号中去掉一个全0全1就可以了)
-
划分子网后,路由表中必须由三个内容:目的网络地址,子网掩码,下一跳地址。
-
无分类编制CIDR(构成超网):
- 取消了A,B,C类地址和划分子网的概念,把32位IP地址划分成两部分,前面是网络前缀,后面是网络号
- 和可以使用斜线记法,如:128.14.35.7/20,前面20位是网络前缀,后面12位是主机号。
- CIDR使用的是地址掩码,虽然CIDR不适用子网,但是由目前还有一些网络在只用子网划分和子网掩码,所以CDIR中的地址掩码还可以继续称为子网掩码。在使用斜线记法中,斜线后面的数就是1的个数。
- 路由选择时使用最长前缀匹配。就是从匹配正确的结果可能有多个,在这些结果中选择前最长共前缀的网络进行跳转。
-
网际控制报文协议ICMP(这个貌似涉及的不多):
- 为了有效地转发IP数据报和提高交付成功的机会,在网际层使用了国际报文协议(Internet Control Message Protocol)
-
内部网关协议:IGP(Interior Gateway Protocol):在一个自治系统内部使用的路由选择协议,比如RIP和OSPF协议。
-
外部网关协议:源主机和目的主机在不同的自制体系中,需要一种协议可以将路由选择信息从一个路由选择体系传递到另一个路由选择体系中。如BGP-4.(以上两个”网关”,指的好像就是路由器)。
-
RIP协议:中名字叫路由选择协议。涉及到:
- 距离向量算法(来源于Bellman-Ford算法)
- RIP协议在传输层使用的是UDP数据报进行传送。
-
OSPF协议:
- 使用dijkstra算法
- 不使用UDP,而是直接使用IP数据报传送。
-
组播(多播):组播一定是使用UDP的,因为TCP是面向链接的。组播的工作形式非常像递归遍历一棵树。
-
网络地址转换NAT:(按照我的理解,可能是错的)简单的说就是现在的计算机太多了,这些计算机都链接到一个互联网上IP地址不够用,或者是有的计算机专用网络为了数据安全要和外网进行隔离,所以引入私有IP地址。这些私有IP地址不能直接和外网链接,必须先通过NAT协议来转换成一个全球IP地址才可以。私有IP地址是可以复用的,比如数学院组成一个内网,物理学院也组成一个内网,数学有个计算机的IP是192.168.10.10,物理学院也有一台计算机的IP是192.168.10.10,但是他们通过NAT协议所映射的外网地址是不同的。
-
当NAT路由器有N个全球IP地址时,专用网内最多可以同时有N台主机接入互联网。但是不代表专用网内最多有N台主机。如果有大于N台主机,它们可以轮流接入互联网。
-
私有IP地址:
- A类:10.0.0.0-10.255.255.255
- B类:172.16.0.0-172.31.255.255
- C类:192.168.0.0-192.168.255.255
-
工作在网络层的设备:路由器,可以隔离广播域。
5 传输层
-
传输层(教材中叫运输层,但是王道和考研中一般叫传输层)是整个网络体系结构中的关键层次之一。
-
从IP层来说,通信的两端是两台主机之间的通信,IP数据报的首部也是明确的标志了两台主机的IP地址。但是”两台主机之间的通信”这种说法不够明确,因为真正的通信的实体时来台主机之间的进程。是一台主机的进程与另一台主机的进程之间交换数据。因此严格的说,两台主机之间的通信是指两台主机之间的进程通信。
-
网络层为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。
-
传输层要为收到的报文提供差错检测。网络层的IP数据报里面的检验和字段,只是用来检测首部受否出现差错,而不检测数据部分。
-
传输层向高层用户屏蔽了下面网络核心的细节(比如网络拓扑,所采用的路由选择协议等)。它使应用进程看见的好像是在连个传输实体之间有一条端到端的逻辑通信信道。
-
TCP使提供面向连接的服务。在传输数据传输之前必须建立可靠的链接,数据传输之后要释放链接。TCP不提供广播或者组播服务。
-
UDP在传输之前不需要建立链接。虽然UDP不提供可靠的交付,但是在某些情况下,UDP确实使一种最有效的工作方式。
-
使用UDP或者TCP的一些应用:
应用 应用层协议 传输层协议 名字转换 DNS(域名系统) UDP 文件传输 TFTP(简单文件传送协议) UDP 路由选择协议 RIP(路由信息协议) UDP IP地址配置 DHCP(动态主机配置协议) UDP 网络管理 SNMP(简单网络管理协议) UDP 远程文件服务器 NFS(网络文件系统) UDP IP电话 专用协议 UDP 流式多媒体通信 专用协议 UDP 多播 IGMP(网际组管理协议) UDP 电子邮件 SMTP(简单邮件传送协议) TCP 远程终端接入 TELNET(远程终端协议) TCP 万维网 HTTP(超文本传输协议) TCP 文件传送 FTP(文件传送协议) TCP -
UDP(User Datagram Protocol用户数据报协议)的首部格式:
- 源端口:源端口号,在需要对方回信时选用,不需要时可以使用全0.
- 目的端口:目的端口号,在终点交付报文时使用。
- 长度:UDP用户数据报的长的,单位是字节,其最小值为8字节(仅有首部长度)
- 检验和:检测UDP用户数据报在传输中是否存在差错,有错就丢弃。
-
UDP用户数据报在计算检验和时,要在UDP用户数据报之前在添加12字节的伪首部,计算方法与IP数据报类似,但是IP数据报只是计算首部,UDP数据报会把首部和数据部分一起计算。(教材上是这么写的,不过看具体过程伪首部也要加上)
-
传输控制协议TCP(Transmission Control Protocol):
- TCP是一个面向链接的传输层协议。
- 每一个TCP链接只能有两个端点。每一条TCP链接都只能是点对点的,
- TCP提供的是全双工通信。
- TCP面向字节流。
-
TCP报文的首部格式:
- 源端口和目的端口:分别占2字节,分别写入源端口号和目的端口号。
- 序号:占4字节,TCP是面向字节流的,在TCP链接中的字节流每一个字节都按顺序编号。(有点类似IP数据报中分组后的编号)
- 确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
- 数据偏移:占4位,指出TCP报文段的数据距离TCP报文段的起始部分有多远。
- 保留:占6位,保留为今后使用,但目前应置为0。
- 紧急URG:当URG=1,表明紧急指针有效,告诉系统此报文中有紧急数据,要尽快传送。不需要按照原来的排队顺序来传送。
- 确认ACK:当ACK=1时,确认字号段才有效,当ACK=0时,确认号无效。TCP规定,当建立链接后所有传输的报文的ACK置为1。
- 推送(PSH): 当两个应用程序进行交互式通信时,有时在一端的应用程序希望在键入一个命令后能立刻受到对方的响应。在这种情况下啊,发送方的PSH=1.
- 复位RST:当RST=1时,说明TCP链接中有严重的差错,必须释放连接。然后重新建立链接。
- 同步SYN:在建立链接时用来同步序号。当SYN=1而ACK=0时,表明这是一个请求报文段。如果对方同意建立链接,在响应的报文段中使用SYN=1和ACK=1。因此,SYN置为1是一个链接请求或者链接接收报文。
- 终止FIN:用来结束一个链接,当FIN=1时,表明此段报文的发送方的数据发送完毕,请求释放运输链接。
- 窗口:占2字节,窗口值时[0,2^16-1]之间对的整数。窗口指的是发送本报文段的一方的接收窗口。窗口值是为了告诉对方,从本报问段首部中的确认信号算起,接收方目前允许对方发送的数据量(单位为字节)。窗口值是接收方让发送方设置发送窗口的依据。
- 检验和:占2字节,包含首部和数据两部分。
- 紧急指针:只有URG=1时才有意义。指出本报问中紧急数据的字节数。因此,紧急指针时指出了紧急数据的末尾在报文中的位置。
- 选项:长度可变,最长可以40字节,没有选项时,TCP首部长度20字节。
-
TCP使用滑动窗口来实现流量控制。
-
TCP的拥塞控制:TCP进行拥塞控制的算法有四种,分别是:慢开始,拥塞避免,快重传,快恢复。其中快重传和快恢复是慢开始,拥塞避免算法的改进(这些算法需要记住具体怎么操作)
-
TCP运输链接管理:TCP是面向链接的协议。链接有三个阶段吗,即为:连接的建立,数据传送和链接释放。
-
TCP链接的建立(三次握手):
- 第一步,客户机的TCP首先向服务器的TCP发送连接请求报文,这个特殊的报文段首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但是要消耗一个序号,这时,TCP客户端程序进入了SYN-SEBT(同步已发送)状态。
- 第二步:服务器的TCP收到连接请求报文后,如果同意建立连接,则向客户机发出出确认。并为该TCP链接分配缓存和变量。在确认报文中,SYN=1,ACK=1,确认号是ASK=x+1。同时,自己也选择一个初始序号seq=y。这段确认报文也不能携带数据。但是也要消耗一个序号。此是,TCP服务器为SYN-RCVD(同步收到状态)。
- 第三步:当客户机收到报文后,还要向客户端确认,并且为该TCP链接分配缓存和变量。确认报文的ACK置为1,确认号ack=y+1.序号seq=x+1。该报文已经可以携带数据。如果不携带数据,就不消耗序号。TCP客户端进入了ESTABLISHED(已确立链接状态)。
-
TCP链接的释放(四次握手):
- 第一步:客户端打算关闭连接,向其TCP发释放连接的报文,并停止发送数据。主动关闭TCP链接。该报文的终止位FIN=1,序号seq=u,它等于全面已经传送数据报的最后一个字节数+1。这条报文即使不携带数据,也要消耗一个序号。这是TCP客户端进入了FIN-WAIT-1(终止等待1)状态。TCP是全双工的,可以想象成一条TCP链接上有两条数据通路,在发送FIN的一端不再发送数据(即为关闭其中一条数据通道),但是对方还可以发送数据。
- 第二步:服务器收到连接释放报文后即发出确认,确认号为ack=u+1。序号seq=v,等于前面已经传送过的数据的最后一个字节数+1。然后服务器进入CLOSE-WAIT(关闭等待)此时,从客户端到服务器方向的链接就释放了,TCP链接处于半关闭状态。但是如果服务器要发送数据,客户端也要接收。也就是从服务器到客户端的链接还没有完全关闭。
- 第三步:如果服务器已经没有要向客户端发送的数据,就通知TCP释放链接,此时发出FIN=1的连接释放报文段。设该报文段的序号为w(因为刚才服务器可能又发送了一些数据),还要重复上次发送的确认报号ack=u+1。此时服务器进入了LAST-ACK(最后确认)状态。
- 第四步:客户机收到了连接释放报文后,必须发出确认。把报文确认段中的确认位ACK=1。确认号ack=w+1,序号seq=u+1。此时TCP链接还没有释放,必须经过时间按等待计时设置的时间2MSL后,客户机才进入CLOSE状态。
-
TCP链接总结:
- 连接建立分三步(A为客户端,B为服务器)
- 1 SYN=1,seq=x。 A->B
- 2 SYN=1,ACK=1,seq=y,ack=x+1 B->A
-
3 ACK=1,seq=x+1,ack=y+1(可携带数据) A->B
-
链接释放分4步
- 1 FIN=1,seq=u (可携带数据) A->B
- 2 ACK=1,seq=v,ack=u+1 (可携带数据) B->A
- 3 FIN=1,ACK=1,seq=w,ack=u+1 B->A
- 4 ACK=1,seq=u+1,ack=w+1 A->B
6 应用层
-
每一个应用层协议都是为了解决某一类问题,而这些问题又必须通过位于不同主机中的多个进程直之间的通信和协同工作来完成。
-
应用层协议应当定义:
- 应用进程交换报文的类型,入请求报文和响应报文。
- 各种报文类型的语法,如报文中各个字段及其详细描述。
- 字段的予以,即为包含在字段中的信息的含义。
- 进程何时,如何发送报文,以及对报文进行的响应。
-
应用层的许多协议都是基于客户端服务器方式。即为P2P对等通信方式。实质上也是一种特殊的客户服务器模式。客户是服务的请求方,服务器是服务的提供方。
-
域名系统DNS(Domain Name System):是互联网使用的命名系统,用来把便于人们使用的及其名字转换为IP地址。计算机的用户只是间接而不是直接的使用域名系统,但是DNS却为互联网的各种网络应用提供了核心服务。
-
域名的语法:比如wwww.baidu.com,从右到左,com为顶级域名,baidu为二级域名,www为三级域名。域名不区分大小写。由多个符号组成的完整域名总部不超过255个字符。
-
域名服务器:
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器
-
主机向本地域名服务器查询一般采用的都是递归查询。查询中使用UDP报文。
-
本地域名服务器向跟域名服务器查询通常采用迭代查询。查询中使用UDP报文。
-
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存。其中一个是主域名服务器,其他的是辅助域名服务器。
-
为了提高DNS查询效率,并且嘉庆根域名服务器的符合和减少互联网上DNS查询报文属灵,在根域名服务器中广泛地使用了高速缓存。
-
FTP协议(基于TCP):FTP使用客户服务器模式,一个FTP服务器可以同时为多个客户提供服务。FTP的服务分为两部分组成,一个是主进程,负责接收新的请求。另外一个是从属进程。负责处理单个请求。
-
主进程的工作步骤如下:
- 打开熟知端口号,使客户进程能够连接上。
- 等待客户进程发出链接请求。
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程请求处理完毕后即终止,但是从属进程在运行期间根据需要还可以创建其他的一些子进程。
- 回到等待状态,继续接收其他客户发来的请求。主进程与从属进程的处理使并行的。
-
服务器有两个从属进程:控制进程和数据传送进程。
-
在进行文件传输时,FTP的客户端和服务器有两个并行的TCP链接,分别是控制连接和数据连接。控制连接在整个会话期间一直保持打开。
-
简单文件传送协议TFTP(基于UDP):
- 每一次传送的数据报文中有512字节的数据,但是最后一次可以不足512字节。
- 数据报问按照序列编号,从1开始。
- 支持ASCII码或者二进制传送。
- 可以对文件进行读或写。
- 使用很简单的首部。
-
超文本传输协议HTTP:从层次的角度看,HTTP是面向事务的应用层协议。HTTP使用了面向连接的TCP协议,保证了数据的可靠。HTTP协议虽然使用的TCP协议,但是HTTP协议本身是无连接的。这就是说通信的双方在交换HTTP报文前不需要先建立HTTP链接。
-
电子邮件:电子邮件从发送到接收全程使用了TCP链接。电子邮件中最总要的两个标准:简单邮件传送协议SMTP和互联网文本报文格式[RFC 5322]。
-
发送邮件用到的协议:SMTP,读取邮件用到的协议:POP3。
7 其余补充
(这里基本都是我的个人理解,我不能保证理解的质量,和IP数据报一样,需要上层纠错和校验.....)
-
在教材的绪论部分的一张图片中,分组交换的速度是大于报文交换的速度,但是区别好像只是分组的对报文进行了切片,这是为什么?
- 我认为这里可以类比于指令的流水线。在报文交换中,需要把整个报文全部传输完毕,才能在下一个节点进行传输。但是如果对报文进行切片,在数据的传输过程中,原先的数据其中一部分在一个节点传输完毕后,不用再等待其他数据的传输,直接到达下一个节点。这就会比报文交换更节省时间。假设对数据进行极为细小的切片,数据报退化比特流,那么每个比特在节点中传输的时间基本可以忽略不计,此时的传输过程更加接近电路交换。
-
对于几个网络通信场景的个人理解,假设路由器链接不同网络,同一个网络中的设备只有网桥(这个理解极有可能是错误的)
- 在局域网内两台主机通信:在局域网中,一台主机A要和另一台主机B通信,首先A先把要通信的数据封封装成IP数据报,然后再封装成mac帧。这里因为A和B同在一个局域网上,所以A知道B的mac地址。mac帧上的目的mac地址就是B的mac地址。这个mac帧被发出后,因为有网桥的转发,所以这个局域网上只有部分主机感受到了这个mac帧。如果没有网桥,所有的主机都会感受到这个mac帧。(注意经过网桥后,mac帧的源地址仍是A的mac地址,因为mac帧经过网桥时不会改变mac帧的首部,只有路由器才改变。)虽然感受到这个mac帧的主机有很多,但是只有主机B的mac地址与这个mac帧的目的地址相同,别的主机发现mac帧的目的地址不同后直接丢弃这个mac帧。此时,B收到mac帧,解封装后得到IP数据报。A与B的通信完成。(不过再局域网中每一个主机都知道另一个主机的mac地址,所以我认为在局域网主机可以直接通过mac就可以找到另一台主机,不涉及到IP协议。)最后,假设这个局域网中还有一个路由器与其他网络相连,这个路由器也会收到这个mac帧,路由器也会检查mac帧的首部,发现mac地址与自己不同后丢弃。
- 在不同的网络中的两台主机间的通信:在不同的两个网络中,一台主机A与另一台主机B通信,首先A要知道B的IP地址,但是A并不知到B的mac地址(应该说知道了也用不上)。A把要通信的数据封装成IP数据报,此时IP数据报的目的地址时B的IP地址。之后被封装成mac帧,而A通过查询发现局域网中没有主机的IP地址和目的IP地址相同(这个过程是我猜的),所以主机A推测出IP地址不属于这个网络,需要路由器的转发,所以A把mac帧的目的地址写为路由器的mac地址,并且发出该mac帧。这时路由器收到了这个mac帧,发现mac帧的目的地址与自己相同,开始解封装。路由器在提取出IP数据报中的目的IP地址后,重新封装成mac帧,再通过路由算法转发这个mac帧。此时mac帧的源地址变成了路由器的地址,mac帧的目的地址可能是下一个路由器的mac地址,或者是目的主机B的mac地址。总之,可能会经过多次转发,但是最后mac帧的目的地址一定是主机B的mac地址,它的源地址是最后一个转发它的路由器的mac地址,其实也是主机B所在网络的路由器的mac地址。为什么主机B的mac地址最后又知道了呢?因为这个mac帧是主机B所在网络的路由器最后转发的。路由器是一台特殊的计算机,里面同样会存储所在局域网中的所有主机的mac地址,不然就没法再封装mac帧了。最后B收到这个mac帧,通信完成。
为什么码分复用把发送速率提高到了mb bit/s呀?难道是原先只需要发送1,现在码片序列表示1发出去,这样就算提高了发送速率吗?
这里我也不太清楚,王道考研辅导上没有涉及这里,不过我感觉按照教材上的描述好像就是这个意思......
码分复用是介质访问控制的方法,是为了保证广播信道内用户的信息不会发送冲突.并不是为了提高发送速率丫
明白,多谢大佬提醒(๑•̀ㅂ•́)و✧
大一的小伙伴?
我是即将大四毕业的社会闲散人员........
啊这,我以为是期末考完试的大一小同学来预习下学期的计网
我是准备二战(>﹏<)
加油加油!!!
谢谢大佬o(*≧▽≦)ツ
里面可能有错的( ´•︵•` )......