前言:最近在学计算机网络,所以学习过程中根据课程内容大概整理了一些笔记,可能有些内容理解还不是特别深刻
网络基础
一些基本概念
计算机网络由若干结点和连接这些结点的链路组成。
网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。与网络相连的计算机常称为主机。(如下图所示)
通信方式
网络边缘:连接在互联网上的所有主机,又称为端系统。 主机与主机之间的通信称为“计算机之间通信”。
模式:
-
客户-服务器方式
- 客户为服务请求方,服务器为服务提供方
- 这种模式下,客户主动向服务器发起通信,服务器被动接收请求
- 但这种模式存在一定缺点:
- 缺乏有效安全性:当在客户端存取一些敏感数据时,由于用户能够直接访问中心数据库,可能造成敏感数据的修改或丢失。
- 服务器端工作效率低:每个客户端都要直接连接到服务器以访问资源,建立访问连接会消耗服务器资源。
- 容易造成网络堵塞:当请求服务的客户端数量过多时,网络流量剧增。易造成网络堵塞。
-
对等连接方式(P2P)
- 本质上看仍是客户-服务器模式,但对等连接中每一台主机既是客户又是服务器。
网络核心
电路交换
这是一种面向连接的通信方式(类似于打电话)
大致流程:
-
建立连接-互相传送数据-结束通信,释放资源
-
注意:在这个过程中,通信的两个用户始终占用端到端的通信资源,会造成通信线路利用率低。
分组交换
采用存储转发技术(类似于寄信)
-
将要发送的整个报文划分成若干个更小的等长数据段,每一段数据前面加上包含必要控制信息(如目的地址、源地址等)的首部
-
这种方式中,不会在通信过程中占用整条链路的资源,如在寄信过程中,信件是通过一个一个站点后到达目的地,在这个过程中,信件只会占用它正在传输的那一段链路的资源,有效提高资源利用率。
-
分组交换存在一定代价:
- 当到达速率>链路传输速率时,分组会排队,等待传输
- 如果路由器缓存用完,分组会被抛弃
网络分层
综合OSI的七层协议和TCP/IP的四层协议的五层协议体系结构
- 应用层
- 运输层
- 网络层
- 数据链路层
- 物理层
数据传输一般是从源主机自顶向下传送后通过路由器再自底向上传送到目标主机,这是一个复杂的过程,但这些复杂的过程对用户来说被屏蔽掉了,如同数据只是在两个同样的层次之间传送(如图所示)
网络协议
运输层主要使用两种协议:
-
传输控制协议TCP
- 提供可靠的,面向连接的数据传输服务
-
用户数据报协议UDP
- 提供无连接的、尽最大努力的数据传输服务
注意:虽然TCP提供可靠的数据传输服务,但这也需要付出一定的代价,消耗时间一定程度上也会增加
网络安全
三要素:机密性、完整性、身份验证
加密:对称加密和非对称加密
身份验证方式不恰当会存在套娃:
例子:两军作战问题
占据东、西两个山顶的蓝军1和蓝军2与驻扎在山谷的白军作战。其力量对比是:单独的蓝军1或蓝军2打不过白军,但蓝军1和蓝军2协同作战则可战胜白军。现蓝军1拟于次日正午向白军发起攻击。于是用计算机发送电文给蓝军2,但通信线路很不好,电文出错或丢失的可能性较大(没有电话可使用)。因此要求收到电文的友军必须送回一个确认电文。但此确认电文也可能出错或丢失。试问能否设计出一种协议使得蓝军1和蓝军2能够实现协同作战因而一定(即100%而不是99999.%)取得胜利?
答:蓝军1先发送:“拟于明日正午向白军发起攻击。请协同作战和确认。”
假定蓝军2收到电文后发回了确认。
然而现在蓝军1和蓝军2都不敢下决心进攻。因为,蓝军2不知道此确认电文对方是否正确地收到了。如未正确收到,则蓝军1必定不敢贸然进攻。在此情况下,自己单方面发起进攻就肯定要失败。因此,必须等待蓝军1发送“对确认的确认”
假定蓝军2收到了蓝军1发来的确认。但蓝军1同样关心自己发出的确认是否已被对方正确地收到。因此还要等待蓝军2的“对确认的确认的确认”。
这样无限循环下去,蓝军1和蓝军2都始终无法确定自己最后发出的电文对方是否已经收到。
(具体网络安全部分还没有系统学习,等后面学了再做补充)
参考资料:
《计算机网络(第七版)》
掘金《计算机网络概论》课程