文章目录
1.网络的发展史
1.1独立模式
在网络未出现前,计算机与计算机是相互独立的。
1.2网络互连
1.2.1什么叫网络互连
将多台计算机连接在一起,完成数据共享就叫网络互连
1.2.2网络互连的分类
数据共享的本质是网络数据传输,即计算机通过网络来传输数据,也称为网络通信,我们根据网络互连的规模不同,可以分为局域网和广域网。
1.2.2.1局域网(LAN)
局域网是指在某个区域内各个主机可以相互通信,在区域之外是不能进行相互通信
1.2.2.2广域网(WAN)
广域网是指将各个局域网连接起来进行相互通信,这样就可以实现各个局域网可以进行相互通信
1.2.2.3路由器
路由器是组成网络通信的主要网络设备,就是我们日常说的"猫"路由器的LAN端连接着主机的一端,WAN端连接着上一级路由器或者交换机,这样一套组合就组合了一个局域网。
1.2.2.4交换机
交换机的产生就是因为路由器的端口太少了,当有许多的局域网的时候,单凭一个路由器是远远不够的,所以就会有了交换机的出现,其实交换机就好像电脑上的扩展坞,增加端口的。通过交换机就可以将很多的局域网组成一个广域网。
1.2.2.5集线器
集线器与交换机是同一个类型的硬件网络通信设施,但是集线器与交换机最大的区别就是,当同时多个设备连接到集线器上,那么集线器就会先执行一个,其余就阻塞等待,但交换机不会这样,直接就全执行。
2.网络通信基础
2.1Ip地址
2.1.1概念
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址.
2.1.2格式
ip地址本身是一个32位二进制组成的也就是4个字节,但我们一般用点分十进制的方式表示。
2.2端口号
2.2.1概念
标识一个主机上不同的应用程序,每一个程序被启动系统就会分配一个端口号,也可以自己自定义一个端口号,但是不建议这样操作,因为你不知道你自己设定的这个端口号是否和本主机其他应用是否重复了,而且就算你可以避免你主机上所有的端口号,如果面对的是客户呢,他知道你服务器中其他的端口号吗?,所以尽量让系统自己去分配。
2.2.2格式
端口号是一个两个字节的整数,范围是0-65535任意的一个数字
2.3协议
2.3.1概念
是一种约定,通信双方对于通信规则的约定,一定是通信双方都得认可的。
2.3.2协议分层
2.3.2.1为什么要协议分层
为什么需要协议分层,如果将所有的协议都放在一起,那么这样协议里面的东西太多了,效率就会大大的降低。
协议分层就是根据功能不同分成不同的层级,每一个层级对应自己的主线任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。
注意:一定不能越级去调用。
2.3.2.2协议分层的好处
- 封装的效果,假设你用这层的协议就正常使用,不需要知道其他层协议的细节
- 任意层的协议都是可以灵活替换的,这样可以达到解耦合的效果
2.3.3TCP/IP五层模型
- 应用层:和具体应用程序沟通
- 传输层:关注的是通信双方的"起点"和"终点",端与端之间的传输
- 网络层:关注的是通信中,通信路径的规划,规划出的路径就决定了数据要经过哪些节点,“点与点之间的传输”
- 数据链路层:关注的是,通信过程中,两个相邻节点之间的通信
- 物理层:负责光/电信号的传递方式
2.3.4协议之间是如何配合工作
主要的两点:封装和分用
举个栗子:
A通过微信这个应用程序发一个"你好"给B
应用层:微信这个应用程序内部就有一个应用层协议,将上述要传递的内容打包组织成"应用层数据包",不管协议是怎样的,本质就是将各个属性信息组成一个字符串,协议就是规定数据的组成结构。
序列化:把结构化数据转化位字符串或者二进制字符串
反序列化:将字符串或者二进制字符串转化位结构化数据
传输层:应用层调用传输层中的api,将"应用层数据包"构造为"传输层数据包",在传输层中有两种经典的协议分别为:TCP/UDP,此处我们用UDP协议,在原来的"应用层数据包"增加一个UDP报头就构成了"传输层数据包"。
网络层:传输层调用网络层中的api,将"传输层数据包"构成"网络层数据包",网络层有典型的IP协议,在原来的"传输层数据包"增加一个IP报头就构成了"网络层数据包"。
数据链路层:网络层调用数据链路层的api,将"传输层数据包"构造为"数据链路层数据包",在数据链路层有典型的以太网协议,在原来的"网络层数据包"头部增加一个帧头并且在"网络层数据包"尾部增加一个帧尾就构成了"数据链路层数据包"。
物理层:上述以太网数据帧本身就是二进制数据,那么硬件设备就可以将上述二进制数据转化尾光信号或者电信号,电磁波进行发射。
上述层层包装数据称为封装
接下来,B需要接收A发过来的消息
物理层:收到了一系列的光信号或者电信号转化为二进制数据交给数据链路层
数据链路层:按照以太网协议将数据进行解析,将解析的载荷数据交给网络层
网络层:按照IP协议的格式对IP数据包进一步解析,将解析的载荷数据交给传输层
传输层:拿到UDP数据包,按照UDP协议将数据包进行解析,拿到载荷数据交给应用程序
应用层:微信程序拿到了应用数据包,按照微信自己的协议进行解析,将这里解析出来的结构化数据通过反序列化转化为字符串或者二进制字符串形式。
上述层层解析称为分用
注意:此处的载荷就是将当层的协议给去除的数据包。