网络基础知识

网络常识

局域网:在一块地区内部可以进行内部通信,超过这个范围就不行

广域网:把很多个局域网连在一起组成广域网(The Internet)因特网是世界最大的广域网

路由器:让不同的设备,不同的局域网能相互连接

交换机:对路由器接口进行扩展(可以理解为排插)

光猫和路由器有什么区别?

举例子:

现在我要使用手机访问百度,我向百度发起了请求,这个时候,路由器会收到我的请求,然后转发给光猫,光猫接收到这个请求,就会访问然后把数据原路返回,如果是在内部传输就不用经过光猫,比如手机给电脑传文件(必须在同一个局域网下)

光猫的角色:相当于你家小区的 "快递收发室"------ 运营商的光纤(快递运输车)把互联网信号送到小区,光猫负责把 "光纤里的光信号" 转换成你家网线能识别的 "电信号"(把快递从运输车转到小区内部货架),并完成运营商的身份验证(确认是你家的快递)。没有光猫,你家根本接不通运营商的网络,连不上互联网的 "大门"。

路由器的角色:相当于你家的 "快递分拣员 + 配送员"------ 从光猫拿到互联网信号后,路由器把信号分发给家里的手机、电脑、电视(给每个设备分配 "房间号" 即私有 IP),同时帮设备转发数据。没有路由器,你家只能有一台设备通过网线连光猫上网,无法实现多设备共享、WiFi 连接。

协议

什么叫做协议?

协议就类似于约定,就比如你我之间进行的沟通,如果我们都使用普通话沟通,你能听懂我讲什么,我问也能听得懂你讲什么,这个就是普通话协议,就好比你现在在看我的文章,这个就叫做汉字协议。

在网络中,只有遵守同一套协议,彼此之间才能知道数据代表的含义,否则就是对牛弹琴,传个啥都不知道

网络通讯的五元组

源IP,源端口

目的IP,目的端口

协议类型

举例子:我从家里来,去学校找老师学习

每进行一次网络通讯,就会涉及到这五元组

我就是源端口,家里就是我的源IP,学校是我的目的IP,老师就是我的目的端口

协议分层

在网络协议中,是非常复杂的,所以就会把这一个大的协议拆分开成很多个小协议,但是小协议也太多了,所以就会把这些小协议按照功能分类

在分层中,我们规定只有相邻的两层协议之间可以进行交互,上层可以调用下层,下层的要给上层提供服务,每一层之间都是都是封装好的,不需要了解下层协议的具体细节,这样就能很好的解耦合,让每一层的工作更加独立

举例子:

在公司中,不允许存在越级报告,并且领导可以让员工干活,员工需要满足领导的需求。

举例子

在这张图片中,最上层的人打电话不需要知道电话机的工作原理,他们只要会说汉语,沟通的时候遵守汉语协议,那么就能进行沟通,这就是因为每一层都是封装好的,上层不需要了解下层的协议。

其次就是解耦合

在这张图片中,他们使用无线电进行沟通,也不会影响到汉语协议,这就是因为解耦合,每一个都是相互独立的,就算使用英语沟通,也不会影响到电话协议,也是因为解耦合。

教科书式分层

OSI七层网络模型

这一模型太过于复杂,实际的真实网络模型其实更简单一点

TCP/IP五层(四层)网络模型

越往上就越偏向于软件越往下就越偏向于硬件

物理层:网线,WiFi,光纤......(类似于修路)

数据链路层:相邻的设备是如何进行通讯的,如用网线连接路由器和电脑,电脑和交换机,交换机和路由...

网络层:任意的两个设备之间如何进行通讯,通讯的过程是怎么进行的

传输层:两个设备之间的通讯不考虑过程

应用层:收到消息后该干啥

举例子

假设我现在在淘宝买了一个衣服,那么这个时候,路就是物理层,没有路就没办法送到我手上,快递小哥他不关心这个里面是啥,他只关注把这个快递送到下一个节点(数据链路层),物流公司就要关注这个快递要怎么送,走哪里最快最好(网络层),卖家只需要关心收件人的消息(传输层),收到衣服之后我要穿还是干啥都随我(应用层)

第二个例子

TCP/IP四层协议就是把物理层和数据链路层看作一层,因为物理层和数据链路层具有很强的耦合性,物理层对数据链路层的影响很大

OSI模型和TCP/IP模型基本上是一样的只是叫法不一样

传输层和互联网层我们是没办法实现的,是操作系统内核实现的,我们最多也只能调用传输层的API给应用层提供服务

经典面试题

主机工作过程:在物理层到应用层

路由器的工作过程:从物理层到网络层

交换机工作过程:物理层到数据链路层

网络数据通讯的基本流程

网络中的传输,本质上都是字符串或者二进制的bit流(大了传不动,所以要拆分开),只有序列化了数据才能进行传输。

在网络中发送数据的时候,会把结构化数据,变成二进制的bit流进行传输(序列化)

接收数据时,会把bit流解析为结构化数据(反序列化)

假设现在使用QQ发送hello给对方

  1. 应用程序获取到用户输入,会构造一个应用层的数据包,这个数据包会以程序员规定的应用层协议进行传输。

假设格式是发送者的QQ,接受者QQ,消息时间,消息正文

  1. 应用程序调用传输层提供的接口(API),把数据交给传输层,传输层在拿到这个数据之后,就会构造出一个传输层的传输数据包

传输层的协议主要是TCP/UDP

假设使用TCP

传输层会在应用程序包的基础上加上一个TCP报头

TCP数据包 =TCP报头 + TCP载荷(payload)

TCP报头里面会包含TCP的相关属性,源端口/目的端口(谁和谁)

  1. 传输层构造好之后,就会调用网络层的接口(API),把传输层的数据包交给网络层,网络层也会继续处理,狗找一个网络数据包

网络层的主要协议是IP协议

IP协议会继续对传输层数据包进行加工,加上一个IP报头

IP数据包 =IP报头+IP载荷(payload)(整个传输层数据包)

  1. 网络层构造好之后就会继续调用数据链路层的接口(API),把网络层的数据包交给数据链路层

数据链路层的核心协议是以太网

以太网协议会继续对网络层的数据包进行加工,加上一个报头和报尾

以太网数据包 =以太网报头 + 载荷(payload)(网络数据包)+ 报尾

此刻,数据终于完成了封装的过程,还没出门(有点像女朋友出门前化妆)

  1. 以太网会把这样的数据交给物理层,如网卡

网卡会把数据转化成二进制的数据,最后以光信号/电信号/电磁波信号等方式传播。

这个时候,数据才算是真的传输出去了

总结

在这个过程中就相当于一步步封装,把内容一步步通过各项协议封装好,就好像女朋友出门之前,要美美的化妆,好好的搭配,最后才会出门(女朋友素颜也好看💗)。

分用

数据到达对方的主机,逐层进行解析

  1. 数据到达对方的网卡,对方的网卡会把光电,电磁信号转化成二进制,然后把这些数据交给数据链路层
  2. 数据链路层根据核心协议来解析二进制,取出报头和报尾,然后剩下的载荷传给网络层
  1. 网络层接收到数据链路层的载荷,会根据协议IP协议,取出报头,然后把载荷交给传输层
  1. 传输层收到数据之后,会根据协议TCP或UDP来取出报头解析,会根据端口号把载荷交给应用层中的具体程序
  2. QQ程序收到之后,会解析应用层的数据然后拿到关键消息,给出提示

传输的过程中也是涉及到封装分用的

交换机:只需要封装到数据链路层即可(二层转发,在数据链路层工作)

主机的数据到交换机

交换机收到消息之后,会在物理层解析,然后构造成新的以太网数据包

路由器:只需封装到网络层即可(三层转发,在网络层工作)

路由器收到消息之后,会在物理层解析,然后传给数据链路层,然后在传给网络层,构造出网络数据包,以太网数据包,二进制数据

相关推荐
Ulana8 小时前
计算机基础10大高频考题解析
java·人工智能·算法
黄俊懿8 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——@GlobalTransactional注解与@globalLock生效的原理
java·spring cloud·微服务·云原生·架构·系统架构·架构师
wheelmouse77888 小时前
一个优雅、通用、零侵入的 CSV 导出工具类(Java 实战)
java·开发语言
kissgoodbye20129 小时前
cadence学习之基础知识
网络·学习
cike_y9 小时前
JavaWeb-Request应用与Cookie&[特殊字符]️Session
java·开发语言·安全·java安全
hashiqimiya9 小时前
两个步骤,打包war,tomcat使用war包
java·服务器·前端
大筒木老辈子9 小时前
C++笔记---并发支持库(atomic)
java·c++·笔记
Cricyta Sevina9 小时前
Java Collection 集合进阶知识笔记
java·笔记·python·collection集合
BD_Marathon10 小时前
【JavaWeb】Servlet_url-pattern的一些特殊写法问题
java·开发语言·servlet