独立模式:计算机之间相互独立
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。
网络互连:将多台计算机连接在⼀起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为⽹络通信。
根据网络互连的规模不同,可以划分为局域网和广域网
局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的⼀种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
局域网组建网络的方式有很多种:
1)基于网线直连
2)基于集线器组建
3)基于交换机组建
4)基于交换机和路由器组建
广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很⼤范围的网络,就形成了广域网。
广域网内部的局域网都属于其子网。
网络互联的目的是进行网络通信,也是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据
那么,在组建的网络中,如何砍断到底是从那太主机传来的呢?
接下来我们就认识一下通信的基础知识
概念:
IP 地址,描述了一个设备,在网络上的地址
简单说,IP地址用于定位主机的⽹络地址
格式:
IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节)
如 01100100.00000100.00000101.00000110
通常⽤“点分⼗进制”的⽅式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的⼗进制整数)
如:100.4.5.6
概念:
在网络通信中,IP地址⽤于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。
简单说:端口号⽤于区分知己上不同的应用程序
格式:
端口号是0~65535范围的数字(两个字节),在网络通信中,进程可以通过绑定⼀个端口号,来发送及接收网络数据
不同的程序就可以关联/绑定到不同的端口号
一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口
0 一般不使用
1 - 1023 这个范围的端口,系统留作特殊用途,我们一般写的长须不应该占用
这是知名端口号,留给一些比较创建的服务器程序使用
22 -> ssh
23 -> telnet
80 -> http
443 -> https
实际的通信过程中,IP 的 端口 往往是“一对”
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端口号)
网络 本质是通过 光/电 信号来传输数据
比如,低电平表示 1,高电平表示 0;高平光信号表示 1,低频光信号表示 0
协议就是一种约定,约定了通信双方按照啥样的方式来传递数据
协议,就只是单纯的约定,并不会很复杂的
由于网络通信的世界中,遇到的场景/问题往往比较棘手,确实有一些网络协议是比较复杂的
五元组是一次通信过程中必不可少的信息
在平时写代码中,如果一个代码越写越多,越写越复杂,往往需要把代码给拆分成多个部分
拆分之后能够更好的理解
网络通信的场景会比较复杂,有很多问题需要通过协议来进行解决
如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大,非常复杂就不利于人们去学习和理解.
相比之下,也可以把大的协议,拆分成多个小的协议,让每个小的协议只专注于做一小块事情
使每个小的协议,都不会太复杂 ( 化繁为简 )
由于网络通信实在太复杂,拆分就拆出来太多的小的协议,这么多小的协议也就不好管理了,就需要对协议进行分层了
所谓分层,就是按照协议的定位/作用 进行分类
并且约定了不同层次之间的“调用关系”
“上层协议,调用下层协议”
“下层协议给上层协议提供支持”
此时,这么多协议就不容易混乱
仅仅出现在教科书中
OSI:即Open System Interconnection,开放系统互连
• OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层
• OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输
是 OSI 七层模型的简化版本
下面四层叫法可能有差异,但是具体还是一样的
有些资料会说“TCP/IP 四层协议”
是因为这里没有算物理层
(物理层偏硬件,我们大部分关注的是软件)
• 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
• 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层
• 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
(交换机的作用,是针对路由器的端口进行扩展,路由器上的端口可能有限,不够用)
• 对于集线器,它只实现了物理层
(在物理层,把网线一分为二)
注意 我们这⾥说的是传统意义上的交换机和路由器,也称为⼆层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)
随着现在⽹络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器
甚至说一些高端的交换机,也有路由器公共
另一方面,路由器见换机可能还会支持一些更复杂的操作,甚至可能会在传输层或者应用层
分装和分用,描述了网络通信过程中,基本的数据传输流程
举个栗子:
考虑 A 通过 QQ 把 hello 传递给 B
发送方:
从上层协议到下层协议,层层给数据报添加报头
这个过程称为:封装
数据发送出去之后,就会经过一系列的交换机和路由器进行转发
A 和 B 一般来说不是直接网线连接的,中间还要经过很多的交换机/路由器设备进行转发
当数据到达 B 这里之后,B 就要针对上述数据进行“分用”
(针对上述数据进行层层的解析)
接收方:
物理层
拿到光电信号 之后 转化为二进制数据,进一步得到以太网数据报
这个数据要交给数据链路层对应的协议处理
数据链路层
通过以太网协议,针对以太网数据报进行解析
这个解析过程就会解析出 报头 和 报尾,以及中间的载荷
把载荷部分,进一步的再交给网络层的协议来处理
传输层
此处使用 UDP 协议,针对这个数据报进行解析,拿到载荷,去掉报头,把载荷数据进一步的交给上层(应用层)
根据端口号来区分把数据交个哪个应用程序
应用层
把上述数据根据端口号,交给 QQ 这个程序
QQ 这个程序就要进一步解析这里的数据,这个解析过程也就是按照前面程序员自定义的应用层协议来展开的
此时,取出 hello 最终显示到界面上即可
数据报在网络中间还会经历一定的转发过程
如果经过路由器:就会封装分用到网络层
路由器解析到网络层,拿到 IP 地址,决定进一步如何传输
下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装
如果经过交换机:就会封装分用到数据链路层