目录
一、前言
1.计算机网络背景
2.认识协议
二、网络协议初识
1.OSI七层模型
2.TCP/IP五层(或四层)模型
3.网络传输基本流程
4.数据包封装和分用
5.网络中的地址管理
1.IP地址
2.MAC地址
一、前言
1.计算机网络背景
网络之前,我们所有在电脑上的操作都是单机的。
计算机最初被发明出来是干什么的呢?最初计算机被发明是用来计算导弹轨迹的,而这项任务通常是由一个实验室来完成,一定会有多个人,可能会有多台电脑,每台电脑最初都是独立的,每一台计算机的任务都是对数据进行加工和处理。但是每台电脑的任务通常是不一样的,为了效率问题,通过在多台电脑同时部署不同的任务,但是最终都是都是去回收多台电脑的加工处理后的数据,一个电脑的任务有可能还需另一台电脑的数据。
所以有人发明了软盘,当一台电脑处理完成后,将数据拷贝到软盘后,再由人将这个软盘线下交给其他人/电脑,以达到传输数据,但是这种方法效率太低,就是太慢了。
所以将多台电脑连接起来,以达到数据的传输,这是计算机发展的趋势。在此情形下,网络的产生是必然的,因为我们最终还是要方便的拿到这些电脑的数据来进行决策。
独立模式: 计算机之间相互独立;
网络互联: 多台计算机连接在一起,完成数据共享;
在此情形下,实验室中,每个人都有着连接其它电脑的需求。不同实验室中,每个实验室也有着连接其它实验室的需求。历史同样会进行选择,让不同子网进行连接,但是这之间当然会出现一些问题,比如数据的传输问题,是谁传输给谁的,在这些个网络中。还有传输距离问题,信息随距离衰减怎么办。有了网络的发展,新设备必然也会诞生,比如路由器,交换机。
局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;
广域网WAN: 将远隔千里的计算机都连在一起;
所谓 "局域网" 和 "广域网" 只是一个相对的概念。比如我国的广域网,就是一个大一点的局域网。
2.认识协议
不多废话,用现阶段最简单的话来说,"协议" 是一种约定。
计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式 。
但是只要通信的两台主机, 约定好协议就可以了么?
比如
- 计算机生产厂商有很多;
- 计算机操作系统, 也有很多;
- 计算机网络硬件设备, 还是有很多;
- 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是 网络协议;
标准不等于协议,协议只能说明是标准的一个子集
二、网络协议初识
举例,在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次。
在逻辑上,我们认为人和人在通话,电话和电话在通信。
每个层内的交互,在上层来说,是透明的,也就是说上层不管你怎么交互。照样也能完成工作,这就是高内聚,低耦合。任何一层出现了问题,只需解决这一层的问题。分层带来的好处,就是好维护
高内聚,低耦合带来的好处就是减少了维护成本。
1.OSI七层模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
- 但是, 它既复杂又不实用; 所以我们主要学习TCP/IP四层模型.
2.TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
3.网络传输基本流程
同一个网段内的两台主机进行文件传输.
发消息时,每次都要添加报头
报文 = 报头 + 有效载荷
网络通信的本质,就是贯穿协议栈的过程。
网络通信的过程,本质就是不断地封装和解包的过程
以太网通信
每台主机在局域网上,都有自己唯一的一个“标识”。
假如局域网上一根网线上有10台电脑连接,由于每台电脑都有自己唯一的MAC物理地址,所以当我们向另一台电脑传递信息时,只需广播发送自己的MAC地址和目标的MAC地址,目标地址不是自己的会丢掉该信息,而是目标信息的电脑则会收到该信息,并且进行处理。
由此得之,搞掉一个局域网的方法就是不断的向该网线上丢垃圾信息,与正常的信息进行消息碰撞,就可以使这个局域网上的电脑都收不到有效消息。
由此,每台电脑都要有自己的碰撞避免的算法,
交换机有个重要作用,就是划分碰撞域
局域网可以看作多台主机所共享的临界资源,不过访问时不是加锁,而是重新发送。
令牌相当于系统里的锁。
ip地址,尤其是目的IP,一般都是不会改变的,协助我们进行路径选择
max地址,出局域网后,源和目的都要被丢弃,让路由器重新选择。
4.数据包封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.
- 我们要开始重新在不同的阶段命名,在应用层数据包叫请求和响应,在传输层叫做数据断或数据报,在网络层叫数据报,在数据链路层叫做数据帧。
5.网络中的地址管理
1.IP地址
IP协议有两个版本, IPv4和IPv6. 接下来,凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个 字节, 范围是 0 - 255;
2.MAC地址
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).