目录
网络搁哪?
网络大家应该都很熟悉了,但网络具体是怎么构成的,怎么用的?长话短说
我认为网络就是计算机里的快递业务,从一台计算机中发出,网络接收到数据后,就要把这个数据安全快速完整地发到目标主机上。
大家肯定在想,谁都知道吧,这个人搁这搁这。但主题确实也是从这里开始。
网络的发展史(了解)
独立模式:
这个时期,有点像网络的原始人时期,这个时期每个计算机只能有自己的数据,程序员想要另一台主机的数据,得等到上一台主机用完了,才能从被用的主机获取。效率太低
网络互联:
这个时期,开始进步了,有人觉得走来走去的也挺麻烦的,我们在附近的计算机组成一个联盟,将要共享数据都放在一台更nb的计算机中(服务器)。这里面就存着一些共享的数据,想用就拿。
局域网时期:
这个时期,延用了网络互联的思路,计算机数量更多了, 通过交换机和路由器连接在一起,通过路由器可以使网络互联时期的单个区域组合在一起
广域网时期:
就是把多个局域网在通过更多的路由器,放到一起就是局域网。
什么是协议
计算机之间的传输媒介是光信号和电信号,通过"频率"和"强弱"来表示0和1这样的信息,因此要想传递各种不同的信息,就需要约定好双方的数据格式,这就是一种纯硬件的一种约定方案。
就像我给你发的是一个视频,你不能解析出来一团乱码,或者莫名奇妙给我来一张图片。那就乱套了,协议设定的初衷就是为了数据转发的安全快速完整。
因为协议必须要固定且具有权威性,所以不能是有一家公司就做一个协议,那也乱套了。所以必须要由一些行业领导者来制定。
有句话说得好"一流的企业做标准,二流的企业做品牌,三流的企业做产品"
所以就到了我们的下一个主题:
TCP/IP五层/四层模型
这里没有介绍OSI七层模型,是因为TCP/IP是现在常用的,虽然OSI是祖师爷,但流行趋势还是五层/四层(如果是五层的话就是把物理层在单独拿出来当做一层)
TCP/IP也是OSI的衍生物如图所示:
Tcp/ip是将OSI的部分组合在一起变成了一层。
计算机在传输数据时就要一层一层地攻关,一层出现失误都要重新再来。在发送端是从应用层往下一层一层走,而接收端就是从物理层一层一层往上走
那和协议有什么关系呢?网络协议是很复杂的,每一层都有每一层的功能,所以每一层都有每一层的协议,所以在之后的练级中呢,我们会一层一层讲解。今天先大体介绍一下每一层有什么用?
用官话来说:
物理层 : 负责光 / 电信号的传递方式 . 比如现在以太网通用的网线 ( 双绞 线 ) 、早期以太网采用的的同轴电缆 (现在主要用于有线电视 ) 、光纤 , 现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器 (Hub) 工作在物理层 .
数据链路层 : 负责设备之间的数据帧的传送和识别 . 例如网卡设备的驱动、帧同步 ( 就是说从网线上检测到什么信号算作新帧的开始) 、冲突检测 ( 如果检测到冲突就自动重发 ) 、数据差错校验等工作 . 有以太网、令牌环网, 无线 LAN 等标准 . 交换机 (Switch) 工作在数据链路层 .
网络层 : 负责地址管理和路由选择 . 例如在 IP 协议中 , 通过 IP 地址来标识一台主机 , 并通过路由表的方式规划出两台主机之间的数据传输的线路( 路由 ). 路由器 (Router) 工作在网路层 .
传输层 : 负责两台主机之间的数据传输 . 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层 : 负责应用程序间沟通,如简单电子邮件传输( SMTP )、文件传输协议( FTP )、网络远程访问协议(Telnet )等 . 我们的网络编程主要就是针对应用层
我自己的话来说
第一层应用层:
就是每个应用自己规定的一套解析手段:就像抖音给你刷的是短视频,他就不能像说你打开抖音,给你开两把王者,所以应用层的协议是公司自己写,然后只应用与这个应用的。
第二层传输层:
这一层有一个重要的概念协议:TCP传输控制协议:这一层就是要保证你传过来的数据,如果应用层是让接收方看得懂这个数据,那这一层要想的就是,我怎么把数据完整安全地解析上来,不能让别人偷了,也不能说我不管你应用层要什么,我直接把收到的全给你塞上去。那还是乱套了。
所以这一层就是保证数据的可靠性的
第三层网络层:
这一层就是IP协议了,IP协议用来保证传输地址是否正确。这一层就相当于寄快递的,和收快递的。必须精准地送到指定的人手上。
第四层数据链路层:
这一层是接收方的启动层,其实也就是硬件层,我那边的网卡发出来后,这边的网卡收到数据后,就往上传。
不同的设备,有不同的层数
作为路由器你只要指路,而作为计算机你是要使用软件应用的,所以不同的设备拥有的层数不同,不是每一台设备都需要走到最顶层,
对于一台主机 , 它的操作系统内核实现了从传输层到物理层的内容 ;
对于一台路由器 , 它实现了从网络层到物理层 ;
对于一台交换机 , 它实现了从数据链路层到物理层 ;
对于集线器 , 它只实现了物理层 ;
网络传输的过程
上面说了网络是一层一层的,所以在传输时也像闯塔一样,一层一层地走
如果你要传输的数据不是局域网内的就要走路由器,就像如果你要送妈妈礼物,直接给就好了。
如果是要送外省读书的朋友礼物,那就要寄个快递。
数据包的封装和分用
那作为操作系统我只知道你传上来一堆数据,那我要怎么识别并且向上层传递呢或者向下层传递?
如图我们可以看出,应用层先把数据打包好,然后给传输层层,传输层加了一个TCP头部。
这个加的头部其实就是之后用来解析的协议的报头(就当做一个头部就好),然后每一层都加上一个报头,之后传到另一个主机时,这个主机就有思路了,根据协议规定,我通过将每一个头部拆分。在根据协议中的规定再来考虑要不要向上传递。(就像,到了一台主机要识别ip,如果不是这个ip,那我就不向上传了)。
什么是报头
报头就是一个协议字段,通过拆下这个报头并且分析我就可以知道数据是否正确完整安全等等
什么是有效载荷
对于网络层来说IP头部是报头,剩下的部分就是有效载荷
报头有效载荷怎么分离
首先在报头中会有一段数据是用来描述,报头的大小的等等数据,通过这个大小就可以将报头从这一串数据中分离,将有效载荷拆开,有效载荷怎么知道自己要去那一层呢?其实很简单,对于每一层把报头拆开后,里面的有效载荷的下一个字段就是下一层的报头。(套娃的过程)
都能拿到数据
在网络中一台主机发出的数据,同一局域网下的每一个主机都能收到同一份数据,只是基于系统模式,不同的主机根据ip协议,可以决定是否要这份数据。计算机还存在一种模式,就是不管ip是否匹配都能获取传输的数据,但这个模式默认是不开启的。
网络中的地址管理
IP地址
目前有两种ip地址,一种是ipv4,一种是ipv6.每个ip地址在世界上独一份
IP 地址是在 IP 协议中 , 用来标识网络中不同主机的地址 ;
对于 IPv4 来说 , IP 地址是一个 4 字节 , 32 位的整数 ;
我们通常也使用 " 点分十进制 " 的字符串表示 IP 地址 , 例如 192.168.0.1 ; 用点分割的每一个数字表示一个 字节, 范围是 0 - 255;
为什么要新出一个ipv6,是因为ipv4,这个类型只规定了4个0-255范围的数字。随着网络的发展。
之前如果是一人一个电子设备的话暂时还hold住,但由于发展,一个人可能拥有更多的设备。每个设备如果都要入网,那就得有一个新的ip,所以ipv4的数字范围太小 存不下,所以ipv6就是为了解决数量问题
MAC地址
MAC 地址用来识别数据链路层中相连的节点 ;
长度为 48 位 , 及 6 个字节 . 一般用 16 进制数字加上冒号的形式来表示 ( 例如 : 08:00:27:03:fb:19)
在网卡出厂时就确定了 , 不能修改 . mac 地址通常是唯一的 ( 虚拟机中的 mac 地址不是真实的 mac 地址 , 可能会冲突; 也有些网卡支持用户配置 mac 地址
和ip地址不同的是,mac地址是在局域网中唯一但是在广域网中并不是唯一的。所以说mac地址更像是学校的学生卡号,虽然在学校是唯一的,但是出了学校只有身份证(ip)是唯一的。
其实mac地址也是为了增大ip地址的利用率之后会详细说明
使用IP协议的一大原因:
使用ip协议可以屏蔽底层差异
由于网络的类型不只是一种,我们平常家里常用的有蓝牙网络 wifi(wlan),以太网(网线)等等,因为每个网络类型封装的报头不同,但是在ip协议这一环封装的是相同的。
IP协议呢就可以不管你是什么类型的网络,它的目的只是一个传递到属于这个ip地址的计算机。