目录
局域网LAN + 广域网WAN = 组网
WAN口:(W:wide)一般咱们自己家中入户的宽带就是插这个口.
LAN口:(L:local)就是插在LAN口上的设备在一个局域网里通过WAN口链接到另一个局域网.
局域网和广域网并没有一个明确的界限;要是局域网空间跨度特别大,那么也可以称它为广域网.
网络通信基础
IP地址
IP地址用于定位主机的网络地址,也就是说我们主机在网络的地址.
IP地址是一个32位的二进制数 通常被分割成4个“8位二进制数”(4个字节)
如何查询我们自己的主机地址?Win + R 输入 cmd
再输入ipconfig,即可查看我们自己的主机的IP地址
我们主机的IP是属于内部网络,是路由器根据规划IP地址分配给我们自己的单个设备使用的网络IP地址.外界是不能根据此IP找到我们的.
IPV4
表示形式通常采用了“点分十进制”方式:a.b.c.d(都在0-255整数之间);也就是上面我们查看的自己的主机IP:显示的是IPV4地址 192.168.56.1
还有一个常见的IP地址:127.0.0.1 回环IP
回环IP主要用于本机到本机的网络通信
IPV4是由32位的二进制构成,可以最多表示的地址为2^32(42亿个);那么全球现在快80亿的人口,IP地址显然是不够分配的,所以对于IPV4采用了动态规划IP机制.
动态规划IP
是对IPV4的优化机制:把所有的IP地址进行统一规划管理,当设备需要上网时才分配给IP地址.
虽然在当时解决了部分的IP匮乏的情况,但在当今还是远远不满足的.
NAT
NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术(但也只是暂时性的解决)。那在IP匮乏的时代真的没有解决方法了吗?nononononono!咱们还有IPV6!
IPV6
IPV6是由128位的二进制构成,可以最多表示的地址为2^128 = 2^32 * 2^32 * 2^32 * 2^32 * 2^32.
没有对比就没有伤害 这可比IPV4大了无穷无尽…… 数量甚至都可以给每一粒沙子命名.
端口号
描述主机上的某个应用程序,也就是定位主机中的进程.
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
两个不同的进程,不能绑定同一个端口号;一个进程可以绑定多个端口号.
协议
就是说保障我们都可以相互顺畅的通信,就要共同遵循一组约定,我们才能相互通信交流.
本质上计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息.
协议分层
将一个大而复杂的协议给它拆分成许许多多的小协议,每个小协议负责都一部分的工作
协议分层最大的优点:类似于面向接口编程,定义好层间的接口规范,双方遵循规范来对接就可以,更好的拓展和维护.(也可以理解为更好的做到封装,提供方可以隐藏某些细节,只需要开放接口,用户使用接口即可;也做到了解耦合,毕竟类似于提供接口,那么就可以将该对应层的协议替换成其他协议)
协议分层最大的优点简言之:上层不需要了解下层的细节(封装)
灵活调整/替换某层的协议
协议分层主要的两种形式:OSI七层网络模式、TCP/IP五层(或四层)网络模型
TCP/IP五层(或四层)协议
五层:应用层、传输层、网络层、数据链路层、物理层(偏硬件)
应用层
和应用程序相关 就好比我在拼夕夕买了商品,我只需要下单,我只负责用即可;不需要管它中间是谁来打包,谁来运输,走哪条路线.
传输层
起点和重点;只关注结果,不关注过程.
网络层
负责点到点的通信(任意节点)
在复杂的网络环境中,在两个点之间规划最适合的路线;就好比我们手机没电了去某个地方没有办法导航,路线很多,那就可以去问路人,一直边走边问,就可以找到我们想去的地点.网络层也是这样一层一层的询问,越询问越近
数据链路层
负责完成相邻的两个设备之间的通信(同一根网线相连的两个设备)
物理层
硬件设备(网卡、网线...)保证所有的主机和网络设备之间都是互相匹配的
网络设备所在分层
主机:物理层到应用层(5层都实现了)
路由器:物理层、数据链层、网络层
交换机:物理层、数据链层
网络数据传输的基本流程
封装和分用
以A在qq发信息给B为例
发送方
1.应用层
假设我们自定义了qq的协议(当人协议实现是不同的,是由程序猿约定的;咱们假设而已~)
假设qq的应用层协议是:发送人、接收人、时间、消息内容(构建传输层数据报:就是按照一定的格式进行字符串拼接)
(发送方和接收方需要达成一致)
应用程序就会调用传输层提供的接口,把上述的内容交给传输层进行处理
2.传输层
最主要TCP UDP 假设咱们现在使用UDP
上面的数据从应用层传到了传输层,交给了UDP,所以UDP按照自己的协议格式生成了一个UDP数据报
UDP数据报 = UDP报头 + 载荷
UDP不关心应用层数据,当作字符串去构造一个UDP数据报
传输层会把构建好的UDP数据报进一步交给网络层
3.网络层
网络层最主要协议是IP协议
IP协议也会根据自己的格式构造出IP数据报
IP数据报 = IP报头 + 载荷
IP不关心载荷的内容,当作字符串去构造一个IP数据报
然后继续把数据传输给数据链层
4.数据链层
以太网:平时上网需要插得一个网线
以太网又会针对IP数据报,进行进一步的封装,再添加数据头和数据尾
以太网不关心载荷的内容,当作字符串,进一步拼接帧头帧尾,构造成以太网数据帧
然后继续把数据传交给物理层
5.物理层
硬件设备(网卡)
本质上都是二进制的数据(一组0101构成的)
硬件设备就需要对上述的数据进行转换了—>光信号/电信号/电磁波
到这里 A就完成了发送
接收方
1.物理层
(硬件设备,网卡)收到了光信号/电信号/电磁波
把收到的信号进行解调 得到一串0101二进制序列 也就是 以太网帧
把这个数据交给上一层,数据链路层
2.数据链路层
数据链路层的以太网协议就会针对这个数据进行解析
把载荷部分取出来 交给上一层(IP协议)
3.网络层
IP协议针对这个数据报进行解析,去掉了IP报头,取出载荷 进一步交给传输层
4.传输层
根据IP报头中的字段 就可以知道这个载荷是一个UDP数据报 交给UDP处理
UDP也针对这个数据报进行解析,去掉了报头,取出载荷 进一步交给应用程序
5.应用层
UDP报头中 有一个字段,目的端口
根据目的端口找到关联的应用程序 交给这个程序即可
qq程序收到这个数据 就会按照qq的应用层协议 进行解析
把数据显示到页面上~~~~
可以看到:主机A 从上到下,依次添加报头的过程 称为 封装(打包快递~)
主机B从下到上,依次解析报头的过程 称为 分用(拆包快递~)
上述的qq发消息也正是体现了每一层完成自己的任务 不会管理其他层的事务 ~