一、简单的网络知识
1、网络模型:
①、OSI/RM(Open System Interconnection Reference Model开放式系统互连基本参考模型),是由ISO(International Standards Organization国际标准化组织)提出的网络参考模型。
②、TCP/IP(Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议)
③、两种网络模型的主要区别:
OSI/RM:7层模型。从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
OSI/RM模型的网络层同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信。
TCP/IP:4层模型。从低到高分别是:网络接口层、网际层、传输层、应用层
TCP/IP模型的网络层只提供无连接的服务,但是传输层上同时提供两种通信模式。
④、网络参考模型简图:
⑤、OSI/RM七层简述:
物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。主要作用是在物理媒体上传输原始的数据比特流(bit)。
数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。将数据分成一个个数据帧(frame),以数据帧为单位传输。有应有答,遇错重发。
网络层:主要将从下层接收到的数据进行IP地址的封装与解封装。将数据分成一定长度的分组(数据包package),将分组穿过通信子网(即:下三层),从源端选择路径后传到目的端。
传输层:为会话层实体提供透明、可靠的数据传输服务,保证端到端的数据完整性;选择网络层的最适宜的服务;提供建立、维护和拆除传输连接功能。这一层传输的数据叫做段(segment)。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。完成通信进程的逻辑名字(IP地址)与物理名字(MAC地址)间的对应;提供会话管理服务。
表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。
应用层:主要是一些终端的应用。提供应用程序访问OSI环境的方式。可以理解为人们在电脑屏幕上能够看到的东西。
2、网络通信三要素:
①、IP地址(Internet Protocol Address):用来标识网络上的一台独立的主机。
特点:
- 由32个二进制位,即4个字节组成。每两个字节间用一个点(.)来分隔;例如:192.168.100.10
- IP地址通常用十进制数进行表示;
- IP地址可以分为A、B、C、D、E五类。比较常用的是ABC三类。
- IP地址 = 网络地址 + 主机地址
主机号:用于识别该网络中的主机。
- l IP地址分为IPV4、IPV6两类。
IP地址分类以及范围:
序号 |
地址分类 |
地址范围 |
1 |
A类 |
1.0.0.1~129.255.255.254 |
2 |
B类 |
128.0.0.1~191.255.255.254 |
3 |
C类 |
192.0.0.1~223.255.255.254 |
4 |
D类 |
224.0.0.1~239.255.255.254 |
5 |
E类 |
240.0.0.1~255.255.255.254 |
缺点:
IP地址都是由数字组成,不太方便记忆。(但是可以将IP地址和域名对应起来,利用DNS解析就可以通过域名得到IP地址,只需要记住比较好记的域名就可以了)
特殊的IP地址:127.0.0.1(本地回环地址、保留地址)可用于简单的测试网卡是否故障。表示本机。
②、端口号:用于标识进程的逻辑地址。不同的进程都有不同的端口标识。
端口:要将数据发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了方便称呼这些数字,则将这些数字称为端口。(此端口是一个逻辑端口)
有效端口:范围是0~65535,其中0~1024是系统使用或者保留端口。
③、传输协议:通讯的规则。例如:TCP、UDP协议
1、网络通讯步骤:
确定对端IP地址→ 确定应用程序端口 → 确定通讯协议
总结:网络通讯的过程其实就是一个(源端)不断封装数据包和(目的端)不断拆数据包的过程。
简单来说就是:发送方利用应用软件将上层应用程序产生的数据前后加上相应的层标识不断的往下层传输(封包过程),最终到达物理层通过看得见摸得着的物理层设备,例如:网线、光纤…等将数据包传输到数据接收方,然后接收方则通过完全相反的操作不断的读取和去除每一层的标识信息(拆包过程),最终将数据传递到最高层的指定的应用程序端口,并进行处理。
二、Java中网络通信三要素的体现
1、IP地址:在Java中,使用java.net包中的InetAddress类来描述IP地址。
2、InetAddress类的继承体系:
InetAddress
|--Inet4Address:用于表示IPV4
|--Inet6Address:用于表示IPV6