• 认识一些网络的基础知识


    以下是本篇文章讲解的内容,对一些网络的基本概念进行梳理:

    目录

    网络基础

    IP地址

    特殊的IP地址

    端口号

    协议

    协议分层

     分层的作用

    粗略的讲解每一层的作用

    封装和分用

    两台主机通信的具体流程

    客户端与服务器

    理解请求和响应


    网络基础

    • 啥是网络?? 网络的作用???

    网络就是将多台计算机连接在一起,从而进行数据共享就完成了网络间的通信.

    网络的作用就是完成多台主机之间的通信,具体来说是网络中不同进程之间的通信,来实现数据共享.

    • 局域网 or 广域网

    局域网就是通过网线直连,集线器,交换机,路由器等等将多台主机连接在一起就形成了局域网.而多个局域网相互联系在一起就形成了庞大的广域网.

    这里有个重要的知识点 : 交换机在数据链路层 而 路由器在网络层

    我们以上介绍了网络的作用就是实现网络之间的通信,那么如何进行通信.

    比如,我要给某个人发送信息,那这条信息是发给哪个主机呢?? 发给主机的哪个进程呢 ??

    这就相当于快递员送快递一样,快递员根据邮件地址确认将货送到哪里,然后根据包裹上写的电话号就知道这个包裹要给谁.

    而这里收货地址就相当于网络中的IP地址(知道发信息发给哪个主机),而电话号码就相当于网络中的端口号(知道发给主机的哪个进程(正在运行的应用程序)).

    IP地址

    IP地址就是确定发给哪个主机,IP地址是主机的唯一身份标识.

    IP地址主要用来标识主机及网络设备的地址===>用于定位主机的网络地址.

    (所以当我们发送消息时,必须要有IP地址,也就知道你发送给哪台主机,换句话说送快递的时候必须要知道邮件地址,知道送到哪里去).

    特殊的IP地址

    这里还有特殊的IP地址==>环回IP地址==>127.0.0.1

    什么是环回地址呢??

    也就是本机到本机之间的网络通信==>自己给自己发,一般用于测试.

    端口号

    既然IP地址确定发送信息发给哪台主机,我们还要确定将信息发送给主机中的哪个应用程序/进程.

    端口号就是确定发送给主机中的哪个进程.

    端口号用来标识接收数据和发送数据的进程==>用来标识主机中的进程.

    (当我们将信息确定发给那台主机,还要确定发给主机中的哪个应用程序/进程这就需要端口号来表示,换句话说,快递员到达收货地址的地点就需要进一步确定我要发送给哪个人->需要打电话号码确定这个货是谁的-->电话号码<=>端口号)

    • 端口号的范围为 0~65535
    • 需要将进程绑定端口号,将进程与端口号联系在一起
    • 一个进程可以有多个端口号,而一个端口号不能被多个进程绑定(这就相当于一个人可以绑定多个手机号,但是一个手机号不能被多个人的身份证绑定在一起).

    0 ~ 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用其他 1024~65535 范围内的端口来绑定知名协议。

    这里还要注意:

    服务器的端口号需要我们自己指定:因为客户端给服务器发送信息时需要确定发送到哪里(也就是要知道IP地址和端口号),客户端在发送数据时要填写将数据发送到哪个IP地址,哪个端口号,所以服务器的端口号需要我们自己指定.

    但客户端的端口号一般是随机分配的,不必关系客户端的端口号.

    协议

    为啥要有协议呢??

    就像人说话一样,我们都是用同样国家的语言才能进行沟通,如果一个中国人只懂中文,而一个韩国人只会韩语,那么两个人是不能进行沟通的,所以我们人人都按照约定(也就是相同的语言)就能够很好地沟通和交流.

    对于计算机也一样,不同的计算机会有不同的操作系统,不同的硬件厂商,不同的主机设备.....如果都按照一定的约定进行通信,那么就可以保证良好的通信=====>这就是协议(约定).

    协议一般是通过数据包发送的.

    协议分层

    接下来还有一个问题就是网络通信十分的复杂,如果只需要一个协议就把所有的都约定好,那么这个协议将会是很复杂的,所以我们就有了协议分层.

    将协议分为不同的层次,每一层都做类似的事情===>协议分层

    协议的分层方式

    • OSI七层网络模型  

    • TCP/IP五层网络模型

     分层的作用

    • 更好的体现封装

    对于接收方不必关心实心细节只需要调用接口实现即可.

    对于发送方将细节隐藏,暴露出接口让其调用即可.

    • 解耦合

    可以将同一层的协议换层其他协议,其它层的协议无感知.

    粗略的讲解每一层的作用

    这里以TCP/IP五层模型为例,分别有 物理层,数据链路层,网络层,传输层,应用层,五层的关系是上层调用下层,下层为上层提供服务.

    • 物理层 : 进行网络通信的一些基础设施
    • 数据链路层/网络接口层 : 负责相邻节点之间是如何传输的
    • 网络层 : 负责两个节点(起点-终点)之间的路径规划 
    • 传输层 : 负责两个节点(起点到终点)的通信/传输(是从哪里到哪里的传输);
    • 应用层 : 在最上层只关注为用户提供功能.

    封装和分用

    我们在每一层协议的传输数据包的名字都各不相同传输层叫做"段",网络层叫做"包",数据链路层叫做"帧"  我们都可以将其统称为数据包.

    • 封装和分用的过程

    封装和分用的过程正是两个主机间进行通信的过程.

    在从一台主机将信息交给目的主机时,都会在每一层加上数据首部(数据首部包括数据首部长度,载荷长度,上一层协议的信息,发送端及接收端地址等等一些必要的信息),在应用层将数据封装好,接下来到传输层(如果是用UDP)就加上UDP首部,接下来到达网络层再加上IP数据首部,到达数据链路层加上帧头帧尾封装成"",发送到传输介质中,到达目的地主机时,拆掉对应的数据首部,取出上层协议字段,依次传递给上一层==>传递信息的逆序依次拆掉对应的协议的数据首部,最终到达应用层取出数据显示给用户即可.

    在将信息发送给目的主机时每到达一层就加上对应协议的数据首部,到达目的主机时,拆掉对应数据首部,取出上层协议字段,依次传递给上层.

    两台主机通信的具体流程

    • 封装过程 :

    • 分用过程 

    • 目的地主机收到以太网数据帧,拆掉对应的帧头帧尾,看MAC地址是否与自己的MAC地址一致,如果一致就取出上层协议的字段传递给上一层(网络层),如果不一致就将其丢弃
    • 传递给网络层,网络层拆掉对应数据首部,检查IP地址是否一致,如果一致交给上一层处理(运输层(UDP/TCP))
    • 如果传输层用的是UDP协议,就拆掉UDP数据首部,检查对应端口号,计算校验和,是否一致,如果是TCP协议也是检查端口号,数据是否一致,如果不一致TCP可能触发自己的特殊机制
    • 接下来传给应用层,将数据取出来,显示给用户

    上层协议在传递给下层协议时加上对应的数据首部,在进行解析时下层协议拆掉对应数据首部取出关键信息进行检查,然后传递给上一层,就这样上层协议调用下层协议,下层协议为上一层协议提供服务,完成了整个封装和分用的过程.

    客户端与服务器

    客户端 : 客户端是指发送数据的一方(理解为餐馆的客人要点菜)

    服务器 : 服务器是指接收数据的一方(可以理解为餐馆==>不知道客人什么时候来要长时间运行)

    理解请求和响应

    请求 : 客户端给服务器发送的数据叫做请求.

    响应 : 服务器给客户单返回的数据叫做响应.

    • 客户端与服务器的交互方式

    一问一答

    客户端给服务器发送个请求,服务器返回一个响应==>打电话(你说一句我说一句)

    一问多答

    客户端发送一个请求,服务器返回多个响应(比如下载文件,由于文件过多,服务器要做多次响应)

    多问一答

    客户端发送多个请求,服务器返回一个响应(比如上传文件,需要多次上传,服务器只显示上传成功)

    多问多答

    客户端发送多个请求,服务器返回多个响应(比如远程控制)

    • 理解长连接和短连接

    长连接 : 一次连接中相互传输多条数据

    短连接 : 一次连接中只相互传输一条数据

  • 相关阅读:
    Codeforces Round #779 (Div. 2)
    二十、处理器调度(RR时间片轮转,MLFQ多级反馈队列,CFS完全公平调度器,优先级翻转;多处理器调度)
    【Node.js】node.js与内置模块:
    练习1-5:窗口函数,关联查询,子查询,分组聚合查询
    瑜伽组织怎么运用智能机器人提高员工敬业度
    毕业设计-基于机器视觉的行人车辆跟踪出入双向检测计数
    【论文】Poly-yolo: 改进anchor分配问题
    C++入门-day03
    ETL增量抽取模式实践与调优
    docker安装
  • 原文地址:https://blog.csdn.net/m0_61210742/article/details/126517233