• 网络初识


    网络

    局域网 

    一个区域的网

    广域网

    相对概念,没有绝对的界限,全世界现在最大的广域网,就教做TheInternet,万维网

     路由器   

    交换机和路由器,都是用来组建网络的重要设备

    交换机   

    上网的设备(电脑/手机/其他设备)

    路由器虽然有很多的网口,可以让你插网线,组网,但是实际上,路由器上的口可能不够用.此时就可以使用交换机,对接口进行拓展,(类似于电脑的扩展坞)

    连接到交换机上的这几个设备,彼此之间的通信不会相互影响和干扰.

    缺点: 下面这些设备,同一时刻总的上传下载带宽,不能超过最顶层路由器wan口的带宽确实真的超过了,就卡了,如果这个情况下不够用,就可以多办一个宽带

    集线器

    连在集线器上的设备之间,会打架同一时刻,只有一个设备,能访问到路由器,其他设备就得等待

    交换机集线器现在都属于是“自动完成数据转发的

    IP地址

    标识网络上的一个设备的位置通过位置找到这个设备,进行进一步的通信。

    IP地址,其实是32位的整数(IPv4)IP地址,就是4个字节的数字。

    使用3个.把上述ip地址分成4个部分.每个部分1个字节每个部分表示的范围[0-255

    端口号

    标识一个主机上不同的应用程序.要求,每个程序在启动的时候,就需要关联上之个和别人不重复的端口号。

    有的时候,可能会谈到,有的程序,是有固定的端口号的,这个说法源自于一个概念“知名端口号”上古时期,大佬们,为了避免当时的一些程序,端口之间发生冲突就给这些知名的程序,分配了不同的端口,

    协议

    是一种约定,通信双方,对于通信规则的约定一定是通信双方都得认可的。

    进行网络通信的时候,一定是需要通信协议的主要是,两个用来通信的主机设备,不同的硬件,不同的操作系统,不同的应用程序

    协议分层

    网络通信,是一个非常复杂的事情.这个过程中涉及到很多的细节问题如果你使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂

    拆分为多个协议

    某个方法,非常复杂了.就可以拆成多个方法某个类,非常复杂了,拆分成多个类某个文件,非常复杂了,拆分成多个文件.拆分,是为了管理复杂程度,不要让这个东西太复杂,每个部分负责一个功能

    分层,不乱的前提是,不能“越级”汇报工作~不能出现,员工直接找老板汇报这样的情况(以后咱们在工作中,也是职场上比较忌讳的事情)

    协议分层,也就是上述类似的效果,把很多协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题)上层协议会调用下层协议的功能,下层协议会给上层协议提供服务.(不能够"越级调用").

    分层之后,

    好处一:封装的效果某一层协议,不必知道其他层协议的细节.降低学习使用成本只要会说汉语,不需要理解电话的工作原理,就能打电话设计电话的人,可能是老外,不必懂汉语,也不妨碍他设计开发电话~

    好处二:任意层次的协议,都是可以灵活替换的解耦合.

    OSI七层模型

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

    可以认为是OSI的简化版本

    就是真实世界采取的网络分层模型

    咱们目前接触到的网络,大部分都是TCP/IP模型的(电脑上网)

    当然,也有不是的.4G/5G通信,就是一套专门的模型协议(手机流量上网)

    五层协议,具体是哪五层

    1)物理层硬件层面上的相关约定

    2)数据链路层 关注的是,通信过程中,两个相邻节点之间的通信

    3)网络层  关注的是通信中,,通信路径的规划规划出的路径,就决定了,数据要经过哪些节点点到点的传输

    4)传输层 关注的是通信双方的“起点"和"终点端到端的传输endpoint

    5)应用层 和具体应用程序直接相关传输的数据是干啥用的~~如何使用,有何意义~~

    举个例子

    就像快递一样

    1.是快递的基本信息(名称、用途、作用等)

    2.快递⚪具体走的位置,

    3.快递的规划路线,快递要走哪些地点。

    4.快递的起点位置和终点位置

    5.我在下单的时候就需要填写收件人信息地址+电话,快递上买家和卖家的双方信息。

    七层

    就是将应用层分为了三层

    路由器就是工作在网络层(三层转发)交换机就是工作在数据链路层(二层转发)。

    重点关注的是就是应用层+传输层

    协议的层和层之间,是如何配合工作的?

    协议的层和层之间

    上层协议调用下层协议

    下层协议给上层提供服务

    封装(Java面相对象的封装,不是一个封装)

    封装的步骤

    1.序列化

    .A通过QQ发送hello给BA在聊天窗口里,输入hello,点击发送

    .QQ应用程序,首先就会把上述要传递的内容,组织成“应用层数据包”.

    1.为了组织成字符串,就通过,来分割各个部分,使用\n结束标志

    发送人的qq号,接收人的qq号,发送时间,消息正文\n

    2.应用层数据包

    已经有了,QQ程序,就要调用系统的api来进行传输

    应用层接下来要把数据交给,传输层通过调用传输层的api,将应用层的数据交给传输层

    报头里放的是一些UDP相关的属性(比如发件人和收件人的端口号就在UDP报头中)

    3.网络层

    典型的协议IP协议

    IP数据包

     又进一步的调用数据链路层的api把上述IP数据包,交给数据链路层的协议

    这里的api往往是网卡的驱动程序提供的

    4.数据链路层

    典型协议 以太网

    以太网,也有自己的数据包格式,就会拿到上述IP数据包,进一步的封装

    5.物理层

    上述的以太网数据帧,本质上还是0101二进制数据硬件设备,要把上述二进制数据,转成光信号/电信号/电磁波才会真正进行发射,

    上述数据,并非是直接到达B,而是要先到和A连接的交换机/路由器数据经过交换机/路由器一系列转发之后,最终会到达B当数据到了B之后,又要做哪些事情呢?就是上述过程的“逆过程(拆快递)

     上述的以太网数据帧,本质上还是0101

    二进制数据硬件设备,要把上述二进制数据,转成光信号/电信号/电磁波才会真正进行发射.

    上述数据,并非是直接到达B,而是要先到和A连接的交换机/路由器数据经过交换机/路由器一系列转发之后,最终会到达B

    而接受数据就睡打开包装正好相反

    5.物理层

    收到一系列光电信号,把这些信号转成0101二进制数据,交给数据链路层

    4.数据链路层

    按照以太网协议,对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础,还需要拿到载荷数据)

    3.网络层

    IP协议拿到了IP数据包,按照协议格式进一步解析.解析报头中的关键信息,取出载荷

    2.应用层数据包

    拿着UDP数据包,按照UDP格式进一步解析,解析出关键的信息(要交给哪个端口号对应的进程),以及解析出载荷数据

    1.序列化

    1.QQ应用程序,首先就会把上述要传递的内容,组织成“应用层数据包”.

    QQ按照自己的协议格式,进行解析,拿到这里的结构化数据,显示到界面上,反序列化

  • 相关阅读:
    MySQL 篇
    18. 四数之和
    商业插画师走尺印象:只为做生活的设计师
    学成在线第二天
    处理机调度
    患有癌症的心力衰竭患者LVAD植入前景可期
    利用Anaconda安装pytorch和paddle深度学习环境
    华为OD机试 - 查找接口成功率最优时间段 - 回溯(Java 2023 B卷 100分)
    如何基于Next.js、Prisma、Postgres和Fastfy构建全栈APP?
    基于JAVA个人信息管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  • 原文地址:https://blog.csdn.net/Shootingmemory/article/details/138039800