• 【网络】总览(待更新)



    Linux 系统下查询机器 ip 地址命令:ifconfig

    inet:IP地址
    ether:以太网(16进制)
    
    • 1
    • 2

    零、概述

    0. 网络协议

    协议是一种“约定”。

    现有的这些许多不同厂商之间生产的计算机能够相互顺畅的通信,正是因为他们共同接受并遵守着同一套由权威定制的标准。这就是 网络协议。

    1. 网络协议分层

    OSI 七层模型

    OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。

    应用程序中:

    • 应用层
    • 表示层
    • 会话层

    操作系统中:

    • 传输层
    • 网络层

    设备驱动程序与网络接口中:

    • 数据链路层
    • 物理层

    TCP/IP 五层模型

    OSI 七层模型的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。但是, 它既复杂又不实用,所以我们按照 TCP/IP 五层模型来讲解

    • 应用层: 负责 应用程序间沟通
      如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

    • 传输层: 负责 两台主机之间的数据传输
      如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机

    • 网络层: 负责 地址管理和路由选择
      例如在 IP 协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。

    • 数据链路层: 负责 设备之间的 数据帧 的传送和识别
      例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线 LAN 等标准。交换机(Switch)工作在数据链路层。

    • 物理层: 负责 光 / 电信号的传递方式
      比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。

    网络协议的五层模型的位置关系
    在这里插入图片描述

    2. 协议报头

    用户使用网络互相交互时,从应用层开始,每层向下传输时都会加上本层协议的报头。传到局域网或以太网后,再由底向上进行解析,后将属于本层的报头解开,剩余的数据传给上层。

    • 每一层,都会把上层交付给自己的数据,作为自己的 有效载荷

    • 每一层,都有自己的协议报头

    • 对应的层,报头+有效载荷 = 自己要发送的报文(这就是 封装

    • 在逻辑上,网络协议,都认为自己在和对方同层协议在通信

    • 同层协议都能互相认识对方的报头,即都能做到:

      • a. 将报头进行有效载荷进行分离
      • b. 将有效载荷交付给上层的那一个具体协议

    3. 通信过程

    两个主机通信的本质,是两个主机的 OS 与网络协议栈在通信。

    任何人要通信,需要有唯一的一个标识符。对于机器也是如此,对于计算机,每台计算机都配有网卡,网卡在出厂的时候,就在网卡内部写入了网卡的 sn 号,MAC 地址, 全球唯一。

    路由器 是连接两个子网下通信的桥梁,实际上也是一个 主机,或者叫 节点。其有三层结构:

    • 网络层
    • 链路层
    • 物理层(此处不做讨论)

    在这里插入图片描述

    网络层的报头:为报文定制最终目标,路上根据该地址进行路径选择(IP 地址)

    链路层的报头:根据路径选择的结果,来选择下一跳主机(MAC 地址)。

    IP 协议及其以上的协议于任何网络方面是没有差异的,即 IP 地址屏蔽了底层子网机制的差异。

    IP协议向下,网络可以具有明显的差异。

    数据的封装和分用:

    • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。

    • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为 封装 (Encapsulation)。首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

    • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段“将数据交给对应的上层协议处理,称为 分用


    一、应用层

    一端发送时构造的数据,在另一端能够正确的进行解析,这种约定,就是 应用层协议

    程序员自然可以自行定制协议,但有如下非常好的协议设计是可以直接拿来使用的。

    1.1 🔗HTTP 协议

    👉HTTP 协议介绍

    1.2 🔗HTTPS 协议

    👉HTTPS 协议介绍


    二、传输层

    传输层用作提供传输策略,负责数据能够从发送端传输至接收端。

    2.1 端口号

    端口号(Port)标识了一个主机上进行通信的不同的应用程序。

    通过 源 IP 地址、目标 IP 地址、协议号、源端口号、目标端口号 这五个数字可以识别一个通信。

    端口号范围划分:

    • 0 - 1023:知名端口号。
      HTTP、FTP、SSH 等这些广为使用的应用层协议,他们的端口号都是固定的。

      ssh 服务器,使用 22 端口
      ftp 服务器,使用 21 端口
      telnet 服务器,使用 23 端口
      http 服务器,使用 80 端口
      https 服务器,使用 443 端口
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 1024 - 65535:操作系统动态分配的端口号。
      客户端程序的端口号,就是由操作系统从这个范围分配的。

      其中也不乏有数据库或一些特殊的服务在其中,比如:
      mysql,使用 3306 端口
      
      • 1
      • 2

    2.2 netstat - - 查询网络状态

    netstat -naup:

    -n:拒绝显示别名,能显示数字的全部转化成数字
    -a:(all)显示所有选项
    -u:(udp)仅显示 udp 相关选项
    -p:显示建立相关链接的程序名
    
    • 1
    • 2
    • 3
    • 4

    netstat -nltp:

    -n:拒绝显示别名,能显示数字的全部转化成数字
    -l:仅列出有在 Listen (监听) 的服务状态
    -t:(tcp)仅显示tcp相关选项
    -p:显示建立相关链接的程序名
    
    • 1
    • 2
    • 3
    • 4

    2.3 pidof - - 查看服务器的进程 id

    pidof [进程名]:通过进程名查看进程 id

    2.4 🔗UDP 协议

    👉UDP 协议介绍

    2.5 🔗TCP 协议

    👉TCP 协议介绍

    TCP 和 UDP 的对比:
    TCP 和 UDP 之间的优点和缺点,不能简单,绝对的进行比较。

    • TCP 用于可靠传输的情况,应用于文件传输,重要状态更新等场景。

    • UDP 用于对高速传输和实时性要求较高的通信领域,

      例如,早期的 QQ,视频传输...等,另外 UDP 可以用于广播。
      
      • 1

    归根结底,TCP 和 UDP 都是程序员的工具,什么时机用,具体怎么用,还是要根据具体的需求场景去判定。


    三、网络层

  • 相关阅读:
    【笔试强训选择题】Day42.习题(错题)解析
    比例运算放大电路为什么要加平衡电阻
    C语言库函数— qsort () 详解
    MySQL:10-设计数据库
    nginx安装及使用(详细版)
    SpringBoot异常处理
    应用开发平台集成工作流系列之15——任务处理设计与实现
    docker 启动时报错
    singleflight 防止缓存击穿、并发结果共享(golang官方包和go-zero实现对比)
    vue基于promise可以用于浏览器和node.js的网络请求库【axios封装-收藏版】
  • 原文地址:https://blog.csdn.net/m0_67470729/article/details/132632803