网络的基础认知

网络的基础认知_第1张图片

 日升时奋斗,日落时自省

目录

1、网络发展史

1.1、独立模式

1.2、局域网

1.3、广域网

2、网络通信基础

2.1、IP地址

2.2、端口号

2.3、协议

2.4、网络协议分层

2.4.1、协议类别

2.4.2、TCP和UDP区别

2.5、分层理解事例

2.5.1 封装

2.5.2分用

2.5.3、总结


1、网络发展史

计算机网络怎么来的???有需求才会有创造。

为什么这么说,因为计算机原来也是为了打仗来,因为人力计算是很漫长的,并且也很难精准计算导弹的弹道,计算机网络也是为了打仗而来的,那都解决了导弹精准度问题,还有什么能需要吗?操作导弹的是网络通信,自然网络通信在战争中就起到至关重要的作用,一旦破坏就会造成对其他打击者没有反制能力了。

网络发展也很漫长,从游戏方面来看是一样的,我们大部分的友友应该都听说过或者玩过单击游戏,对,这就是计算机早期无连网状态,后来又经历一段时间的发展有了局域网,这个就以一个游戏来解释CS在早期就是使用局域网进行联机,例如网吧就那时候就能实现这一点。局域网依然是很有限的,只能部分人在一起联机限制了人,也限制了地域,网络发展也开始出现广域网,就是升级版的局域网,将更大范围的电脑连起来。

网络中以游戏为例:从单击 到 局域网 到 广域网

1.1、独立模式

开始简单的解释一下网络的发展变化。这里详细解释

计算机与计算机之间没有任何的联系

网络的基础认知_第2张图片

 当前还没有网络 ,随着时代发展,计算机需要相互通信,共享软件和数据,渐渐有了网络互连,将多台计算机连接在一起,完成数据共享(网络数据传输)也成为网络通信

1.2、局域网

局域网诞生就有了网络,局部组建的一种私有网络(本地的) ;局域网即Local Area Network 简称 LAN局域网内的主机之间能方便的进行网络通信,又称“内网”;局域网和局域网之间没有连接的情况下是无法通信的,在了解局域网连接之前需要了解一下组建网络要涉及的重要设备

(1)集线器 : 类似交换机,当前也不常听说到,除了课本

(2)交换机: 组建局域网(不能跨局域网)

(3)路由器: WiFi本质就是无限路由器,路由器本质就是把两个局域网给连接起来

现在有路由功能(三层转发)交换机,可见路由器与交换机没有实际的界限分明

注:“三层转发”在“总结”里面讲解

局域网连接方式:
主机- 主机

网络的基础认知_第3张图片

主机-交换机 -主机

网络的基础认知_第4张图片

1.3、广域网

广域网 Wide Area NetWork 简称 : WAN

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网,广域网内部的局域网都是该广域网的子网

以上说是用路由器进行局域网的连接,试问交换机行不行?答案:不行

因为交换机是不能跨局域网连接的

广域网连接 :

网络的基础认知_第5张图片

 扩展:互联网称为:“外网”,输入全球化公共型广域网 ,严格说互联网属于广域网的一个子集,不严格说广域网就是指互联网

注:广域网和局域网是相对的。

2、网络通信基础

2.1、IP地址

标识网络上设备所在的位置,IP地址用于定位主机的网络地址,每个主机的网络地址都是唯一的

事例:这个地址就类似于家庭地址,现在地址这个东西少不了,无论是买外卖还是快递都需要填写才能发成功

IP地址是一个32位的二进制数(四个字节),通常被分割为4个8位二进制每8个二进制数由一个点号隔开;以点分十进制的方式来表示 a.b.c.d的形式(a,b,c,d都是0到255的十进制)

特殊IP

本机调用IP地址127.*或者127.0.0.1地址用于本机环回测试

本机环回:是本机到本机的网络通信

IP地址解决了网络通信地址额的问题,但是还存在一个问题,传输到目的主机后,由哪个程序来接收这个数据这就需要端口来标识

2.2、端口号

标识了一个具体的应用程序,端口号可以识别主机中发送的数据

以买外卖为例:除了收外卖的地址(IP地址),还有就是收外卖的人或者是电话号(端口号),直接能接收信息的。

程序端口号是要通过绑定的,端口当然也不是随便的一个数字(范围:0 到  65535也就是2的16次幂-1)

注:两个程序不能绑定同一个端口号,但是一个程序可以把绑定多个端口号

现在有端口号和IP地址了,定位到一台主机的程序,但是问题还是有的,我们端口号只是负责程序来接收数据的,网络通信是通过二进制的,如何处理能够让传输的多种数据类型被识别??

传输数据有不同类型和不同的格式基于网络数据传输,需要使用协议来规定双方的数据格式

2.3、协议

协议是网络通信中最核心的概念,约定好以什么样的格式来进行传输的,有了这个约定,才能让双方相互理解对方的含义。所谓的协议就是大家共同遵守的一个行为规范(固定格式)

举例类比:协议就好比是擂台比武 只能使用武功决出胜负,不能使用热武器(枪)还有一些规定,两者比武同意的话就签字画押;这样的明文规定就是协议

网络通信,是一个比较复杂的事情,需求场景太复杂了,实现功能也会比较复杂,如果这个协议,太复杂了,学习成本太,使用成本,理解成本维护成本都会非常高,因此会采取针对复杂的大的协议拆成若干个小的简单的协议

如果一个协议拆分成了一些小的协议(每个协议复负责一部分功能)此时就发现,某些协议之间功能和作用都是类似的,分层后进行学习

协议分层的好处
(1)降低了学习和维护成本(封装)

(2)灵活针对某一层协议进行替换

2.4、网络协议分层

2.4.1、协议类别

当前互联网网络协议分层有两个风格(两者很像,算是一种):

(1)OSI七层网络模型 (教科书解释)

(2)TCP/IP五层网络模型(实际应用)

OSI七层模型划分为以下:(应用层,表示层,会话层),(传输层,网络层),(数量链路层,物理层)

TCP/IP分层 :应用层 ,(传输层,物联网层),(网卡层,硬件)

网络的基础认知_第6张图片

为什么会部分部分分层括起来,其实OSI分层和TCP/IP是对应的,也是相同的(TCP/IP是OSI简化的实现方式)

在TCP/IP协议中,有以下几个元组标识一个网络通信

<1>源IP :标识源主机

<2>源端口号:标识源主机中该次通过发送数据的程序(进程)

<3>目的IP:标识目的主机

<4>目的端口号:标识目的主机中该通信接收数据的程序(进程)

<5>协议号:标识发送进程和接收进程中双方约定的数据格式

以TCP/IP分层模型来说
物理层:约定了网络通信中基础的硬件设备接口的样子,物理层也就是硬件比如网线,网口等设备,我们使用的网线和网口都是相同规格的,同时物理层也会解决最大的传输速率、传输距离、抗干扰性等。

数据链路层:主要负责相邻的两个节点之间,具体怎么进行传输(就是传输方式)

这里提到节点可能友友们一时想不到是啥(以下图解释)

网络的基础认知_第7张图片

 节点:上述设备都可以叫做节点 

相邻接点: 通过一个线连接起来的节点

网络层:负责地址管理和路由选择,直白点就是负责选择走那一条路径更划算;路由:主机与主机之间数据传输的线路

传输层:确保数据可以从源主机发送到目标主机,相当于站在我和快递企业这个角度,我们不关心过程只关心起点和终点是否能够传输

应用层:负责应用程序间的沟通,描述传输数据

当前这些就是五层协议:也有地方叫做四层协议(不加物理层)

这么分层其实跟代码有关系层也只有应用层,(传输层,网络层)是操作系统内核,(数据链路层,物理层)是通过硬件和驱动程序来实现的。

2.4.2、TCP和UDP区别

注: 看两者区别之前可以先看完“分层理解事例”后回头来看这里效果会更好 

UDP: 无连接 、不可靠运输、 面向数据 、全双工

TCP: 有连接 、 可靠运输 、面向字节流 、 全双工

(1)有连接与无连接

 什么情况是连接?打电话就是有连接,需要连接建立才能通信,打电话就如此,一个人打电话需要的是对方能“接受”,才能进行通信, 反之如果对方法不接受就不能通信

像邮箱啥的qq,微信等,消息可以直接发,没有检测连接,这就是无连接,不是说所有的聊天软件都是无连接的,例如钉钉发消息是不是可以“已读不回”,也是有连接的,以为能检测到连接这边发消息,对方接受后会显示返回就是“已读”。

(2)可靠传输与不可靠传输

打电话就是可靠运输 (能探知对方的情况)

发短信,qq、微信是不可靠传输;发了归发了,但是也不知道对方收到没有收到,不能探知对方情况(当然“已读不回”也是可靠传输)

(3)面向数据与面向字节流

面对数据报:数据传输是通过一个个“数据报”为基本单位(一个数据报可能有若干个字节,带有一定的特殊格式)

面向字节流:数据传输就和文件读写类似 “流式”的

(4)全双工和半双工

全双工:一个通信通道,可以双向传输(既可以发送,也可以接收)

类似于高速公路上的大型隧道 ,虽然是同一个隧道,但是同样有车进车出(也类似网线,一根网线里有8根线,可进可出)。

半双工:一个通信通道 ,单向传输(类似水管就是单向传输,只有能有一端进水另一端出水)

2.5、分层理解事例

整个网络协议中,协议分成了很多层,上层协议要调用下层协议(上层协议把数据交给了下层,继续封装)。下层协议要给上层协议提供支持(下层协议解析好数据,交给上层),这些层协议有明确的层级关系,只有相邻的两个层级之间能进行交互(不能跨层级)

不能跨层级:可以理解为一个层级有一个层级的任务,如果交互就会造成一个层级忙不过来,可能会短时间卡壳或者崩坏。

2.5.1 封装

以下所有为了更好的理解协议的分层

以QQ为例 用户1 给 用户2 发送一个 hello

发送方用户在输入框中输入hello这个字符串,qq这个应用程序就把这个字符串给构造成一个应用层数据报 (本质上就是一个遵守了约定格式的字符串针对当前)

(1)应用层

一个假设的应用层协议格式:(不同的应用程序有不同的数据格式)

网络的基础认知_第8张图片

 程序执行会调用到操作系统API,把这个应用层数据交给传输层

(2)传输层(进入系统内核)

在传输层中就要把上述应用层数据,构造成传输层的数据报

传输层就会使用到协议,最知名就是TCP和UDP,比如这里是用TCP就需要构造出TCP的数据报需如果构成?刚才从应用层取来的作为UDP的载荷(payLoad)如字符串拼接一样将UDP报头这个报头和后面的数据拼接到一起

报头:就像快递一样上面会贴上一个标签,用来辨识

网络的基础认知_第9张图片

 上面的内容是一个特定格式的字符串(涉及到源端口和目的端口)

然后传输层就吧UDP数据报给网络层

(3)网络层

此处使用的都是熟知的协议IP协议,IP协议要基于上述数据,打包成一个IP数据报

网络的基础认知_第10张图片

 此处也相当于一个字符串。同时包含了另一组信息(核心的信息,源IP和目的IP)

网络层数据准备好了后交给数据链路层

(4)数据链路网

知名协议 “以太网”,与上操作相同,这里要打包成一个“以太网数据帧”

 最后数据传输给物理层

(5)物理层

上述传递还是二进制数据转换成光信号或者电信号此时就真正的把数据发送出去了(封装结束)。

2.5.2分用

接收工作省略转发过程 用户2接收过程  这里很想是把刚刚封装的部分进行拆解

(1)物理层

网卡接收到的是 光信号 和 电信号,是在物理层 ,把这个光信号转换回二进制的数据 ,转换回的这个数据,其实是一个以太网数据帧

(2)数据链路层解析

网络的基础认知_第11张图片

 数据链路层 ,需要去掉帧头帧尾,取出中间的载荷,交给上层的网络层接收 目的IP

以太网数据帧头也会记录 ,这个载荷是不是一个IP数据报

(3)网络层

IP协议会对这里进行解析,解析出IP报头,取出IP协议的载荷 ,把这里得到的传输层,交给上层传输层

网络的基础认知_第12张图片

 IP报头里会记录载荷是TCP还是UDP (封装和分用传输层使用的相同的肯定是协议)后交给传输层

(4)传输层

 此处使用的是UDP协议 ,所以这里UDP进行解析,取出载荷,再把载荷交给对应的应用程序

网络的基础认知_第13张图片

 UDP报头中有一个重要的字段,“目的端口”,目的端口是一个具体的应用程序关联在一起的。通过这个端口传递数据给应用程序

(5)应用层 QQ应用程序 qq就会针对应用层协议进行解析,显示到界面上

网络的基础认知_第14张图片

2.5.3、总结

表示一个网络传输的数据单的位包(packer),报(datagram),帧(frame),段(segment)

不同协议层对数据包有不同的称谓,在传输层叫做段,在网络层叫做数据报,在数据链路层叫做帧。

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装

数据封装成帧后发到传输介质上,达到目的主机后每层协议再拆下相应的首部,将首部中的上层协议字段交个上层协议处理称为分用

 协议之间有统一的标准,那谈到这里肯定有友友想问qq邮箱能给其他邮箱发消息,这里是不是个例或者应用层协议可以不同???

答案:都不是 ,是因为两个不同的程序都遵循了相同的应用层协议!!;应用程序不同不代表应用层协议一定不通过,也不是所有的应用层协议都是专门为此的,有广泛使用的应用层协议,让多个程序可以可以进行沟通

前面遗留了一个三层转发的问题?

路由器是三层转发: 在网络层转发

交换机是二层转发:在数据链路层转发

网络的基础认知_第15张图片

你可能感兴趣的:(网络编程理论,网络)