认识 “协议”
“协议” 是一种约定。
举个栗子,你和好友之间提前约好在某个地方见面,这件事只有你们俩知晓,当到了约定的时间,你们俩一定会去目的地回合;重点是这种约定只有双方知晓
网络协议初识
协议分层
打电话为例
两个用户进行远距离沟通,单单使用语言二者不可能进行沟通,而仅使用通信设备也不行;用户需要进行语言的输出,通信设备进行读取,通过自己的协议将读取到的内容传递给另一个设备,再由设备传递给另一个用户,从而达到通信的目的
OSI七层模型
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
把网络从逻辑上分为了7层.
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
为了方便理解分层,举个栗子
假如你打算从沈阳到北京去玩,而你又不想称作任何交通工具,于是你决定骑山地车去北京;首先要先到达临近沈阳的城市例如锦州;到达锦州之后可以再向目的地靠近,也可以绕远先去其他城市游玩,这就是路径选择的能力;也有可能导航出现问题,路径出现偏差,需要即使进行修改,这是纠错能力;最好到达目的地北京,这并不是目的,而是手段,游玩才是目的
总结下来
如何将数据交付给临近的主机
拥有路径选择的能力
拥有纠错能力
解决应用方面的能力
每一层都有相对应的协议,每一次协议都有要解决的问题
TCP/IP五层(或四层)模型
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
物理层: 负责光/电信号的传递方式.
数据链路层: 负责设备之间的数据帧的传送和识别.
网络层: 负责地址管理和路由选择.
传输层: 负责两台主机之间的数据传输.
应用层: 负责应用程序间沟通
网络传输基本流程
网络传输流程图
为了方便理解局域网中主机的通信,先来学习什么是协议报头???
举个栗子
网购是很常见的事情,方便了你我他。假如我网购了一件衣服,卖家会通过快递公司将快递送到我家附近的快递点。当我拿到快递时,除了衣服之外,还有一个快递单,我并不需要快递单,可是为什么快递上要有它呢???
其实快递单并不是给用户(我)看的,而是给快递公司看的。快递公司对于快递单的管理有自己的规则,也就是协议,从而就能实现全国各地的快递发送。而这个多余的快递单也称作“报头”,协议是通过报头来进行表达的
协议报头
协议每一层都有,协议的最终表现形式就是协议都有报头
协议是通过报头来进行表达的
每一份数据最终在被发送或者在不同的协议层中,都有对应的报头
局域网
两台局域网的主机能够进行直接通信
原理:每台机器都有自己的“名字”,每台主机都有网卡,每一张网卡都有自己的地址,也称MAC地址,表明自己在局域网中的唯一性
6个字节用来存储MAC地址
两台机器在局域网中进行通信的过程如下
用户A发送一个消息,在用户层添加用户层协议,传递给下一个协议;数据在传输层,添加传输层协议,接着传递给网络层;数据在网络层中添加网络层协议,向下传递给链路层,再添加上链路层协议,这整个过程称为封装;数据最终传递到以太网,通过以太网将数据传递给对应的用户B,经过层层解包分用将消息发送给了用户B,至此完成了局域网中两主机进行通信的过程
上述中的报头加上数据也称有效载荷整体称作报文;每一层协议的报文中都涵盖了上一层的信息;在局域网中,只允许一个主机在任何时刻发送消息,否则发生碰撞,局域网中网络资源其本质也是共享资源;在网络协议中,可以认为同层协议在直接通信,也可以理解为将报文进行向下交付
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
跨网络通信和局域网的区别就是,多了一个令牌环网,路由器需要横跨两个网路;具体实现,报文到达以太网层之后,通过以太网传递给同一个网络中的以太网层,接着向上传递到另一个网络(令牌环)进行解包分用,然后重新封装;其余过程与上述一致
数据包封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理
数据封装的过程
网络中的地址管理
认识IP地址
IP地址是在IP协议中, 用来标识网络中不同主机的地址
对于IPv4来说, IP地址是一个4字节, 32位的整数
我们通常也使用 “点分十进制” 的字符串表示IP地址
认识MAC地址
MAC地址用来识别数据链路层中相连的节点
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)