作者
:学Java的冬瓜
博客主页
:☀冬瓜的主页
专栏
:【JavaEE】
主要内容
:单机、局域网、广域网、交换机、路由器。IP地址,端口号,协议,五元组。
协议分层,OSI七层网络模型,TCP/IP五层网络模型,数据的封装和分用详解。
单机 ——> 局域网 ——>广域网
单机
:我们都知道单机游戏,是一个人玩,不能联网的游戏。
局域网
:把多台计算机连接在一起,就形成局域网。
广域网
:把多个局域网连接在一起,在物理上就形成很大的范围,就形成了广域网。
集线器和交换机
的核心功能相同:都是组建局域网。
最大的区别是集线器比交换机传输速度慢。因此一般来说,集线器已经很少使用了,而交换器的功能在加强,有的可以像路由器一样实现三层转发功能。
路由器
的功能:用于局域网之间的连接。
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:
127.* 的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
端口号
:端口号用于定位主机中的进程。你的收货信息不仅需要指定地址(IP),还需要收货人姓名号码(端口)。
格式:
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
理解:
1> 两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。
2> 一个进程启动后,系统会随机分配一个端口(启动端口);程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。
协议
:最终体现为在网络上传输的数据包的格式。
协议是网络协议的简称。网络协议是网络数据传输经过的所有网络设备都必须遵从的一组约定。只有遵守这个约定,计算机才能互相通信交流。
在TCP/IP协议中,用五元组来标识一个网络通信:
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式
网络通信,笼统的说的话是一个复杂的事情,那么使用的网络协议也就复杂。针对这个复杂的大的协议,拆分成若干个相对较小的协议,然后把这些协议之间功能和作用相似的小协议进行分层,这样,功能类似的协议就分到同一个层中,这样就把复杂的东西拆分成简单化的东西。同时不同功能的协议之间也达到解耦的效果。
协议分层的好处:
1> 降低了学习和维护的成本(封装)
2> 灵活的针对这里的某一层协议进行替换。
3>分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类
对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可; 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。
协议分层后最著名的是OSI七层模型和TCP/IP五层模型。其中,在协议之间,上层协议要调用下层协议(发送方,上层协议把数据交给下层协议,多层封装);下层协议要给上层协议提供支持(接收方,下层协议解析好数据,交给上层)。接下来我们看看OSI七层模型和TCP/IP五层模型、以及如何完成数据的封装和分用。