今天巨无聊,全是概念,重点记一下五元组,TCP/IP五层模型和OSI七层调用模型,大家这期就当看故事啦;
1,网络发展史
1)独立模式
我们刚开始使用计算机呢,客户端的数据不是共享的,如果有一个人想要办理业务,而这个业务所需的资源是在三台电脑上,那么这个人就需要在这三个电脑上不断的办理任务,而其他人想要办理业务,还需要等到前一个人办理完,效率非常低,那怎么办,我们就改进;
2)网络互联
接下来我们就使用网络进行计算机资源的共享,让多个计算机可以一起办理业务,达成数据共享,即网络通信,我们可以根据网络互联的规模分为局域网和广域网;
3)局域网LAN
局域网是本地,局部构建的一种私有网络,又被称为内网,局域网内的主机能够实现网络通信,局域网和局域网在没有连接的情况是不能进行通信的;
组件局域网等待方式也有很多种,可以通过网线直连,也可以通过交换机相连,还可以通过集线器相连,还可以通过路由器连接交换机在与多个主机相连;
4)广域网WAN
广域网就是多个局域网完成了连接,很多很多的局域网都能进行网络通信,我们其实可以把咱们中国的网络看成一个巨大的广域网,我们管内部叫做内网,外面的就是我们常说的外网,有很多人可能对此不满,但这也是保护我们的一种方式,起码我们活的挺快乐的;不说了,再说被封了,哈哈哈哈哈哈;
2,网络通信基础
1)IP地址
那么,广域网这么大,我们怎么能准确找到每个主机的所在呢,我们就使用IP地址来标识每个网络主机和网络设备的网络地址,我们可以通过CMD看自己主机的地址,输入这个命令ipconfig,就能看到了,那个IPv4地址就是我们的地址啦;
2)端口号
端口是啥玩意,我们有了地址,那么电脑发送或者我们接收了一个数据,难道我们只是通过地址就能知道吗,我们知道了地址,但不知道是哪个软件发送或者接收这个数据,比如发来一个QQ的数据报,那我们去给CSDN吗,不,我们应该是找到QQ的端口号,之后把这个数据给到QQ,让QQ来做相应的操作;
我们可以把网络通信可以看成送快递,我们把IP地址看作收货地址,把端口号看作收件人;
3)认识协议
我们现在能找到地址和端口号了,我们网络传输的是二进制的数据,那么我们传入一段二级制指令,对方是怎么知道我们传的是什么东西呢,之前说过,图片,音频和视频都是二进制的指令,我们到一个数据报,我们怎么知道这是啥文件呢,去使用什么编码方式呢,所以就需要大家都统一一下,我们就约定网络传输的格式,我们就管它叫协议;
协议的最终体现呢,就是网络传输数据报的格式;
4)五元组
在TCP/IP协议中,我们使用五元组来标识网络通信:
1,源IP:标识源主机
2,源端口号:标识源主机中该次通信发送的进程
3,目的IP:标识目的主机
4,目的端口号:标识源主机中该次通信接收的进程
5,协议号:标识发送进程和接收进程双方约定的格式
5)协议分层
啥事协议分层呢,我们的协议很多,很复杂,我们把它分为不同层次的协议,让每个协议尽可能有自己的功能,OSI七层模型和TCP/IP五层模型,都把每层划分了很多不同的功能;
OSI七层调用模型:
层数 | 名称 | 功能 | 功能概览 |
7 | 应用层 | 针对特定应用的协议 | 比如我们发送邮件,就用电子邮件协议,实现登录,就要使用登录协议 |
6 | 表示层 | 数据固有格式和网络标准格式的转换 | 我们将接收的信息会根据网络标准格式转换为标准的信息 |
5 | 会话层 | 通讯管理,负责建立和断开通讯 | 何时建立连接,何时断开连接和建立多久的连接; |
4 | 传输层 | 管理两个节点之间的数据传输,负责可靠传输 | 检查是否有数据丢失 |
3 | 网络层 | 地址管理与路由选择 | 会考虑经过哪些路由到达地址 |
2 | 数据链路层 | 互联数据的传送和识别数据帧 | .....数据帧和比特流之间的转换 |
1 | 物理层 | 以‘0’,‘1’代表电压高低,灯光闪灭,界定连接器和网线的规格 | 比特流与电子信号的转换 |
这个我们大概了解即可,我们也是从网上扒下来的,我们会重点去学习应用层;
TCP/IP通讯协议:
TCP/IP模型其实就是OSI七层协议模型,只不过把OSI重新划分了一下,TCP/IP通讯协议采用五层的层级结构,每一层都可以呼叫下一层来给自己提供网络需求;
5层,应用层:
负责应用程序间沟通,如简单电⼦邮件传输(SMTP)、文件传输协议(FTP)、网络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
4层,传输层:
负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机,还有UDP。
3层,网络层:
负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
2层,数据链路层:
负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环网,⽆线LAN等标准。交换机(Switch)工作在数据链路层。
1层,物理层:
负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
这也是扒来的,下面我用自己的理解讲讲:
——————
5,应用层:
就是我们拿到了包裹(数据包)后怎么样~
4,传输层:
任意两个设备的通信,不考虑传输过程,只考虑起点和终点;
3,网络层:
任意两个设备的通信,考虑中间的过程,传输过程可能有很多的交换机啥的;
2,数据链路层:
完成相邻两个设备之间的通信;
1,物理层:
规定网络通信中一些硬件设施的符合要求:
我们拿送快递来举一个例子,比如我们网购一个手机,
我们拿到手机之后怎么使用,就是应用层;
商家发货的寄件方后收件方的地址,就是传输层;
物流公司关心包裹是咋传输的,就是网络层;
大车司机关心今天送到哪个地方,一个一个节点之间,就是数据链路层;
TCP/IP协议栈其实里面包含了很多协议,但是最重要的就是TCP/IP协议了,我们再来谈谈主机,交换机和路由器都涉及到哪些层次:
1,主机 工作涉及到 物理层到应用层(通过应用层满足数网络通信的要求);
2,路由器 工作涉及 物理层到网路层(组件局域网,进行网络数据报的转发);
3,交换机 工作涉及到 物理层到数据链路层(对路由器接口的扩展,不需要考虑组网问题);
3,网络通信基本流程
不同的协议层对数据包有不同的叫法,在传输层叫段,在网络层叫数据报,在数据链路层叫数据帧;
应用层数据包,往往是结构化数据:
我们发送数据的时候,会把结构化数据变成二进制比特流或者字符串,我们叫做序列化;
我们接收数据的时候,会把二进制比特流或者字符串变成结构化数据,我们叫做反序列化;
流程:
我们使用QQ,发送Hello给对方;
1,应用程序获取用户输入,构造一个应用层数据包,会遵守应用层协议(往往是程序员自己定制的)
我们假设约定的格式为(发送者QQ,接收着QQ,消息时间,消息正文);
2,应用层调用传输层API(socket api)把数据交给传输层,把数据拿到后,构造出传输层数据包,
传输层的协议主要就是TCP和UDP;
我们拿TCP数据包举例,
TCP数据包 = TCP报头(TCP功能的相关属性) + TCP载荷(就是应用层的数据包);
数据包就变成这样的了;
3,传输层数据包构造好之后,就会调用网络层的API,把传输层的数据包交给网络层,网络层来处理数据包,网络最重要的协议,IP协议我们又会加一个IP报头,
IP数据包 = IP报头(包含很多信息,包括源IP和目的IP) + IP载荷(整个传输层的数据包);
在这些报头中还包含了上一层所用协议的内容,
4,IP协议继续调用数据链路层的API,把IP协议交给数据链路层,数据链路层的核心协议,以太网,根据以太网这个协议会在网络层的基础上进一步加工
以太网数据帧 = 帧头 + 载荷 + 帧尾
5,以太网继续把数据帧给硬件设备(网卡)
网卡会把二进制的比特流发送出去,这才成功的发送出去 。
发送数据我们我们从上到下的过程我们称为封住,
反过来接收数据的时候我们从下到下的过程我们称为复用;
讲完了~~~~