目录
前言:
1.网络发展史
2.网络通信基础
2.1IP地址
2.1.1定义
2.1.2格式
2.2端口号
2.2.1定义
2.2.2格式
2.3协议
2.3.1定义
2.3.2作用
2.3.3分层
2.4五元组
2.4.1定义
2.4.2组成
3.TCP/IP五层网络模型
3.1模型概念
3.2模型构成
3.3网络分层对应
3.4封装和分用
JavaEE大体主要分为:1.多线程编程;2.文件/IO;3.网络原理。
在介绍完JavaEE中多线程编程和文件/IO后,下边就是网络编程原理,这也是JavaEE中最重要、最核心的一部分内容。
本节主要介绍计算机网络通信的基础知识和发展史,以及通信理论原理。
序列:网络编程 - 001
互联网的发展经历了比较长的时间,在此之内,互联网一直在不断更新迭代,在这个时间段内主要有五个大的发展时代。
网络发展时代:独立模式(单机)->网络互联时代->局域网LAN->广域网LAN->移动互联网时代。
(1)独立模式(单机):计算机之间相互独立,并没有通信。
(2)网络互联时代:将多台计算机连接到一起,完成数据共享。
(3)局域网时代:局域内的计算机之间可以方便的进行通信。局域网与局域网之间没有连接的,无法进行通信。
(4)广域网时代:通过路由器将多个局域网连接起来的,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
(5)移动互联网时代:集成广域网的优点,且网络连接不在局限于固定的计算机,扩大至各种移动设备。
上图为广域网与其子网的结构图,在广域网与局域网之间并没有明显的界限而言。
数据共享的本质就是网络数据的传输,即计算机之间通过网络来传输数据也称网络通信。
网络互联的目的是进行网络通信,也就是网络数据的传输。更具体一点,网络主机不同进程间,基于网络进行数据的传输。
那么如何在庞大的互联网系统中知道网络数据是从哪个主机到哪个主机之间传输的吗?这就需要IP地址来标识计算机。
IP地址:主要用于标识网络主机和其他网络设备的网络地址。简单说:IP地址用来定位主机的网络地址。
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如00100101.00100010.10000010.00010010。
通常用“点分十进制”的方法表示,即a.b.c.d的形式(a、b、c、d都是0~255范围内的十进制整数),如:100.4.5.6。
在cmd命令行中输入ipconfig,可以查看计算机的IP地址为多少。127.0.0.1表示自引用时本主机IP地址。
端口号:在网络通信中IP地址用来标识主机的网络地址,端口号可以用来标识主机中发送、接收数据的进程。简单说:端口号就来定位主机中的进程。
一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口号。
端口号是0~65535范围内的数字。在网络通信中,进程可以通过绑定一个端口号,来发送、接收网络数据。
1~1023范围内的端口号为知名端口号,系统留作特殊用途。
协议:是网络通信经过所有网络设备都必须共同遵守的一组约定、规则。如怎样建立连接、怎样相互识别等。只有遵守这个约定,计算机之间才能相互进行通信交流。
协议(protocol)最终体现为在网络上传输的数据包格式。
为什么要有协议?计算机之间的传输媒介是光信号和电信号。通过“频率"和"强弱"来表示0和1这样的信息。
计算机之间要想传递各种不同的信息,就需要约定好双方的数据格式。
为了让这些不同厂商之间生产的计算机能够相互顺畅的通信,就需要约定一个共同的标准,大家都来遵守,这就是网络协议作用。
对于网络协议来说,往往分为几个层次来定义。
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。上层协议调用下层协议,下层协议会给上层协议提供支持,这样协议就不会出现混乱。
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):
在计算机通信中,有很多需要的信息,其中有五个核心的信息是必不可少的,称为网络通信“五元组”,每一次网络通信这五个信息都必须存在。
在cmd命令行中输入netstat -ano,可以查看网络传输中的五元组信息。
五元组的构成如下:
网络通信五元组模型图如下:
TCP/IP五层网络模型(是OSI七层模型的简化版本):是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
TCP/IP通讯协议层级构成如下:
网络设备所在分层:
上图为TCP/IP通讯协议各层级所对应的主要协议。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理。
各层协议封装图:
以上便是计算机网络通信的基础与原理。