✨哈喽,进来的小伙伴们,你们好耶!✨
🛰️🛰️系列专栏:【JavaEE】
✈️✈️本篇内容:网络初识之网络通信基础。
🚀🚀代码存放仓库gitee:JavaEE初阶代码存放!
⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,星夜启程!
目录
一、局域网
二、广域网
三、网络通信基础
一、IP地址
二、端口号
三、协议
四:协议分层
五、封装和分用
一、局域网
定义:局域网,即 Local Area Network,简称LAN。
局域网组建网络的方式:
4、基于交换机和路由器组建
这种的话就是咱们日常中最常见的情况。
路由器这里有两类端口:
WAN口。
LAN口。
其中插在lan口上的设备,在一个局域网里通过wan口连接到另外一个局域网。
路由器则是连接了两个局域网,LAN 口是一个,WAN 又连了一个。
实际上交换机和路由器之间的界限已经很模糊了,因为二者的功能基本是相通的。
二、广域网
定义:广域网(WAN)可以认为是比较大的局域网就组成了广域网,广域网与局域网也没有明确的界限,最大的广域网叫做Internet(因特网)。
三、网络通信基础
一、IP地址
二、端口号
三、协议
这里我们需要知道在网络通信的时候,本质上传输的是:光信号和电信号。通过光信号的频率(高频率/低频率) 电信号的电平(高电平/低电平) 来表示 0和1。那么如何知道这个0和1表示啥呢?
四:协议分层
那么对于我们程序员来说,我们需要打交道的是应用层,应用层以下的四层都是由操作系统和硬件设备驱动和网络接口来完成,这我们不需要太过关心。
1、一台主机,其实就对应了物理层到应用层 五层(把这五层都给实现了)。2、一台路由器,主要就是物理层到网络层 (主要是实现了物理层,数据链路层,网络层)。3、一台交换机,主要就是物理层到数据链路层(主要是实现了物理层,数据链路层)。
五、封装和分用
这组概念是网络分层中十分重要的,描述了不同的分层协议之间是如何相互交际的。
实例演示:
假设博主我现在需要在微信上给我的好朋友发一条消息,HELLO JAVA,当我在键盘上输入HELLO JAVA的时候,按下发送键。那么我们来观察一下各个层所干的事情。
应用层:应用程序微信
根据用户输入的内容,把数据构造成一个应用层的协议报文,即遵守了这个协议的一组数据,那么这个协议长啥样是由开发微信的程序员来约定的,不同程序中使用的应用层协议大概率是不同的,即咋们作为普通用户是不知道微信的应用协议是长啥样的。但是我们可以假设一种应用协议格式。
比如下面:这个协议格式就包括发送方A,接收方B,发送时间,发送内容。
应用层协议就调用操作系统提供的API,把应用层的数据交给传输层,即进入操作系统内核了。
传输层:(操作系统内核)
根据刚才传过来的数据,基于当前使用的传输层协议来构造储一个传输层的协议报文,其中最典型的协议比如UDP,TCP,这里以TCP为例。
这个构造TCP报文的过程可以看做是一个字符串拼接,其中TCP的报头中有很多信息,最重要的就是“源端口”和“目的端口”,可以理解为发件人和收件人的电话。接下来会把这个传输层的数据报交给网络层。
网络层:(操作系统内核)
拿到了完整的传输层数据报 就会再根据当前使用的网络层协议(例如 P),再次进行封装。 把 TCP 数据报构造成 IP 数据报,即还是添加上一个协议报头。
紧接着当前的网络层协议,就会把这个IP数据报交给数据链路层。
数据链路层(驱动程序)
在刚才的 IP 数据报基础上,根据当前使用的数据链路层的协议,给构造成一个 数据链路层的数据报典型的数据链路层的协议,叫做“以太网”,就会构造成一个“以太网数据帧"。
帧头里面存储的信息是接下来要传给硬件设备的地址是啥。IP协议里面写的地址是我出发的起点和到达的终点,比如我现在是要从北京到上海,以太网数据帧,帧头里面写的地址是接下来相邻节点的地址,我从北京到上海中间比如要经过石家庄,合肥,我人在北京,那么这里的地址写的就是石家庄,我人在石家庄,那么这里的地址写的就是合肥。
紧接着,数据链路层又会把这个数据交给物理层。
物理层(硬件设备)
物理层干的事情就是根据刚才的以太网数据帧把这里的0/1变成高低电平,通过网线传输出去,或者变成高频/低频电磁波,通过光纤/无线传播出去。
那么到这里,数据已经离开了当前主机,前往下一个设备了。
物理层(硬件设备)
主机 B 的网卡感知到了一组高低电平,然后就会把这些电平翻译成 0 1 的一串数据。然后这一串 0 1 就是一个完整的以太网数据帧。然后物理层就把这个数据交给了 数据链路层。
数据链路层(驱动)
数据链路层负责对这个数据进行解析,去掉帧头和帧尾,取出里面的 IP 数据报然后交给 网络层协议。
网络层(操作系统)
网络层协议(IP 协议) 又会对这个数据进行解析, 去掉协议报头,取出里面的 TCP 数据报再交给传输层。
传输层(操作系统内核)
传输层协议(TCP 协议)又会对这个数据进行解析,去 TCP 报头,取出里面的 TCP 数据报,交给应用层。
应用层:应用程序微信
应用层就会调用 socket API 从内核中读取到这个应用层数据报。再按照应用层协议进行解析,
根据解析结果给显示到窗口中。
那么刚才介绍的这个流程非常重要,一定要重点掌握!!
刚才只是介绍了从起点到终点单一过程,A和B之间还有很多的交换机和路由器,那么他们的工作流程是啥样的呢?
简单来说:A->B:
交换机先分用数据解析到数据链路层,更新以太网数据顿的顿头里的地址然后再重新封装,并进行转发。
路由器先分用数据到网络层,拿到 IP 地址之后进行下一阶段的路径规划,然后重新往下封装并进行转发。
无论网络多么复杂,这里整体的传输过程都是类似的.只是在不停的重复封装和分用的过程罢了!
OK,那么今天的学习就到这里啦,感谢大家的三连支持!!