• 网络原理 - 详解


    一,网络通信基础

    1.1 IP地址

    描述一个设备在网络上的地址,一般使用4个0~255之间的数字,并且使用三给 . 进行分割,如:127.0.0.0

    1.2 端口号

    端口号是一个2个字节的整数,用来区分一个主机上的不同应用程序,不同的程序可以绑定不同的端口号,在同一个主机上,一个端口号只能绑定一个应用程序,但一个应用程序可以绑定多个端口号。(端口号:0~65535,1~1023专门给系统使用)

    1.3 网络协议

    网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组规则。如怎么样建立连接、怎么样互相识别等。

    为什么会有协议?计算机的传递形式是光信号和电信号,通过频率和强弱来表示0和1这样的信息,要想传递不同的数据类型,就要约定双方的数据格式,就好比摩斯密码,我把信息传递给你,你也需要按照约定好的方式去翻译。

    1.4 五元组

    在 TCP/IP 协议中,用五元组来表示一个网络通信:

    1. 源IP:标识源主机
    2. 源端口号:标识源主机中该次通信发送数据的进程
    3. 目的IP:标识目的主机
    4. 目的端口号:标识目的主机中该次通信接收数据的进程
    5. 协议号:标识发送进程和接收进程双方约定的数据格式

     1.5 协议分层

    类似于敲代码,当代码越写越复杂时,往往将代码拆分成多个部分,这样可以更好理解代码。网络通信也是一样,当遇到复杂的场景时,往往需要大量的协议,如果使用一个协议来解决所有问题,那么协议就会非常庞大,不利于我们去理解和学习。

    所以我们可以把大的协议拆分成多个小的协议,让每个小的协议负责一小块事务,这样更加利于理解学习。但是实际上网络通信会更加的复杂,拆分出的协议也就更多,协议一多就不好管理,这时候就需要对协议进行分层。

    按照协议的定位/作用分类,并且约定不同层次之间的调用关系:1)上层协议调用下层协议  2)下层协议为上层协议提供支持。整体结构类似于一个公司,老板将一个大的任务分配给各个部门,各个部门主管在分配任务给各个员工。

    协议分层的优点:

    1)上层协议和下层协议之间进行了封装,双方之间互不干扰。

    2)每一层协议都可以根据需求进行替换,更加灵活

    1.6 TCP/IP五层模型 

     OSI 七层模型既复杂又不实用,所以在这里主要介绍TCP/IP五层模型:

    • 物理层:描述网络通信的硬件设备,如:光纤,网线等
    • 数据链路层:两个相邻节点之间的数据传输情况
    • 网络层:负责地址管理和路由选择,也就是路径规划
    • 传输层:负责两台主机之间的数据传输,只关注起点和终点
    • 应用层:负责如何使用网络通信传递过来的数据

    网络设备所在分层:

    • 主机:操作系统内核实现了从传输层到物理层的内容
    • 路由器:从网络层到物理层
    • 交换机:从数据链路层到物理层
    • 集线器:物理层

    注:并不绝对,随着科技的发展,单个设备涉及的层数也会越来越多

     1.7 封装和分用

    封装:

     分用:就是上述过程的逆推,就类似于快递,装快递是"封装",拆快递是"分用",在分用的过程中还会遇到交换机和路由器,这又会产生封装,如下图:

     路由器也是同理,只不过要将数据分用到网络层。

    二,网络编程基础原理

    • 发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。
    • 接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。
    • 收发端:发送端和接收端两端,也简称为收发端。
    • 请求和响应:你上餐馆点菜是请求,餐馆给你上菜是响应。
    • 服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。
    • 客户端:获取服务的一方进程,称为客户端
    • 注意:发送端和接收端只是相对的,只是一次网络数据传输产生数据流向后的概念


     

  • 相关阅读:
    LeetCode每日一题(2306. Naming a Company)
    std : : vector
    CSS3零基础快速入门
    如何使用自己公司的数据,训练聊天机器人,如何选择算法
    Eureka添加@Loadbalanced 报错 No instances available for XXXXX
    Cannot find proj.db
    51单片机自动量程(3挡)0-30v直流电压表万用表CD4051 LCD1602显示 MCP3201
    Kubernetes(k8s第二部分)
    Python Watchdog:高效的文件系统监控
    前端学习笔记01
  • 原文地址:https://blog.csdn.net/m0_74859835/article/details/133643488