网络的发展
独立模式:单个计算机相互独立工作。
计算机诞生初期,计算机与计算机之间是相互独立的,只能独自一人完成相关的业务,这就造成如果业务非常庞大,独自完成就造成效率非常低下。
**网路互联:**多台计算机连接在一起,共同完成数据共享。
计算机发展的第二个阶段,有人设法把多台计算机通过网线连接在一起共,协同完成某项业务,实现数据内容共享,极大提升了效率。
**局域网:**通过路由器和交换机进行的有线连接。
在后来随着任务的足够庞大,甚至一个工作室的人全部需要完成这么一项工作,把所有计算机通过路由器和交换机进行有线连接,这叫做局域网。

**广域网:**世界各地不通局域网进行连接。
在后来随着需求的增加,不通地区的人也需要通信,所以我们把不同地区的局域网之间进行的通信称之为广域网。

初识协议
认识"协议"
协议简单来讲是一种约定,为了减少网络通信的成本,用于形成共识(这个共识就是说对于计算机传来的信息),对于所有平台系统都会遵守一套网络协议,以便于更好的识别并处理传来的信息。
协议分层

在计算机网络中,协议是分层存在的,对应的每层都有各自的协议,而且两层之间可以认识对方的协议。
协议分层优势:协议分层可以实现层与层之间的解耦合,让每层之间的维护成本更低。
为什么同层之间可以相互识别同一种协议?

不同的操作系统平台,操作系统本身是不相同的,但是两个操作系统的网络协议部分是一定相同的,遵守一定的表准。这就是为什么说两台不同的操作系统可以进行通信。 另外对于网路协议其实就是被封装的一种结构体,也就是说用同一种结构体去封装同一种协议,同层天然就有共识,能够互相识别对方发来的数据内容。这就是"约定"。
**协议总结:**所谓协议其实就是通信双方都认识的一种结构化的数据类型。
OSI七层模型
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
OSI七层模型把网络从逻辑上分为了7层,每一层都有相关,相应的物理设备(路由器,交换机),它是一种框架性的设计方法主要功能就是帮助不同类型的主机实现数据传输。最大的优点就是将服务,接口和协议三个概念明确的区分开来,通过七个层次化的结构模型使不同的系统通过网络可以进行可靠的通讯。
TCP/IP协议
OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是TCP/IP五层协议(如下)。
TCP/IP协议如下图右:

TCP/IP协议产生得必要性
当然TCP/IP技术的产生肯定是为了解决osi七层模型不能解决得事情。
本地通信
在本地通信中,整个计算机内部,是一个冯诺依曼体系结构,各种硬件,软件功能都是通过一定的系统总线进行连接的,本身就是一个网络结构。
网络通信
网络通信的本质可以简单理解为两台比较远的主机进行通信。但是如果两台远距离设备进行通信传输,因为距离的原因,务必会引发许多问题,而TCP/IP协议就是为了解决这些问题。
解决的部分问题:
|------------------------|-------|
| 主要问题 | 解决层 |
| 怎么决定硬件结构的特性 | 物理层 |
| 怎么解决当下立即要去哪里的问题(mac地址) | 数据链路层 |
| 怎样定位到要传输的目的主机 | 网络层 |
| 数据传输过程中数据丢了怎么办 | 传输层 |
| 接收到数据接收方如何进行处理 | 应用层 |
总结:
TCP/IP协议本质就是**:一种网络长距离通信的解决方案。**存在的主要原因就是因为计算机通信距离变长了,TCP/IP协议是分层的,其实主要原因也是因为通信过程存在的问题是分层的。
网络传输基本流程
局域网网络传输
认识MAC地址(先简单了解)
每台主机在局域网上都可以直接进行通信,在该局域网上用"MAC地址"唯一标识每台主机的唯一性。
MAC地址用来识别数据链路层中相连的节点,长度48位,6字节,16进制表示,一般表示为(08:00:27:03:fb:19)形式,在网卡出厂是就确定了,不能随意修改mac地址,通常mac地址是唯一的。
局域网通信原理图

局域网通信规则:
- 任何时刻只允许一台机器向网络中发数据。
- 局域网中多台计算机同时发送数据,会发生数据干扰,我们称之为数据碰撞,所有发送数据的主机首先需要先进行碰撞检测和碰撞避免。
- 没有交换机的情况下,一个以太网就是一个碰撞域。
- 局域网通信过程中,主机对收到的报文目的mac地址确认是否发给自己的。
同一局域网内两台主机通信的过程

在两台主机整个通信过程中,每层之间都有协议,所以当进行上诉传输流程时,要进行封装和解包。

把数据封装起来整个结构叫数据报(报文),报文=报头+有效载荷。所谓的报头部分就是对应每一层封装的该层协议报头,所谓的有效载荷就是除了报头部分。
不同层的完整报文的叫法
|-----|-----|
| 应用层 | 报文 |
| 传输层 | 段 |
| 网络层 | 数据报 |
| 链路层 | 数据帧 |
| 物理层 | 比特流 |
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部 ,称为封装。
首部信息中包含了一些类似于首部有多长, 载荷有多长, 上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。
综合理解
不同层常见的一些协议:

TCP/IP通讯过程:

在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交付给下层协议(这个过程叫封装),最后由底层发送,然后由对方主机的底层来进行接手,在自底向上进
行向上交付(这个过程叫分用)。
封装和分用过程
封装过程:

分用过程:

