初识网络(JavaEE初阶系列9)

目录

前言:

1.网络的发展史

1.1独立模式

1.2网络互联

1.3局域网LAN

1.4广域网WAN

2.网络通信基础

2.1IP地址

2.2端口号

3.认识协议

3.1协议分层

3.2分层的作用

3.3TCP/IP五层(或四层)模型

3.4OSI七层模型

3.5网络设备所在分层

4.封装和分用

结束语:


前言:

1.网络的发展史

网络的主要发展大体可以分为这四个阶段单机阶段=>局域网阶段=>广域网阶段=>移动互联网阶段

1.1独立模式

独立模式就是计算机之间是相互独立的。

1.2网络互联

随着时代的发展,越来越需要计算机之间相互通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

网络互连:就是将多态计算机连接在一起,完成数据共享。

数据共享的本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信

根据网络互连的规模的不同,可以划分为局域网广域网。下面就来给大家介绍一下什么是局域网,什么是广域网。

1.3局域网LAN

局域网即Local Area Network,简称LAN。Local即标识了局域网是本地,局部组件的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网局域网和局域网之间在没有连接的情况下是无法进行通信。他就是把一些设备通过交换机/路由器连接起来。

1.4广域网WAN

广域网即Wide Area Network,简称为WAK,广域网就是把更多的局域网也相互连接起来,当规模足够大的时候就变成了广域网。更官方的解释就是通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都是属于其子网。

在上述谈到的交换机和路由器是组网过程中的重要设备。

2.网络通信基础

网络互连的目的是进行网络通信,也是网络数据传输,更具体一点是网络主机中的不同进程间,基于网络传输数据。那么我们在组建网络中如何判断到底是从哪台主机将数据传输到哪台主机呢?这就需要使用IP地址来标识。具体的我们往下看。

2.1IP地址

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说IP地址用于定位主机的网络地址。就像是我们发快递一样需要知道对方的收货地址,快递员才能将快递送到目的地。

格式:
IP地址是一个32位的二进制数,通常被分隔为4个“8位二进制数”(也就是4个字节),但是通常是用“点分十进制”的方式来表示的,比如:192.168.0.136的形式。或者是你可以打开cmd输入ipconfig命令即可查看。

初识网络(JavaEE初阶系列9)_第1张图片

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

2.2端口号

上述的IP是定位大体的位置,但是就像是快递员送包裹一样虽然送到指定的地址也就是收货地址(IP地址)了,但是那么多的人,到底是送给哪一个人也就是收货人(端口号)的,这就需要继续定位了,所以这里的端口号就是用来定位是该主机上的哪一个程序(进程)的。

注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号!!!

3.认识协议

通过上述的介绍相信大家大体对IP和端口号都有了一定的了解,但是此时有了IP地址和端口号,我们是可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”,这里我们又该如何标识发送的数据是文本类型,及文本的编码格式呢?基于网络数据传输,就需要使用协议来规定双方的数据格式。

3.1协议分层

对于网络协议来说,往往分成几个层次进行定义。那么在网络通信中约定的协议其实是非常复杂的,那么面对这种复杂的环境,就需要一个复杂的协议,但是协议太复杂也不好,所以就将协议进行了分层,这就相当于是约定了层级和层级之间的调用关系,要求上层协议调用下层协议,下层协议给上层提供支持,不能跨层调用。怎么对这个进行理解呢?我们可以通过在公司中的层级关系来进行理解。如下图所示:

初识网络(JavaEE初阶系列9)_第2张图片

如上所示就是一种层级结构。 

3.2分层的作用

那么分层之后又有什么作用呢?

如果协议分层之后就可以做到一下两点:

  • 层次之间,耦合度比较低,上层协议不必了解下层的细节,下层也不必了解上层的细节。
  • 方便对某一层的协议进行替换。

3.3TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,分别是:物理层、数据链路层、网络层、传输层和应用层,每一层都有自己的任务和责任,通过不同层次之间的协调和合作,实现了计算机之间的数据传输。

具体内容如下所示:

  • 物理层:物理层是网络通信的最低层,主要负责将数字信号转换成物理信号,例如电信号、光信号等,然后通过物理介质(例如电缆、光纤等)进行传输。(网络通信的基础设施)
  • 数据链路层:数据链路层负责将物理层传输的数据进行分帧和差错检测,确保数据的可靠传输,同时也负责寻址和流量控制等功能。(主要关注的是两个相邻节点之间的传输)
  • 网络层:网络层主要负责数据的路由和转发,将数据包从源主机传输到目标主机,在路由选择方面,网络层采用了一些算法和协议,例如IP协议和路由选择协议等。(主要负责两个遥远节点之间,路径规划)
  • 传输层:传输层主要负责数据传输的可靠性和数据流量的控制。TCP协议是传输层协议的一种,它能够保证数据传输的可靠性,并且通过拥塞控制等机制,保证了网络流量的合理分配。(不考虑中间的路径,只关注起点和终点)
  • 应用层:引用层是网络通信的最高层,他负责实现应用程序之间的通信,常见的引用层协议包括HTTP、FTP、SMTP等,他们提供了数据交换的标准格式和规范,使得不同操作系统和应用程序之间能够进行数据的交换和共享。(关注传输过来的数据是要干啥的)

物理层针对于程序猿来说可能考虑的会比较少,所以很多时候也可以称之为TCP/IP四层模型。

3.4OSI七层模型

OSI参考模型与TCP/IP参考模型对比图如下所示:

初识网络(JavaEE初阶系列9)_第3张图片

3.5网络设备所在分层

  • 对于一台主机来说,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层。
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层。
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层。
  • 对于集线器,它只实现了物理层。

4.封装和分用

那么在协议的背景下,数据如何通过网络来进行传输呢?我们可以采用封装分用。主要的过程如下所示:

  • 发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装。
  • 接收方收到数据,要把数据从下到上,依次交给对应的层次的协议,进行解析。

封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装

分用:数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

下面我们通过QQ发送一条短信为例,来讲解封装和分用的整个过程,比如现在A要发送给B一条短信:“网络基础知识”。

封装:

  • 应用层(QQ应用程序):拿到上述用户数据进行封装,封装成应用层数据包。

初识网络(JavaEE初阶系列9)_第4张图片

  • 传输层:拿到上述传来的数据之后,应用层要调用传输层提供的API,来处理这个数据,传输层有很多协议,最典型的就是UDP和TCP,此处我们以UDP为例。(注:这两个协议小编会在后续的博客中给大家慢慢交代的)

UDP会针对上述数据包再进行封装,首先他会把上述整个应用层数据包作为UDP数据包的数据部分(载荷)。然后再在前面加上UDP数据报头。

初识网络(JavaEE初阶系列9)_第5张图片

  • 由传输层到网络层:UDP数据报已经有了,接下来就要把这个数据报交给网络层的协议。网络层最常见的就是IP协议。在上述的基础上还需要再加上一个IP协议的报头,此时是让整个UDP作为IP的载荷。

初识网络(JavaEE初阶系列9)_第6张图片

注意:这里的源IP和目的IP就是在这次传输过程中,最初的起点和终点。 

  • 网络层交给数据链路层:最典型的协议叫做以太网。这里是将上述的整体再次作为载荷然后在首部和尾部分别加上以太网帧头和以太网帧尾。

初识网络(JavaEE初阶系列9)_第7张图片

注意:这里的mac也是用来描述地址的,他叫做物理地址,IP是用来进行网络层的路径规划的,而mac是用来描述数据链路层的,他是描述两个即将进行传输的相邻节点。拿运输快递来举例子,如果快递的地址是从郑州->西安,那么IP地址的源IP就是郑州,而目的IP就是西安,是一直不变的,但是从浙江到西安还需要经过很多其他站点,比如说是郑州-> 洛阳 ->三门峡 -> 西安。所以这里的mac地址就相当于是每到一个站点就会更新一下自己的源mac和目的mac。

  • 数据链路层到物理层:此时物理层就要将上述的0101的二进制数据转换成光信号/电信号/电磁波信号然后进行传输。

分用:
经过上述的过程操作系统就帮助咱们已经封装好了,然后接下来就是接收了,接收与上述过程更好相反。发送是从上到下依次封装,新增报头。接收是从下到上,依次分用,去掉报头。

  • 物理层:

网卡,接收到高低电平二进制数据,就会对这里的信号进行解析,还原成0101这样的二进制序列。

  • 从物理层到数据链路层:

此时就把上述的0101这种序列数据当做一个以太网数据帧(此处是以太网线,收到的数据,就是要交给以太网协议来处理了)。

此时将帧头和帧尾去掉,取出中间的载荷部分,再往上交给网络层。此时以太网数据帧头中会有一个消息类型,根据这个类型就知道了网络层是IP协议了。

  • 从数据链路层到网络层: 

初识网络(JavaEE初阶系列9)_第8张图片

此时就由网络层的IP协议进行解析数据报,也是去掉IP报头,同时还会做一些其他工作,最重要的还是取出载荷,然后交给上层的传输层协议。在IP数据报也有一个字段会标识当前传输层用的是哪一个协议。

  • 从网络层到传输层:

初识网络(JavaEE初阶系列9)_第9张图片

此处是由UDP来解析处理,还是去掉报头,取出载荷,把数据交给应用层。此时借助端口号来区分具体的应用程序。

  • 从传输层到应用层:

初识网络(JavaEE初阶系列9)_第10张图片 接下来就由QQ这个程序,进行解析应用层数据报。

 总结一下:

  • 发送方就是在层层封装,就像是在包装快递。
  • 接收方就是在层层分用,就像是在拆快递。

注意:

  • 不同的协议层对数据包有不同的称谓,在传输层叫做“段”,在网络层叫做“数据报”,在链路层叫做“帧”
  • 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。
  • 上述里面的信息都是简单给大家举个例子,不是真的只包含这些东西,也不一定包含上述的信息。

结束语:

这节中小编主要是与大家分享了网络方面的一些基础知识,后期小编还会继续出有关于网络方面的知识的,希望这节对大家了解网络有一定帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

你可能感兴趣的:(JavaEE初阶,网络,服务器,运维)