linux【网络编程】之网络基础

news2024/11/25 2:24:08

linux【网络编程】之网络基础

  • 一、网络协议与协议分层
    • 1.1 为什么要分层
    • 1.2 OSI七层模型
    • 1.3 TCP/IP五层(或四层)模型
  • 二、网络传输流程
    • 2.1 了解局域网
    • 2.2 同一网段内的两台主机进行文件传输
    • 2.3 跨网段的主机的文件传输
  • 三、数据包封装和分用
  • 四、网络中的地址管理
    • 4.1 IP地址
    • 4.2 MAC地址

一、网络协议与协议分层

“协议” 是一种约定

1.1 为什么要分层

  1. 软件设计方面的优势—低耦合
  2. 分层依据:功能比较集中,耦合度较高的模块—高内聚
  3. 每一层都要解决特定的问题

每一层都有自己匹配的协议,每一层协议都解决自己的问题

1.2 OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

在这里插入图片描述
但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解

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

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

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

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

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

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
在这里插入图片描述

二、网络传输流程

2.1 了解局域网

一、协议报头

  1. 协议每一层都有,每一个协议的最终表现就是协议都要有报头(快递盒上的快递单)
  2. 协议通常是通过协议报头来表达的
  3. 每一份数据最终在被发送或者在不同的协议层中,都要有报头

二、局域网

  • 两台局域网的主机能够直接通信
  • 通信原理:每一台主机都有网卡,每一张网卡都有自己的MAC地址 ,全球唯一。

2.2 同一网段内的两台主机进行文件传输

封装:有效载荷+各层报头(用谁的协议加谁的报头)
解包:将报头和有效载荷分离的过程
分用:将有效载荷交给指定协议解包的过程

报文=报头+有效载荷
在这里插入图片描述
以上我们可以认为:同层协议在直接通信,也可以理解成向下交付。

2.3 跨网段的主机的文件传输

同层协议看到的报文都是一样的
最后一层与IP层通过路由器,经过解包与重新封包之后,再去解包分用
在这里插入图片描述
在上图中,路由器横跨两个网络,则有两个网络接口:路由器和以太网属于同一个局域网;路由器也和令牌环网属于同一个局域网,这样两个不同的局域网下的主机就能通过路由器实现数据包转发

IP层及IP协议存在的意义之一:屏蔽底层网络的差异,如上图中的网卡层。

三、数据包封装和分用

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

四、网络中的地址管理

4.1 IP地址

  1. IP地址是在IP协议中, 用来标识网络中不同主机的地址,通常使用于广域网中,局域网中也能使用;
  2. 对于IPv4来说, IP地址是一个4字节, 32位的整数;对于IPv6来说, IP地址是一个16字节, 128位的整数,暂时不需要关注IPv6
  3. 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

IP地址可以理解为某个路途的起点和终点(源IP和目的IP);在网络传输中提供方向

4.2 MAC地址

MAC地址用来识别数据链路层中相连的节点;在网卡出厂时就确定了,不能更改!
MAC地址可以理解为某个路途中,中间相邻的节点(源MAC地址和目的MAC地址);在网络传输中提供可行性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Simulink】0基础入门教程 P1 搭建自己的第一个模型 实现加减乘除四则运算

目录 工作路径的设置: Simulink的两种打开方式 模块的基本操作 建立一个新的空白模型,创建模型 加减乘除模块的名称 模块之间连线的两种方法 显示模块 Display 搭建子系统subsystem 将加法模块Add更改为多输入模块 本文记录Simulink学习&#x…

[零刻]EQ12EQ12Pro调整风扇转速教程

调整 CPU 风扇转速可以有不同的用途,具体取决于您的计算机和使用情况。 降低噪音:如果您的风扇的噪音很大,可以通过降低 CPU 风扇的转速来减少噪音。这可以通过在 BIOS 或中设置 CPU 风扇转速控制来实现。 提高性能:如果您的计算…

OpenVINO 2022.3实战一:Window 10 环境下用 OpenVINO 2022.3部署yolov5 7.0

Window 10 环境下用 OpenVINO 2022.3部署yolov5_7.0 1 下载并解压 OpenVINO Runtime OpenVINO™ Runtime 2022.3 以压缩包 (OpenVINO Archives) 的形式提供。 下载地址: storage.openvinotoolkit.org 下载后解压到 C:\Intel\openvino_2022.3.0 配置环境&#xff…

5月5日 8H25min|5月6日 3H10min|时间轴复盘

7:30-8:00 起床洗漱吃饭 8:00-8:30 背书 【30min】 8:30-9:40 对话单词 【1h10min】 9:45-11:30 听力精听 【2h-15min】 11:30-12:10 吃午饭吃水果 12:10-12:50 继续吃饭之前没完成的 【40min】 13:00-14:30 健身 14:35-14:43 语法 【1…

asdfghasdfghjkl

PDL1检测: 肿瘤细胞高表达PD-L1分子,与肿瘤部位浸润T淋巴细胞表面的PD-1分子结合后,抑制T细胞活性,实现肿瘤的免疫逃避。而目前PD-1/PD-L1抑制剂均是检测PD-L1的表达。 目前在NSCLC治疗中,对于每个PD-1/PD-L1抑制剂&a…

【Hive大数据】Hive分区表与分桶表使用详解

目录 一、分区概念产生背景 二、分区表特点 三、分区表类型 3.1 单分区 3.2 多分区 四、动态分区与静态分区 4.1 静态分区【静态加载】 4.1.1 操作演示 4.2 多重分区 4.2.1 操作演示 4.3 分区数据动态加载 4.3.1 分区表数据加载 -- 动态分区 4.3.2 操作演示 五、…

mysql事务及搜索引擎

mysql事务后半部分 加快查询速度索引会自动排序,(升序) select * from t1;全盘扫描 where可以索引查找show create table 索引是一个排序的列表,包含字段值和相应行数据的物理地址 事务是一种机制,一个…

Misc小总结

Misc分类 个人认为Misc中的题目可分为七大类,图片隐写,音视频隐写,其它隐写(PPT、word文档等隐写),压缩包破解,流量分析,取证,编码或密码。这里面涉及的知识点当然是很多的,有很多你…

大学毕业设计使用python制作

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

Python标准数据类型-字符串常用方法(上)【文末送书】

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座又一座的高山…

经验总结:(Redis NoSQL数据库快速入门)

一、Nosql概述 为什么使用Nosql 1、单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题 数据量增加到一定程度,单机数据库就放不下了数据的索引(B Tree),一个机…

【Linux】进程的终止,等待(不包含进程的程序替换)

信号的部分会在后面仔细讲,本文不涉及 目录 1.进程终止以及退出码的理解 2.进程退出 3.进程等待 1.进程终止以及退出码的理解 1.情况分类 (1)正常执行完 a.结果正确 b.结果不正确 反思为什么? (2&#xff…

CesiumForUnreal去掉左下角的Ion Logo

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 记录一下使用CesiumForUnreal插件过程中如何清除左下角的Cesium Ion Logo,清除前后的对比截图如下所示。 原始样式去除后2.实现过程 记录一下实现的过程(含踩坑记录,可能有一点啰嗦)。 (1)首先看一下是哪个蓝图添加的…

【STM32CubeMX】F103窗口看门狗

前言 本文记录了我学习STM32CubeMX的过程,方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了窗口看门狗的使用配置。要学习的话,注意流程一说,省略的内容。 基础 窗口看门狗(WWDG)属于APB1上外设。窗口看门狗(WWDG)的时钟源…

【小结】git合并分支总结

首先理清以下几个关系: 1、git有本地库和远程库。 ①本地仓库:也就是电脑上存储的代码,本地代码,一般在某个盘中。 ②远程仓库:是云上的库,比如gitee,github等等。 2、分支:分为本地分支和远…

手机摄影(三)

第七章 构图,用光与色彩 构图的原则: 画面简洁 突出主体 陪体和主体:如果没有枯叶做前景,画面的空间感和深秋氛围会大打折扣。 看到一张你认为很美的照片时,要问自己几个问题: • 这张照片的主体是什么…

jvm之启动参数

写在前面 本文一起看下jvm启动参数相关内容,通过本文希望我自己也希望大家能够真正的应用到实际的工作中。 1:基本内容介绍 一般我们启动java程序有两种方式,一种是直接运行一个有main函数的class,第二种是运行一个在MANIFEST文…

安装mysql

1、环境(虚拟机新安装的Redhat): 链接:https://pan.baidu.com/s/1jjdimuq-TrS8RASqGiU5Xg 提取码:2hef 2、检查系统是否已经安装了 MySQL rpm -aq | grep mysql 如果有旧版本就需要像下面卸载mariadb一样卸载掉。M…

希尔密码,云影密码 及例题

希尔密码 云影密码 题一 [HDCTF2023]–爬过小山去看云 题目描述: 密文:ymyvzjtxswwktetpyvpfmvcdgywktetpyvpfuedfnzdjsiujvpwktetpyvnzdjpfkjssvacdgywktetpyvnzdjqtincduedfpfkjssne 在山的那头,有3个人,4只鸟,19只…

Keepalived概念与安装部署过程

前言 目前互联网上主流高可用方案软件有keepalived、heartbeat,其中heartbeat是比较早期用来实现高可用软件的,而keepalived是目前轻量级,并且管理方便、易使用的高可用解决方案。 1.1 Keeplived高可用的功能 Keepalived是一个类似于工作在…