前言👀~
上一章我们介绍了使用java代码操作文件,今天我们来聊聊网络的一些基础知识点,以便后续更深入的了解网络
局域网(LAN)
广域网(WAN)
路由器
交换机
网络通信基础
IP地址
端口号
协议(重要)
协议分层
OSI七层网络模型
TCP/IP五层网络模型(重要)
封装和分用
如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释。如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
个人主页:N_0050-CSDN博客
相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客 java EE_N_0050的博客-CSDN博客
网络
网络分为 网络原理 和 网络编程,网络通信:多台计算机连接在一起,完成数据共享,其实就是计算机之间通过网络进行数据传输,也可以说是网络数据传输
局域网(LAN)
本地,局部组建的一种私有网络,局域网内的主机之间能进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。局域网的范围固定,比如一个学校、一个工厂,覆盖范围小、传输效率快、延迟低,主要用于本地资源共享和通信
广域网(WAN)
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。其实就是一个个局域网通过路由器连接起来,可以看作是一个巨大的局域网,叫广域网。覆盖范围大、传输效率慢、延迟高,主要用于远程连接和数据传输
如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网
局域网和广域网的关系和区别:
就比如一家公司,有很多分公司在不同的地区,每家分公司可以看作是一个局域网。我们可以通过网络连接将所有的分公司进行连接,这样就能实现跨地通信,这种就叫广域网
路由器
可以想象平常我们的机房电脑就连接一个路由器那只能这几台电脑进行通信,但是如果路由路由之间再进行连接,逐渐就能形成一张巨大的网,更多电脑能进行通信,并且路由器可以连接外网,这样就可以实现我们在任何地方电脑都能进行通信
路由器一般有5个网口,1个WAN和4个LAN,WAN口用来连接上级路由器,LAN口插在路由器用于多个计算机在同一个局域网内进行通信,但是端口有限,所以引入交换机可以通过交换机连接到更多的设备,交换机也连接LAN口
交换机
在OSI模型的第二层(数据链路层),每个交换机都有一个MAC地址表(也叫地址转发表),记录了连接到每个端口的设备的MAC地址。通过查询这个表,交换机可以确定每个数据帧的转发路径,然后将数据帧转发到目的设备
交换机的端口无需特别配置,直接将其连接到路由器的LAN口,交换机用于扩展局域网内的连接点(就是可以连接更多的设备),有更多的端口(8、16、24或更多),可以连接更多的设备,并且连接到同一个网络方便进行网络通信
两者之间的区别:
路由器在网络层,路由器根据IP地址寻址,路由器可以处理TCP/IP协议,交换机不可以,交换机根据MAC地址寻址。交换机在数据链路层
路由器可以把一个IP分配给很多个主机使用,这些主机对外只表现出一个IP。交换机可以把很多主机连起来,这些主机对外各有各的IP
路由器可以连接不同类型的网络,并具备广域网连接能力,因此适合于构建大型企业网络或互联网接入。交换机则用于内部局域网中,用于连接多台设备
例子:我们每个人相当于主机,路由器相当于快递员,宿管相当于交换机,学校是一个局域网。快递员根据学校地址(IP)把包裹送到学校,再根据宿舍楼(子网IP)把快递交给这个宿舍楼的宿管,宿管根据你的名字(MAC)交给你
网络通信基础
IP地址
IP地址用于定位设备(例如主机、路由器等)的网络地址,可以这样理解就是描述我们的电脑在网络上的地址。IP地址在网络中的作用:用于设备之间的路由和网络定位,确保数据包能够在网络上找到目标设备。注意IP地址是可以变化的
格式:在计算机中,用一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)来表示地址,但是使用二进制来表示不方便。通常使用点分十进制来表示IP地址,用4个0-255之间的十进制数字,然后使用3个点分割开来表示IP地址
IP地址定位到了主机在网络上的地址了,但是数据传输到主机上后,由哪个程序接收呢?需要使用端口号进行标识
端口号
端口号用来区分主机上不同的应用程序,也可以说定位主机中的进程。不同的程序不能绑定同一个端口号,就像mysql的端口号绑定为3306,那你其他的的程序也绑定到这个端口号不就乱套了。但是一个程序可以绑定多个端口号
格式:系统端口号范围为 0 ~ 65535(2个字节),0 ~ 1023 一般是系统有特殊的用途我们一般不使用
可以把IP和端口号看作是一对,类似寄快递一个道理,有寄件人地址(源IP)、寄件人电话(源端口号)、收件人地址(目的IP)、收件人电话(目的端口号)、协议(快递公司)后面详细讲解
有了IP地址和端口号,可以定位到网络中唯一的一个进程,但是网络通信是使用二进制数据来进行传输的,需要告诉对方发送的数据是啥样的,这时候就需要使用协议来规定双方数据格式
协议(重要)
网络本质通过光/电信号来传输数据的,我们使用协议来规定双方数据格式,协议就是约定,类似黑帮进行交易,需要先约定带上双方想要的再进行交易,不然就是唰唰
五元组:
在TCP/IP协议中,用五元组来标识一个网络通信,下面这些是一次网络通信中必要的信息
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式
源的端口号和目的端口号在传输层,源IP和目的IP在网络层!!!
看不懂看下面这张
协议分层
对于网络协议来说,需要分成几个层次进行定义以及管理。按照协议的类型和作用进行分类,然后设置层级关系,上层调用调用下层,下层给上层提供支持,类似我们调用接口的意思,它的好处就是我们在调用接口的时候不用知道它底层是怎么实现的,我们只要会用这个接口,知道是干什么的就行了。接口也没必要知道我们是谁去调用它的并且它会将实现的细节封装好以免对其修改
分层的例子:就像一个大公司,老板下达指令,类似递归一样,把指令递下去,每层的领导接收指令,把指令递到员工那去进行处理,然后处理完再归回去,最后归到老板那有个响应。按照这样的方式进行通信,方便进行管理并且整体有秩序
OSI七层网络模型
OSI 七层模型既复杂又不实用,所以 OSI 七层模型没有落地、实现。仅仅出现在书上,让我们认识一下。大部分用的还是TCP/IP五层网络模型
TCP/IP五层网络模型(重要)
属于是OSI七层网络模型的简化版,把OSI中的应用层、表示层、会话层合并成一个应用层。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
举个例子说明每个层:比如我们在淘宝买了件衣服,你还可以选择买裤子等其他物品这属于应用层。然后商家收到我们的订单相关的信息例如收件人、电话等信息这属于传输层。然后商家叫了快递公司来处理,快递公司选择合适的路径(会考虑很多例如效率、成本等因素)例如上海到杭州到绍兴进行运送这属于网络层。然后需要考虑相邻的地方该怎么运送,比如上海到杭州用铁路进行运送,杭州到绍兴用飞机进行运送这属于数据链路层。最后就是使用交通设备进行运送这属于物理层。后面的封装和分用还会举个例子进行讲解
物理层:数据链路层的数据帧转为二进制数,通过物理介质(例如电缆、光纤等)传输
数据链路层:负责将数据帧在同一局域网上传输,关注相邻节点之间的传输细节,交换机在的层
网络层:负责在不同网络之间传输数据包,并且选择最佳路径,关注的是通信中的路线规划,路由器在的层
传输层:提供端到端的通信服务,确保数据完整传输。关注通信的起点和终点
应用层:直接与应用程序交互,提供网络服务
网络设备所在分层:
对于一台主机来说,它的操作系统内核实现了传输层到物理层的内容
对于一路由器来说,它实现了网络层到物理层
对于一个交换机来说,它实现了数据链路层到物理层
对于一个集线器来说,它实现了物理层
封装和分用
描述网络通信过程中数据传输的流程,下面举个发送信息的例子,先讲封装,其实就类似发快递
发送方
应用层:
我们使用聊天程序给某某发送消息,wx就会把我们输入的java打包成一个应用层的数据包(格式只有wx程序员知道)使用字符串进行拼接,就像寄快递的时候我们自己给这个物品加个包装打包,到了快递员(传输层)那又会进行打包。应用层的协议可以由程序员灵活调整
然后把应用层的数据包通过操作系统的api传输给传输层进行处理
传输层:
传输层的协议例如TCP、UDP。把应用层的数据包再进行打包也就是使用字符串进行拼接上传输层的包头例如TCP、UDP,变成属于传输层的数据包。一个数据包=报头(header)+载荷(payload)
此时传输层的数据包=UDP报头+后面应用层的数据包(也就是包头的载荷)。UDP的报头是一个二进制数据包含的关键信息就是源的端口号和目的端口号,然后这就打包好了,例如寄显示屏的时候给它贴了个标签是易碎物品并且加点保护手段这样能降低碎的可能性
记住源的端口号和目的端口号在传输层!传输层的数据包处理好了然后传给网络层进行处理
网络层:
网络层最主要的协议就是IP协议,网络层也是一样给把传输层的数据包再进行打包使用字符串进行拼接上IP报头,,变成属于网络层的数据包
此时网络层的数据包=IP报头+UDP报头+应用层的数据包(也就是IP包头的载荷)。IP包头中包含很多属性,最重要的就是源IP和目的IP
记住源IP和目的IP在网络层!网络层的数据包处理好了然后传给数据链路层进行处理
数据链路层:
数据链路层典型的协议就是以太网,此处以太用来表示网络数据传输的介质,数据链路层会把网络层的数据包再进行打包使用字符串进行拼接上以太网帧头并且加上一个帧尾,,变成属于数据链路层的数据包
此时数据链路层的数据包=以太网帧头+IP包头+UDP包头+应用层的数据包(也就是以太网包头的载荷)+帧尾。以太网包头中也包含很多属性,最重要的就是源MAC地址和目的MAC地址(描述网卡/网络适配器的地址)
什么是网卡/网络适配器?一块被设计用来允许计算机在 计算机网络 上进行通讯的计算机硬件,在被制造出来的时候就有个固定的地址了。我们一般使用MAC地址来标识网卡/网络适配器。在一个局域网内,设备之间通过MAC地址进行通信,确保数据帧能够找到正确的网卡
然后数据链路层的数据包处理好了然后传给物理层进行处理
物理层:
把上面的以太网数据帧,二进制结构数据就是0、1这种,转换成光/电信号进行传输。从一开始的上层协议到下层协议,每一层都加上了包头其实就是进行了封装
传输过程碰到路由器:数据传输出去后,经过交换机和路由器进行转发,可以想象我们电脑之间能进行通信是因为上面有一堆的交换机和路由器。注意一下在经过路由器的时候,一样的道理物理层接收光电信号转成二进制数据交给数据链路层,数据链路层同样的操作,解析然后取出载荷部分交给网络层,接着网络层进行解析它会选择最佳的路径去进行转发,然后再进行封装到数据链路层再到物理层进行传输,如果又碰到路由器还是一样的操作
传输过程碰到交换机:但是如果经过的是交换机的话就也是一样,物理层把光电信号转换成二进制传给数据链路层,然后数据链路层进行解析取出载荷部分,根据载荷部分的信息决定下一步把数据往哪里发送,然后再创建新的包头和包尾然后封装交给物理层,物理层在传出去。然后当数据到接收方那边要对数据进行解析(分用),也就是拆快递
接收方
物理层:接收到发送方传来的光电信号转成二进制数据,拿到以太网帧头,交给数据链路层进行处理
数据链路层:使用以太网协议针对以太网的数据包进行解析,把包头和包尾拿出来,把载荷部分丢给网络层进行处理
网络层:使用IP协议针对网络层的数据包进行解析,把IP包头拿出来解析,再把载荷部分丢给传输层进行处理
传输层:使用UDP协议针对传输层的数据包进行解析,把UDP包头拿出来解析,再把载荷部分丢给应用层进行处理
应用层:把传输层传来的数据根据端口号丢给对应的程序,然后wx这个程序对这里面的数据进行解析,怎么解析的是根据程序员自定义的应用层协议来解析的
整个流程总结:你发送的消息经过层层封装转换为物理信号(例如光/电信号等)进行传输,首先会在当前局域网进行判断然后再到本地路由,本地路由会进行封装分用选择合适的路径,然后在途中碰到其他的路由器都会进行封装分用选择合适的路径,直到接近目标网络。到了最终路由器再进行封装分用,通过APR协议解析IP地址到MAC地址,如果没有找到对应的MAC地址,路由器会发送广播请求,目标设备会进行回应提供MAC地址,然后实现局域网内的传输最终到达目标设备