【Linux】计算机网络基础:协议、分层结构与数据传输解析

文章目录

  • 前言
  • [1. 认识"协议"](#1. 认识“协议”)
    • [1.1. 什么是协议](#1.1. 什么是协议)
    • [1.2. 网络分层结构------网络 vs OS之间的关系](#1.2. 网络分层结构——网络 vs OS之间的关系)
      • [1.2.1. 软案分层](#1.2.1. 软案分层)
      • [1.2.2. 网络分层(为什么?是什么?怎么办?)](#1.2.2. 网络分层(为什么?是什么?怎么办?))
    • [1.3. 站在语言角度,重新理解协议](#1.3. 站在语言角度,重新理解协议)
  • [2. 网络传输基本流程](#2. 网络传输基本流程)
  • [3. 数据包封装和分用](#3. 数据包封装和分用)
  • [4. 网络中的地址管理](#4. 网络中的地址管理)
    • [4.1 认识IP地址](#4.1 认识IP地址)
    • [4.2 认识MAC地址](#4.2 认识MAC地址)
  • 总结

前言

在当今数字化时代,计算机网络已经成为我们日常生活和工作中不可或缺的一部分。无论是社交、工作还是学习,网络都扮演着至关重要的角色。然而,网络的复杂性和技术性往往让非专业人士感到困惑。本文旨在通过浅显易懂的语言,深入探讨网络协议的基本概念、网络分层结构以及数据传输的基本流程,帮助读者更好地理解计算机网络的工作原理。

1. 认识"协议"

1.1. 什么是协议

"协议"是一种约定,计算机协议------就是计算机之间的约定(减少通信成本:沟通成本)

1.2. 网络分层结构------网络 vs OS之间的关系

1.2.1. 软案分层

任何问题都可以添加一层软件层来解决

1.2.2. 网络分层(为什么?是什么?怎么办?)

为什么?:层和层之间是松耦合的,可以随时替换或方便维护。

为什么要存在网络协议?主要解决什么问题? 客观事实就是"距离变远了",必定会引发新问题:

  1. 如何使用数据的问题
  2. 可靠性问题
  3. 主机定位问题
  4. 数据报局域网转发的问题

解决问题:网络协议 tcp/ip协议,一种解决方案,好的方案?坏的方案?(可扩展方便维护),网络就是层状结构了!

是什么?

OSI七层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)

TCP/IP五层(或四层)模型(物理层、数据链路层、网络层、传输层、应用层)

网络 vs OS之间的关系:

世界上所有的OS只要想入网,就必须遵守 TCP/IP 协议,保证不同主机之间的数据通信!

1.3. 站在语言角度,重新理解协议

双方必须使用同样的数据类型,所以,经过网络传输,对方一定认识每个字段的大小、含义(约定)

相同的,结构化的数据结构类型(双方都认识的结构体数据类型!)

2. 网络传输基本流程

在同一个局域网主机中,能不能直接进行通信呢?能

原理是什么?以太网的通信原理!

以太网 :任何时刻,只允许任何一台主机在局域网中发消息。
网络和OS一统:局域网本质,是一个临界资源!

如果我们要黑掉一个局域网,我改怎么做? 不断的向局域网中发送垃圾数据。

局域网中,主机越多越好(交换机),还是越少越好? 越少越好!

MAC地址

报头不断被自顶向下进行交付的过程,要添加协议报头,叫做封装!

什么是协议报头呢?

  • 封装

    报文 = 协议报头 + 有效载荷

    应用层:request / response

    传输层:数据段

    网络层:数据报

    链路层:数据帧

  • 解包与分用

  1. 将报头和有效载荷进行分离
  2. 将自己的有效载荷交给上层那个协议

逻辑上:同层协议,都可以认为自己在和对方直接通信

路由器 至少要横跨两个子网,路由器要有两张网卡------两个mac地址。

举个唐僧取经例子 :

唐僧身上永远都会有两套地址:

  1. src(大唐),dst(西天)(源IP和目的IP地址(路径规划的依据 ))(不变的)
  2. 上一站从哪里来,下一站到哪里(源mac地址和目的mac地址)(一直在变换)

ip地址是由32位数字,xxx.xxx.xxx.xxx点分十进制

IP层协议往上没有任何不同,IP层以下因为网络的不同所以没法做成统一的报头。

在全网中标识一台主机,我们不谈MAC地址,我们谈IP地址即可。

3. 数据包封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的"上层协议字段" 将数据交给对应的上层协议处理。

下图为数据封装的过程

下图为数据分用的过程

4. 网络中的地址管理

4.1 认识IP地址

IP协议有两个版本, IPv4和IPv6. 我们凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
  • 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

4.2 认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

总结

通过本文的阅读,我们对计算机网络的协议、分层结构、数据传输流程以及地址管理有了更深入的认识。我们了解到协议是计算机之间通信的规则和约定,它减少了通信成本,提高了效率。网络分层结构,如OSI七层模型和TCP/IP模型,为我们提供了一种模块化的方法来理解和设计网络通信。数据包的封装和分用过程揭示了数据在网络中如何被组织、传输和处理。此外,我们还学习了IP地址和MAC地址的作用及其在网络通信中的重要性。

总之,计算机网络是一个复杂但有序的系统,通过本文的介绍,我们希望能够激发读者对网络技术的兴趣,并为他们提供必要的知识基础,以便更好地利用和理解网络技术。随着技术的不断进步,对网络的深入理解将变得越来越重要,希望本文能为读者打开探索计算机网络世界的大门。

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式