0 学时安排及讨论题目
0.1讨论题目:
- CSMA/CD协议
- 交换机基本原理
- ARP协议及其安全
- 子网划分
- IP分片
- 路由选择算法
- 网络地址转换NAT
- TCP连接建立和释放
- 再论网络体系结构
0.2 本节主要内容
问题描述
解决思路
评价指标
1.1 数据层面
从数据流动的层面去思考计算机网络:
- 计算机、手机、摄像头等设备产生数据,这些数据如何准确无误地送到目的地?
- 在把数据运输到目的地需要添加什么数据,比如源地址、目的地址,然而通信不仅仅在两个计算机之间,实际是计算机上的两个进程在通信,所以还需要表示进程的源端口、目的端口;
- 在通信过程中,还需要给出合适的指令才能保证通信有效,这些指令也可以算做通信数据的一部分,比如给出指令表示建立连接、释放连接、增加窗口的大小以传输更多的数据等。
综上所述,计算机网络涉及到的数据大概包括三个部分:应用进程产生的数据、用于运输的数据、保证正常通信的指令。
1.2 设备层面
我们以两个计算机A和B通信为例子来说明。
计算机A的处理步骤大致如下:
- 某应用进程产生数据,该数据临时保存在内存中,现在要通过网络发送到计算机B;
- 计算机A的应用进程获取到目的计算机B的地址,CPU发出指令对应用数据进行封装,主要是填充上面提到的运输数据和指令数据,运输数据中要填上计算机A、B的地址和表示通信进程的端口号(四元组:源地址、目的地址、源端口、目的端口);
- CPU发出指令,将封装好的数据发送到网卡,那么网卡发送的数据下一站应该是哪里呢?
- 大家想一想,我们配置计算机A的IP地址的时候,是不是还配置了一个默认网关,计算机A的网卡就是把数据发送到默认网关。
默认网关收到计算机A发来的数据后,处理步骤大致如下:
- 先存储起来;
- 检查其中的运输数据,找到目的地址,确定从默认网关的哪一个端口发出去?怎么确定呢?有一个表格可以查询就好了,如果以主机为单位建立表格,是不是这个表格也太大了,怎么才能减小表格的大小呢?
- 从表格中找到对应的条目后,根据表格条目的指示,把数据从对应端口发出去,作为一个中转站,发出去的数据我就不负责了哦。
- 是不是有可能传输的过程中会涉及到多个这样的中转站,它们处理方式基本类似于默认网关。
最后一个中转站将数据交给计算机B,计算机B的处理步骤大致如下:
- 网卡收到计算机A发来的数据;
- CPU将数据暂存在内存中;
- 去掉运输数据和指令数据,发送给对应的应用进程进行处理。
上面的过程感觉很完美了,是这样吗?还远远不够,还有一些问题没有解决:
- 计算机A如何把数据送到中转站,中转站又如何把数据送到计算机B?(快递员)
- 数据在传输过程中迷路了怎么办?
- 数据在传输过程中出现错误了怎么办?
- 数据在传输过程中由于运输能力的限制,需要分片怎么办?
- 数据在传输过程中出现了拥塞,怎么办?
2 解决思路
这些问题是不是想起来特别头大,面对复杂问题,我们是不是可以采用分而治之的方法来解决它呢?
2.1 第一种思路:OSI七层模型
2.2 第二种思路:TCP/IP四层模型
2.3 第三种思路:前面两种思路进行结合,五层模型
应用层:
- 任务:通过应用进程间的交互来完成特定网络应用。
- 协议:定义的是应用进程间通信和交互的规则。
- 把应用层交互的数据单元称为报文(message)。
- 例如:DNS,HTTP,SMTP
运输层:
- 任务:负责向两台主机中进程之间的通信提供通用的数据传输服务。
- 具有复用和分用的功能。
- 主要使用两种协议: 传输控制协议 TCP、用户数据报协议 UDP 。
网络层:
- 为分组交换网上的不同主机提供通信服务。
- 路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表。
- 转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器。
数据链路层:
- 任务:实现两个相邻节点之间的可靠通信。
- 在两个相邻节点间的链路上传送帧(frame)。
- 如发现有差错,就简单地丢弃出错帧。
- 如果需要改正出现的差错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂。
物理层:
- 任务:实现比特(0 或 1)的传输。
- 确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接。
- 注意:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。
3 网络评价指标
如何评价一个网络的好坏?
性能指标:
非性能指标: