目录
- 计算机网络系统的主要功能
- TCP/IP模型与OSI模型的层次结构及各层功能。(掌握)
- TCP/IP参考模型各层次所对应的主要设备
- 局域网的体系结构与IEEE.802标准
- 数据链路层的编址方式和主要设备原理
- 数据链路层CSMA/CD的技术原理
- 交换机VLAN原理与划分方法
- 数据链路层数据检错与纠错方法
- 检错法
- 纠错法
- 交换机和路由器的一些常用配置命令 (略)
- 网络拓扑连接线的选择方式
- IP数据包的主要字段含义与应用(掌握)
- IP数据包分段与重组(掌握)
- IP分片
- 网络层目前使用的主要协议
- IP地址、网关地址、子网掩码的概念
- IP地址
- 网关地址
- 子网掩码
- IP地址分类(A/B/C、私有)与子网划分技术(掌握)
- 子网划分
- 最短路径Dijsktra算法原理(掌握)
- 传输层的两种主要协议(TCP/UDP)
- 传输层的端到端通信编址方式
- Windows常用的一些网络命令(略)
- 各种常用网络协议所处的层次结构
- TCP建立连接与释放连接的三次握手过程
- 三次握手
- 四次挥手
- 小结
计算机网络系统2021复习提纲
计算机网络系统的主要功能
计算机网络系统指的是把不同地理位置的拥有独立工作能力的计算机通过通信线路连接起来,并配置网络软件,以实现计算机资源共享的系统。
主要功能如下:
-
数据通信:例如电子邮件,发布新闻等等
-
资源共享:硬件资源共享:例如网络打印机等
软件资源共享:例如FTP,网上影院等 -
负载均衡:例如Client/Server模式,协同式计算等
-
提高可靠性:资料备份,分布式存储等
-
分布式处理:大型问题协作求解等
TCP/IP模型与OSI模型的层次结构及各层功能。(掌握)
对于OSI七层模型:
-
物理层:比特流方式传输,定义了接口的机械、电气特性
-
数据链路层:传输数据帧,实现点对点连接
-
网络层:传输数据包;负责寻址,将IP地址转换成MAC地址;协调发送、传输、接收设备能力
-
传输层:传输数据报文;保证不同子网的设备间数据包的可靠、顺序、无错传输;实现端到端的连接
将受到的乱序数据包重新排序,并验证所有的分组是否都已经收到
-
会话层:对上层提供会话服务;对会话进行管理,保证会话数据可靠传输;在两结点间建立、维护、释放面向用户的连接
-
表示层:定义数据格式、是否加密或压缩。
-
应用层:提供各种网络服务
对于TCP/IP四层模型:
- 网络接口层:TCP/IP模型的最底层,负责接收从网络层交来的IP数据报并将IP数据报通过底层物理网络发送出去,或者从底层物理网络上接收物理帧,抽出IP数据报,交给网络层
- 网络层:网络层负责独立地将分组从源主机送往目的主机,涉及到为分组提供最佳路径地选择和交换功能,并使这一过程与它们所经过地路径和网络无关。
- 传输层:在源结点和目的结点的两个对等实体间提供可靠的端到端的数据通信。为保证数据传输的可靠性,传输层协议提供了确认、差错控制和流量控制等机制。传输层从应用层接收数据,并且在必要的时候把它分成较小的单元,传递给网络层,并确保到达对方的各段信息正确无误。
TCP/IP参考模型各层次所对应的主要设备
- 计算机工作在应用层、传输层和网络层
- 计算机网卡工作在数据链路层和物理层
- 集线器工作在物理层
- 路由器接口工作在物理层和数据链路层,路由器根据IP首部转发数据包,所以路由器工作在网络层
- 交换机根据MAC地址转发帧,MAC地址属于数据链路层地址,所以交换机工作在数据链路层。交换机接口也有物理层功能。
局域网的体系结构与IEEE.802标准
局域网LAN是将小区域内的各种通信设备互连在一起的通信网络。
按照 IEEE802 标准,局域网体系结构分为三层,即物理层,媒体链路控制层(MAC),逻辑链路控制层(LLC)
主要功能如下:
- 物理层(PHY):处理物理链路上传输的比特流;建立、维护、撤销物理连接,处理机械、电气特性
- 媒体访问控制(MAC): 负责控制对传输介质的访问,帧的寻址,识别等
- 逻辑链路控制层(LLC):负责数据帧的封装和拆除。提供面向连接和非连接的服务
局域网IEEE802标准
- IEEE802.3:以太网技术(CSMA/CD)
- IEEE802.4:令牌环(Token-Ring)
- IEEE802.5:令牌总线(Token-Bus)
数据链路层的编址方式和主要设备原理
计算机通信表现为数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在节点间的移动是由**地址解析协议(ARP)**负责将IP地址映射到MAC地址上来完成的。
- MAC地址,也叫硬件地址,长48bit(6byte),通常表示为12个16进制数
- 网卡的MAC地址由网卡生产厂家烧入网卡的EPROM
从已知IP地址找到对应MAC地址的映射叫做正向地址解析,协议为ARP
从已知MAC地址找到对应IP地址的映射叫做反向地址解析,协议为RARP
交换机原理
工作原理
当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC地址与该交换机各端口的对应信息。某一数据帧需要转发时,交换机根据该数据帧的目的MAC地址来查找MAC地址表,从而得到该地址对应的端口,即知道具有该MAC地址的设备是连接在交换机的哪个端口上,然后交换机把数据帧从该端口转发出去。
算法:
1、如果数据帧的目的MAC地址是广播地址或者组播地址,则向交换机所有端口转发2、如果数据帧的目的MAC地址是单播地址,且这个地址不在交换机的MAC地址表中,也会向所有端口转发3、如果数据帧的目的地址在交换机的MAC地址表中,那么就根据地址表转发到相应的端口4、如果数据帧目的地址和源地址在同一个网段丢弃该数据帧
数据链路层CSMA/CD的技术原理
载波侦听多路访问/冲突检测 是一种局域网技术。
工作原理:先听后发,边听边发,冲突停止随机延时后重发。竞争机制,较轻负荷下效率高,不适用实时传输。
交换机VLAN原理与划分方法
VLAN的工作原理:在网络中应用VLAN技术的主要目的是:把一个大的广播域分成多个小的广播域,使其互不影响,互不冲突。VLAN之间如果不使用路由器或三层交换机是不能通信的。这样就解决了交换网络中因为某一个小故障产生的广播风暴而使整个网络瘫痪的问题。当一个VLAN里面出现广播风暴时,受影响的只是这个VLAN本身。而整个网由于被分成了多个VLAN(也就是多个广播域),所以网络的其它部分不会受到广播风暴的影响,从而最大程度地为提高网络的安全性能提供了可靠保障。
VLAN划分方法:1)基于端口;2)基于MAC地址;3)基于协议;4)基于子网;5)基于组播;6)基于策略。
数据链路层数据检错与纠错方法
检错法
- 奇偶校验码:包括冗余位在内的数据码元中1的个数保持为奇数(奇校验)或偶数(偶校验),可以用来检测单个错误。
- 循环冗余校验码CRC:一种多项式的编码方式。将位串看成是系数为0或1的多项式,K位的帧看作是一个K-1阶次多项式的系数列表。如110001可以看作是X5+X4+1。
纠错法
- 纠错码 检验传输过程中是否出错并纠正错误
–码字:n=m(数据位)+ r(冗余位)
–海明距离:两个码字不相同的位的个数
检测d比特错误需要距离为d+1比特的编码
纠正d比特错误需要距离为2d+1比特的编码
交换机和路由器的一些常用配置命令 (略)
网络拓扑连接线的选择方式
拓扑的选择需要考虑到:经济性,灵活性,可靠性
IP数据包的主要字段含义与应用(掌握)
IP数据包首部格式能够说明ip协议都具有什么功能。
IP数据包由首部和数据两部分组成。首部前一部分是固定长度,共20个字节,是所有IP数据包必须有的。在首部固定部分的后面是一些可选字段,其长度是可变的。
-
版本:占4位,指的是IP协议的版本,目前有两个版本IPv4、IPv6
-
首部长度:占4位,表示首部长度有多少个字节,如果为1111(十进制15),说明首部长度为60byte
-
区分服务:占8位,配置计算机给特定应用程序的数据博爱添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障。区分服务,就是为服务确保服务质量
-
总长度:占16位,指IP首部和数据之和的长度,也就是数据包的长度,单位为byte。16位,所以数据包的最长长度位2^16-1 = 65535byte。
-
标识:占16位,IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段。但这个标识并不是序号,因为IP是无连接服务,数据包不存在按序接受的问题。当数据包由于长度超过网络的MTU( 最大传输单元 )时,需要分片。同一个数据包被分成多个片,这些片的标识都一样,也就是数据包这个标识字段的值就被复制到所有的数据包分片的标识字段中。相同的标识字段的值使得分片后的各个数据包片最后能正确地重装成为原来地数据包。
Tips:IP层下面的每一种数据链路层都有其特有的帧格式,帧格式也定义了 帧中数据字段的最大长度,数据字段最大长度称为MTU。如果所传送的数据包长度超过数据链路层的MTU值,就必须把过长的数据包进行分片处理。 -
标志:占3位,目前只有两位有意义。标志字段中的最低为记为MF。MF=1即表示后面还有分片的数据包。MF=0表示自己是若干数据包片中的最后一个。标志字段中间的一位记为DF,意思是不能分片。只有当DF=0是才允许分片。
-
片偏移:占13位,意思是:较长的分组在分片后,某片在原分组中的相对位置。也就是说相对于用户数据字段的起点,该片从何处开始。偏移以8个字节为偏移单位。也就是说每个分片的长度一定是8字节的整数倍。
-
生存时间:占8位,TTL,表示数据包在网络中的寿命,现在指的是跳数限制,例如在无向图中有跳数限制的求最短路径
-
协议:占8位,协议字段指出此数据包携带的数据是使用何种协议,以便使目的主机的网络层知道应该奖数据部分上交给哪个处理。
-
首部校验和:占16位,只检验数据包的首部,不包括数据部分。因为数据包每经过一个路由器,路由器都要重新计算一下首部检验和,不检验数据部分可以减少计算量
IP数据包分段与重组(掌握)
IP分片
网络链路存在MTU(最大传输单元)——链路层数据帧可封装数据的上限,并且不同链路的MTU也不同。当大IP分组向较小MTU链路转发时,需要将IP数据报分片,所有IP分片到达目的主机后再进行重组。
分片发送与重组由源主机与目的主机进行,路由器只做分片不做重组 :
网络层目前使用的主要协议
IPv4 OR IPv6
ICMP协议
ICMP协议是TCP/IP协议栈中的网络层的一个协议,ICMP是Internet控制报文协议用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
ICMP报文是在IP数据报内部被传输的,它封装在IP数据报内。ICMP报文通常被IP层或者传输层TCP或UDP使用。一些ICMP报文把差错报文返回给用户进程。
ICMP报文分为:请求报文、响应报文、差错报告报文。
ARP协议
ARP协议的作用,将以太网中的计算机的IP地址解析成MAC地址。
ARP协议是建立在网络中各个主机互相信任的基础上的,计算机A发送ARP广播帧解析计算机C的MAC地址,同一个网段中的计算机都能收到这个APR请求消息,任何一个主机都可以给计算机A发送APR应答消息,可以告诉计算机A一个错误的MAC地址,计算机A收到APR应答报文时不会检测该报文的真实性,就会将其辑如本机APR缓存,这就存在一个安全隐患。
IGMP协议
internet组管理协议称为IGMP协议,是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间,IGMP协议是网络层协议,首先要清除什么是组播通信,组播也称为多播。
流媒体服务器就像是电视台,多播地址相当于不同的频道。可以使用两个组播地址向网络中发送两个课程的视频。网络中的计算机绑定到哪个多播地址就能够收到哪个视频课程。
IP地址、网关地址、子网掩码的概念
IP地址
IP地址由网络号和主机号两部分构成,具有相同网络号的设备接口处于同一个IP子网内,在同一个IP子网内的设备可以不跨越路由器就可以彼此通信,而处于不同子网的设备通信必须经过路由器转发。
IP地址长度为二进制32位,每8位为一组,共4组
网关地址
网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)与主机的IP 地址作 “与” 运算的结果不同判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络A向网络B转发数据包的过程。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
子网掩码
子网掩码(subnetmask)通常与IP地址配对出现,其功能是告知主机或路由设备,IP地址的哪一部分代表网络号部分,哪一部分代表主机号部分。在子网掩码中,与IP地址中的网络位部分对应的位取值为“1”,而与IP地址主机部分对应的位取值为“0”。这样通过将子网掩码与相应的IP地址进行求“与”操作,就可决定给定的IP地址所属的网络号(包括子网络信息)
IP地址分类(A/B/C、私有)与子网划分技术(掌握)
ABC类IP地址判断
A类,net-id = 8,开头0,1.0.0.1 ~ 126.255.255.254 最大网络数:126 = 2^7-2 最大主机数:16777214 = 2^24-2
B类,net-id = 16,开头10 2^14-2 2^16-2
C类,net-id = 24,开头110 2^21-2 2^8-2
对于A/B/C类地址的前8位范围:
A:1-126
B:128-191
C:192-223
子网掩码对应:
255.0.0.0
255.255.0.0
255.255.255.0
主机部分
全0,网络地址
全1,广播地址,某一个网段的所有结点
网络部分127
如127.0.01,主机部分任意 回环地址,发出的数据又回到本机
私有地址;
私有地址——只用于内部网络,在公共互联网上这些地址是无效的。私有地址是非常有意义的,可以在所有的内部网络中使用,是可重用的;也正是有了这部分地址,借助NAT技术,使得当前的IPv4网络即便地址空间已经被分配殆尽,整个网络仍能够正常运行。
子网划分
子网划分是在已有的ABC类IP子网的基础上区分出范围更小的子网。为了划分,将主机号的高位单独拿出来作为子网号,于是IP地址由网络号、子网号和主机号构成。例如,在公司中,可能使用某个固定NetID的子网作为公司内部网络,公司为了区分不同的部门,为每个部门分配一个SubID,这样每个部门就是一个单独子网。
为了确定一个IP地址是否被划分了子网,以及用多少位来划分子网,引入了子网掩码。子网掩码的取值就是NetID和SubID位都取1,HostID位全取0。例如:
- A网的默认子网掩码为:255.0.0.0
- B网的默认子网掩码为:255.255.0.0
- C网的默认子网掩码为:255.255.255.0
借用HostID高位部分的3比特来划分子网的C网的子网掩码为:255.255.225.224;一共可以划分出8个子网,每个子网的地址数有32个,如192.168.0.32~192.168.0.63就表示SubID=1的子网地址范围,而192.168.0.32代表子网本身,192.168.0.63是该子网广播地址,所以有效可分配主机地址数只有30个。因此,经过子网划分后,可分配的地址数会减少。
经过子网划分以后,路由器通过将IP分组的目的IP地址和子网掩码按位与运算,就可以提取出子网地址,从而确定应该将IP分组转发到哪个子网中去。例如,目的IP地址为172.32.1.112,子网掩码为255.255.254.0,那么子网地址应该为172.32.0.0。
最短路径Dijsktra算法原理(掌握)
- N’:代表闭集合,集合中的节点都已找到最短路径;
- D(?):节点?到u的代价;
- p(?):当前下路径节点?的前序节点;
- 自由节点:不处于闭集合中的节点。
算法过程如下:
- 在算法一开始,初始化节点u的代价为0,其他节点的代价为∞\infin∞,闭集合为空。
- 选择代价最小的自由节点(step=0时就是节点u),记作A,将其加入闭集合,并遍历与其相邻的自由节点,记作B,更新它们的代价为D(B)=min{D(B),D(A)+D(A,B)}D(B)=min\{D(B),D(A)+D(A,B)\}D(B)=min{D(B),D(A)+D(A,B)},其中D(A,B)D(A,B)D(A,B)表示节点A和B之间链路的代价。如果更新后代价变小了,则设置节点B的前序节点为A。
- 不断循环执行第2步,直到该网络中不存在自由节点。
void Graph::dijkstra(Vertex s)
{//初始化顶点信息for each Vertex v {v.known = false;v.dist = INFINITY;v.path = 0;}//起点s的dist设为0s.dist = 0;//循环执行第3步for(; ;){//从所有顶点中找到dist最小的并且known为false的顶点vVertex v = unknown smallest distance vertex;//如果没有找到满足条件的v,则退出算法(此时所有顶点已经全部确定了)if(v == NOT_A_VERTEX)break;//将该顶点v的known置为truev.known = true;//更新与顶点v相邻的所有其它known为false的顶点w的dist和path的值for each Vertex w adjacent to v {if(!w.known) {//更新w.distif(v.dist+distance(v,w) < w.dist) {w.dist = v.dist + distance(v,w);w.path = v;} } } }
}
传输层的两种主要协议(TCP/UDP)
两者区别:
连接
- TCP是面向连接的传输层协议,传输数据之前必须先建立连接
- UDP无连接
服务对象
- TCP是点对点的两点间服务,一条TCP连接只能有两个端点
- UDP支持一对多,多对多,一对多,多对一的交互通信
可靠性
- TCP是可靠交付:无差错,不丢失,不重复,按序到达
- UDP是尽最大努力交付,不保证可靠交付
拥塞控制,流量控制
- TCP有拥塞控制和流量控制保证数据传输的安全性
- UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率
报文长度
- TCP是动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前的网络拥塞情况决定的
- UDP面向报文,不合并,不拆分,保留上面传下来的报文边界
首部开销
- TCP首部开销大,20个字节
- UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)
适用场景
- TCP是可靠的,但是传输速度慢。数据完整性比通信实时性重要则使用TCP(如文件传输,重要状态更新)
- UDP不可靠,传输速度快。通信实时性比数据完整性重要则使用UDP(如s视频传输,实时通信)
传输层的端到端通信编址方式
每种应用层协议或应用程序都具有与传输层唯一连接的端口,并且使用唯一的端口号将这些端口区分开来。
端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
Windows常用的一些网络命令(略)
各种常用网络协议所处的层次结构
TCP建立连接与释放连接的三次握手过程
三次握手
- 客户端发送SYN段,段中标志位SYN置1,并携带客户机随机选择的一个初始序列号seq=J,SYN段不包含数据内容。
- 服务器收到SYN段,回应SYNACK报文段,段中标志位SYN和ACK都置1,ack=J+1,随机产生序列号seq=K。同时,服务器为该连接分配资源(缓存)。
- 客户端收到SYNACK后,回应ACK报文段,段中标志位ACK置1,ack=K+1。当服务器收到该ACK报文段时,连接便建立成功。
之所以采用三次握手,而不是二次握手是有原因的:
- 在第二次握手时,服务器携带的序列号需要被客户机正确接收,因此客户端有必要回应通知服务器结果;
- 假设当客户机发送了SYN段后,该段由于网络拥塞在某个节点长期滞留,然后客户端重传SYN段并最终和服务端建立了连接,在该连接关闭之后,最初的SYN段才到达,在二次握手机制下,服务器会认为这是新的一次连接请求,于是回应ACK,并一直等待客户机发送数据从而造成资源浪费。
此外,服务器在第二次握手期间就为连接分配了资源,当达到超时时间还未进行第三次握手,服务器就会释放资源。在这个过程中,存在安全隐患——攻击者可以利用上万台客户机同时向服务器发送TCP请求连接但是都不进行第三次握手,就会导致服务器资源的大量浪费(这是一种著名的网络攻击手段)。
四次挥手
- 客户端向服务器发送FIN段;
- 服务器收到FIN段,回应ACK,并发送FIN段;
- 客户端收到FIN,回复ACK,并进入固定时间的等待,如果再次收到FIN,则重新发送ACK;
- 服务器收到ACK,服务器方的连接关闭;等到客户端等待时间过完,客户端方的连接也关闭;
小结
客户端和服务端连接建立和关闭过程的状态转换如下图所示。