计算机网络的整体学习认知
一.计算机网络的概述
1.网络发展
- 计算机之间
相互独立
:每个计算机之间相互独立独立,每个中断都拥有独立的客户数据 - 多台计算机连在一起,完成
数据共享
:每个人拥有自己独立的主机,将共享的数据发送到集中服务器实现数据共享 - 局域网
(LAN)
:计算机数量的增加,通过交换机和路由器
将所有的计算机连在一起,形成局域网。(交换机
工作在链路层
,它不会跨网络传输,而是用来传输本网络上的数据帧,路由器
工作在网络层
,它是为了将不同的网络连接起来) - 广域网
(WAN)
:广域网可以想象为将很多的局域网连起来,它的范围比局域网要大
。
注:广域网
和局域网
只是一个相对的概念,甚至可以将一个广域网
看做成一个大的局域网
。
2.网络的功能
计算机网络向用户提供的两个最重要的功能:
- 连通性
- 共享
3.认识协议
3.1 什么是网络协议
协议是一种约定,是通信双方
共同指定的一个标准约定
。举一个简单的例子:假设现在是战争时期,一个城中的内应和首领一起约定好,当晚上城楼布防少时,内应就举起三根火把,然后首领看到三根火把后率领将士们进攻城楼。我们可以把内应和首领的约定
看做是一种协议
。
但是在计算机领域的两台主机的通信中,并不是只要通信双方指定好通信协议就可以直接通信了:
- 计算机生产
厂商
有很多。计算机操作系统
也有很多。计算机网络硬件设备
还是有很多。 - 要使得
不同厂商
之间或者不同操作系统
之间可以之间通信,就需要有人站出来, 约定一个共同的标准
, 大家都来遵守这就是网络协议
。
3.2 网络协议的三要素
语法:数据与控制信息的结构或格式
语义:需要发出何种控制信息
,完成何种动作以及做出何种响应
同步:事件实现顺序
详细说明
3.3 协议分层
在上边的打电话例子中,我们可以看出分层的好处在于封装
。我们可以将相似的功能封装为一层,这样就便于实现和管理。对于网络的实现,也是采用分层思想实现的,这样可以最大程度的将一个复杂的系统简化为各个分层。
二.OSI七层&TCP/IP四层参考模型
1.OSI七层参考模型
OSI
(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型
, 是一个逻辑上的定义和规范。它把网络从逻辑上分为了7层
,每一层都有相关、相对应的物理设备,比如路由器,交换机
。OSI 七层模型是一种框架性
的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
。它的最大优点是将服务、接口和协议
这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型
使不同的系统不同的网络之间实现可靠的通讯
。但是它既复杂又不实用
,所以现实中是按照TCP/IP
四层或者五层模型来学习。
注:图片来自《图解TCP/IP》一书
2.TCP/IP四层或五层参考模型
五层参考模型将OSI七层参考模型的应用层、表示层、会话层
合并到一起。而TCP/IP四层参考模型又将数据链路层、物理层
合并在一起。
对于五层参考模型,各层主要的功能是:
- 物理层:负责
光/电信号
的传递方式。 比如现在以太网通用的网线(双绞线)
、早期以太网采用的的同轴电缆 (现在主要用于有线电视)
、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层,集线器的主要作用是放大信号。 - 数据链路层:负责
设备之间
的数据帧
的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网、 无线LAN等标准。交换机(Switch)
工作在数据链路层。 - 网络层:负责
地址管理
和路由选择
。例如在IP协议中,通过IP地址
来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)
。路由器
(Router)工作在网路层。 - 应用层: 负责应用
程序间沟通
。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等。 网络编程主要就是针对应用层
。
各层分别存在哪些工作设备:
- 对于一台
计算机
,它的操作系统实现了从传输层到物理层
- 对于一个
路由器
,实现了从网络层到物理层
- 对于
交换机
,实现了从数据链路层到物理层
- 对于
集线器
,只实现了物理层
注意:上述内容并不绝对。很多交换机也实现了网络层的转发。很多路由器也实现了部分传输层的内容(比如端口转发)
三.网络数据传输基本流程
1.网络传输流程图
- 同一个
网段内
的两台主机进行数据传输
在同一个网段下,两台主机要进行通信,可直接交付。只要根据ARP(地址解析协议)
找到主机IP和MAC地址的映射
,即可直接交付。
同一个网段下两台主机的TCP/IP通信:
- 跨网段的主机的文件传输
跨网段
的主机通信,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
,经过路由器的存储转发
,才可以到另一个网段下的主机
。
2.数据的封装和分用
不同的协议层对数据包有不同的称谓:
- 传输层叫
数据段
- 网络层叫
数据报
- 数据链路层叫做
数据帧
应用层的数据通过协议栈
从上到下传输到网络上
时,每一层都要加上一个数据首部
,这就是数据封装
。首部信息中包含了一些类似于首部有多长
,有效载荷(有效载荷带边上次交付下来的数据)
有多长,上层协议
是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部
,根据首部中的 "上层协议字段"
将数据交给对应的上层协议
处理。
数据封装过程图:
数据分用:下一层向上一层交付数据,以太网驱动程序根据MAC协议将报头和有效载荷分离
,根据首部
中所包含上一层的协议决定交付给上一层谁,其他层也是一样的。
3.初识IP地址和MAC地址
3.1 IP地址
IP地址
有两个版本,IPv4和IPv6
。IPv6
现在并没有普及使用,所以现在使用的地址大部分依然是IPv4
。
IP地址
是在IP协议
中,用来标识网络中不同主机
的地址- 对于
IPv4
来说,IP地址是一个4字节
,32位
的整数 - 通常使用
"点分十进制"
的字符串表示IP地址
。 例如192.168.0.1
, 用点分割的每一个数字表示一个字节,范围是0 - 255
3.2 MAC地址
- MAC地址用来识别
数据链路层中相相邻的节点
- 长度为
48位
,6个字节
。 一般用16进制
数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就
确定
了,不能修改。MAC地址
通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址
,可能会冲突。也有些网卡支持用户配置MAC地址
)
3.3 数据传输过程IP地址和MAC地址的变化
源IP地址
和目的IP地址
是在IP层
封装到IP数据报
中,而MAC地址
是在链路层
封装到数据帧
中。- 在数据传输过程中,
IP地址和MAC地址的变化
相当于唐三藏取经
的过程。 源IP
相当于东土大唐,而目的IP
相当于西天
,在整个过程中是不变化
的源MAC地址
相当于车迟国
,而目的MAC地址
相当于女儿国
,在这个过程中是要一直改变
的,是上一站到下一站的地址变化
。