当前位置: 首页 > news >正文

Linux网络编程(一-网络相关知识点)

  

目录

  

一、网络相关知识简介

二、网络协议的分层模型

2.1 OSI七层模型

2.2 TCP/IP五层模型

2.3 协议层报文间的封装与拆封 

三、IP协议

3.1 MAC地址 

3.2 IP地址

3.3 MAC地址与IP地址区别


一、网络相关知识简介

互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,通信设备只有按照约定的、统一的方式去封装和解析信息,才能实现通信。互联网通信所要遵守的众多协议,被统称为TCP/IP。

TCP/IP是一个协议族,包含众多的协议。但对于网络应用开发人员,可能听到更多的是其中的应用层协议,比如HTTP、FTP、MQTT等。

HTTP协议Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP的应用最为广泛。比如大家日常使用电脑时的一个常规操作:打开电脑,打开浏览器,输入网址,最后按下回车,这一刻你就开启了HTTP通信。HTTP协议工作于架构之上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。借助这种浏览器和服务器之间的HTTP通信,我们能够足不出户地获得来自世界各个角落的信息。另外,网页不仅仅是大型服务器的专利,在物联网风潮盛行的今天,许多随处可见的小型设备(空调、冰箱、插座、路由器等),都内嵌网页,在物理链路畅通的情况下,用户可以用手机、平板电脑上的浏览器随时随地监控这些设备。

FTP(File Transfer Protocol)文件传输协议的简称。FTP是工作在应用层的网络协议。FTP使得主机间可以共享文件,用于在两台设备之间传输文件(双向传输)。它也是一个客户端-服务端框架系统。用户可以通过一个支持FTP协议的客户端程序,连接到在远程主机上的FTP服务端程序,通过客户端程序向服务端程序发出命令,服务端程序执行用户所发出的命令,并将执行的结果返回到客户机。FTP除了基本的文件上传/下载功能外,还有目录操作、权限设置、身份验证机制,许多网盘的文件传输功能都是基于FTP实现的。

MQTT(消息队列遥测传输)是IBM公司于1990年设计并推出的一款通信协议,于2014年正式成为了一个OASIS开放标准。近年来,MQTT的应用呈现出爆炸性的增长势头,大有一统物联网的趋势。另外,MQTT在物联网以外的其他领域也得到了广泛的应用,比如许多公司在制作手机APP时,会使用MQTT来实现消息推送、即时聊天等功能。

二、网络协议的分层模型

2.1 OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。OSI把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输,它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

分层名称功能每层功能概览
7应用层针对特定应用的协议
6表示层设备固有数据格式和网络标准数据格式的转换
5会话层通信管理,负责建立和断开通信连接(数据流动的逻辑通路),管理传输层以下的分层。
4传输层管理两个节点之间的数据传输,负责可靠传输(确保数据被可靠地传送到目标地址)
3网络层地址管理与路由选择
2数据链路层互联设备之间换送和识别数据帧
1物理层以 "0"、"1" 代表电压的高低、灯光的闪灭,界定连接器和网线的规格

2.2 TCP/IP五层模型

TCP/IP通讯协议采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层。
  • 数据链路层: 负责设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作,有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。
  • 网络层:负责地址管理和路由选择,例如在IP协议中, 通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。
  • 传输层:负责两台主机之间的数据传输,如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,网络编程主要就是针对应用层。

2.3 协议层报文间的封装与拆封 

网络模型中每一层都有自己的协议定制方案(物理层除外),每个协议定制方案都有自己的协议首部(报头),当用户发送数据时,将数据向下交给传输层,这是处于应用层的操作,对用户的数据进行封装添加相应的协议首部(报头),比如MQTT、HTTP等协议,最后应用层通过调用传输层的接口来将数据递交到传输层中。传输层会在数据前面加上传输层首部(此处以TCP协议为例,图中的传输层首部为TCP首部,也可以是UDP首部),然后向下交给网络层。同样地,网络层会在数据前面加上网络层首部(IP首部),然后将数据向下交给链路层,链路层会对数据进行最后一次封装,即在数据前面加上链路层首部(此处使用以太网接口为例),然后将数据交给网卡。最后,网卡将数据转换成物理链路上的电平信号,数据就这样被发送到了网络中。数据的发送过程,可以概括为TCP/IP的各层协议对数据进行封装的过程,如图所示:

当设备的网卡接收到某个数据包后,它会将其放置在网卡的接收缓存中,并告知TCP/IP内核。然后TCP/IP内核就开始工作了,它会将数据包从接收缓存中取出,并逐层解析数据包中的协议首部信息,并最终将数据交给某个应用程序。数据的接收过程与发送过程正好相反,可以概括为TCP/IP的各层协议对数据进行解析的过程。 

三、IP协议

IP协议(Internet Protocol),又称之为网际协议,IP协议处于网络层工作,它是整个TCP/IP协议栈的核心协议,上层协议都要依赖IP协议提供的服务,IP协议负责将数据报从源主机发送到目标主机,通过IP地址作为唯一识别码,简单来说,不同主机之间的IP地址是不一样的,在发送数据报的过程中,IP协议还可能对数据报进行分片处理,同时在接收数据报的时候还可能需要对分片的数据报进行重装等等。底层网络的差异化(以太网、令牌环网等),可以通过IP协议进行统一化,IP协议以上的网络层都可以看作为相同协议。

3.1 MAC地址 

MAC(Media Access Control)地址,意译为媒体访问控制,或称为物理地址,MAC地址是计算机的唯一位硬件编号,在网卡出厂时就已经确定,不能修改,其长度为48位,6个字节,一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19),MAC地址用来识别数据链路层中相连的节点

3.2 IP地址

在TCP/IP设计之初,为了标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个IP地址(Internet Protocol Address),是一个32位的整数地址,只有合法的IP地址才能接入互联网中并且与其他主机进行通信,IP地址是软件地址,不是硬件地址,硬件MAC地址是存储在网卡中的,应用于本地网络中寻找目标主机。而IP地址能让一个网络中的主机能够与另一个网络中的主机进行通信,无需理会这些主机之间的MAC地址。

每个IP地址长度为32比特(4字节),因此总共有2^32个可能的IP地址,大约有40亿个IP地址能被使用的。这些地址一般按所谓点分十进制记法(dotted-decimal notation)书写,即地址中的每个字节用它的十进制形式书写,各字节间以点分隔开。例如, IP地址为192.168.0.122,192是该地址第一个8比特的十进制等价数,168是该地址第二个8比特的十进制等价数,依此类推。

3.3 MAC地址与IP地址区别

  • 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动
  • 长度不同。IP地址为32位,MAC地址为48位。
  • 分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商
  • 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。如下图所示,唐僧要去西天取经(东土大唐,西天)为源IP地址和目的IP地址,中间经过(东土大唐,宝象国)、(宝象国,乌鸡国)、(乌鸡国、西天)分别为源MAC地址和目的MAC地址,MAC源和目的地址根据路由过程而变化,IP源和目的地址在路由过程中始终不变

相关文章:

Linux网络编程(一-网络相关知识点)

目录 一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封 三、IP协议 3.1 MAC地址 3.2 IP地址 3.3 MAC地址与IP地址区别 一、网络相关知识简介 互联网通信的本质是数字通信,任何数字通信都离…...

IO进程线程day5

1.实现互斥机制 #include <head.h>char buf[128]; //全局数组&#xff0c;临界资源//1、创建一个互斥锁 pthread_mutex_t mutex;//定义分支线程 void *task(void *arg) {while(1){//3、获取锁资源pthread_mutex_lock(&mutex);printf("分支线程中&…...

读元宇宙改变一切笔记04_网络化

1. 思想实验 1.1. 如果森林中的一棵树倒下&#xff0c;但周围没有人听到&#xff0c;那它是否会发出声音&#xff1f; 1.1.1. “贝克莱的树” 1.2. 主观唯心主义哲学家乔治贝克莱(George Berkeley)提出的&#xff0c;他认为“存在就是被感知” 1.2.1. 如果有人或有其他事物…...

用Promise实现util函数

有些时候&#xff0c;我们需要依赖于异步的返回结果做一些后续处理&#xff0c;until函数在这种场景下非常有用&#xff0c;你能实现它吗 ? 让我们来试试吧 &#x1f447;: <script setup langts> import { ref,watch } from "vue"const count ref(0)/*** I…...

使用numpy处理图片——白色背景变全透明

在《使用numpy处理图片——基础操作》一文中&#xff0c;我们通过对所有像素的alpha值做修改&#xff0c;让图片变成半透明。 我们看到本来是黑色的字体也因为半透明的原因变得颜色比较淡。 本文我们将判断每个像素的RGB值。如果是纯白底色&#xff0c;则将该像素的alpha值调…...

计算机网络层之ICMP与IGMP

计算机网络传输层协议有&#xff1a;tcp和udp&#xff0c;这两个接触最多&#xff0c;较为熟悉。除此之外&#xff0c;还有ICMP和IGMP&#xff0c;我们接触较少。 ICMP&#xff08;Internet Control Message Protocol&#xff09;和IGMP(Internet Group Management Protocol)是…...

FlinkAPI开发之自定义函数UDF

案例用到的测试数据请参考文章&#xff1a; Flink自定义Source模拟数据流 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135436048 概述 用户自定义函数&#xff08;user-defined function&#xff0c;UDF&#xff09;&#xff0c;即用户可以根据…...

阿里云国际服务器设置安全防护程序

阿里云云服务器&#xff08;ECS&#xff09;提供弹性、安全、高性能、高性价比的虚拟云服务器&#xff0c;满足您的所有需求。立即在这里免费注册&#xff01; 常见 Web 应用程序 请勿对 Web 服务控制台&#xff08;如 WDCP、TOMCAT、Apache、Nginx、Jekins、PHPMyAdmin、Web…...

C++获取内存使用情况

在程序编程过程中&#xff0c;为了防止出现内存泄漏情况出现&#xff0c;需要持续关注内存程序内存占用情况。如下方式实现获取当前进程内存使用情况&#xff1a; linux&#xff1a; void my_top(string path, bool flag) {if(flag){FILE* read_top fopen("/proc/self/…...

CRMEB多商户短信开发

在使用CRMEB多商户系统的时候&#xff0c;想要二开使用其他平台的短信&#xff0c;这里以阿里云短信为例的具体实现方法。 一、加载阿里云短信的SDK&#xff0c;执行命令&#xff1a;composer require alibabacloud/dysmsapi-20170525 二、增加阿里云短信的驱动 1.在 crmeb\…...

Leetcode 1049 最后一块石头的重量II

题意理解&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。 思路转化&#xff1a;我们可…...

【设计模式之美】SOLID 原则之二:开闭原则方法论、开闭原则如何取舍

文章目录 一. 如何理解“对扩展开放、修改关闭”&#xff1f;二. 修改代码就意味着违背开闭原则吗&#xff1f;三. 如何做到“对扩展开放、修改关闭”&#xff1f;四. 如何在项目中灵活应用开闭原则&#xff1f; 一. 如何理解“对扩展开放、修改关闭”&#xff1f; 具体的说&a…...

Kafka 基本概念和术语

1、消息 Record&#xff1a;Kafka 是消息引擎嘛&#xff0c;这里的消息就是指 Kafka 处理的主要对象。 2、主题 Topic&#xff1a;主题是承载消息的逻辑容器&#xff0c;在实际使用中多用来区分具体的业务。在Kafka 中发布订阅的对象是 Topic。 3、分区 Partition&#xf…...

【每日面试题】Docker常见面试题精选

什么是Docker容器&#xff1f; Docker容器是一种轻量级的虚拟化技术&#xff0c;可以将应用及其依赖项打包在一个可移植的容器中&#xff0c;以便在多个环境中运行。 Docker镜像和容器之间有什么区别&#xff1f; Docker镜像是一个包含了应用程序及其依赖项的只读模板&#xf…...

uniapp项目怎么删除顶部导航栏

uniapp去掉顶部导航的方法&#xff1a; 1、去掉所有导航栏 "globalStyle": { "navigationBarTextStyle": "white", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#007AFF"…...

Midjourney词库

光线与影子篇 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe city 强烈的阳光 strong sunlight 熠熠生辉的霓虹灯 glittering neon lights 黑暗中的神秘影子 mysterious shadows in the dark 照亮城市…...

【微服务】springcloud集成skywalking实现全链路追踪

目录 一、前言 二、环境准备 2.1 软件环境 2.2 微服务模块 2.3 环境搭建...

openssl3.2 - 官方dmeo学习 - server-cmod.c

文章目录 openssl3.2 - 官方dmeo学习 - server-cmod.c概述配置文件格式样例笔记END openssl3.2 - 官方dmeo学习 - server-cmod.c 概述 从配置文件中读参数, 建立TLS服务器, 死等客户端来连接. 客户端连接后, 打印客户端发来的内容. 配置文件格式有要求 配置文件格式样例 # …...

websocket介绍并模拟股票数据推流

Websockt概念 Websockt是一种网络通信协议&#xff0c;允许客户端和服务器双向通信。最大的特点就是允许服务器主动推送数据给客户端&#xff0c;比如股票数据在客户端实时更新&#xff0c;就能利用websocket。 Websockt和http协议一样&#xff0c;并不是设置在linux内核中&a…...

Python获取本机IP

以下代码Python3.11.6、MacOS系统中测试通过 import socketdef get_ip() -> str:with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:s.settimeout(0)try:# doesnt even have to be reachables.connect((10.254.254.254, 1))IP s.getsockname()[0]except Except…...

Polars 2.0清洗架构解密(含完整数据流拓扑图):为什么92%的团队还在用Pandas硬扛TB级脏数据?

第一章&#xff1a;Polars 2.0清洗架构解密&#xff1a;从设计哲学到性能跃迁Polars 2.0 的清洗架构并非简单功能叠加&#xff0c;而是以“零拷贝流式处理”与“惰性执行图优化”为双核驱动的范式重构。其设计哲学根植于两个核心信条&#xff1a;数据不应在内存中被无谓复制&am…...

避免Java Stream重复消费:高效过滤Map的策略

本文旨在解决Java Stream在多过滤场景中常见的IllegalStatexception&#xff0c;即流被重复消耗的问题。我们将深入讨论Java Stream的单次使用特性&#xff0c;通过将外部过滤条件转换为集合&#xff0c;优化Map的过滤操作&#xff0c;提供高效、符合最佳实践的解决方案&#x…...

提示工程架构师实战手册:2025年基于最新趋势的AI项目设计指南

提示工程架构师实战手册&#xff1a;2025年基于最新趋势的AI项目设计指南 1. 引入与连接&#xff1a;从“写Prompt”到“设计提示系统”的认知跃迁 1.1 一个真实的AI项目痛点 2024年底&#xff0c;某头部电商公司的智能客服项目陷入瓶颈&#xff1a; 用户发“这件衣服洗了会缩水…...

如何快速实现Font Awesome图标字体文件格式转换:终极在线工具指南

如何快速实现Font Awesome图标字体文件格式转换&#xff1a;终极在线工具指南 【免费下载链接】Font-Awesome The iconic SVG, font, and CSS toolkit 项目地址: https://gitcode.com/GitHub_Trending/fo/Font-Awesome Font Awesome作为一款标志性的SVG、字体和CSS工具包…...

终极指南:nanoGPT如何让每个人都能训练自己的AI语言模型?

终极指南&#xff1a;nanoGPT如何让每个人都能训练自己的AI语言模型&#xff1f; 【免费下载链接】nanoGPT The simplest, fastest repository for training/finetuning medium-sized GPTs. 项目地址: https://gitcode.com/GitHub_Trending/na/nanoGPT 想要训练自己的AI…...

RWKV7-1.5B-g1a参数详解:为何默认top_p=0.3更适合中文生成?语言分布实证

RWKV7-1.5B-g1a参数详解&#xff1a;为何默认top_p0.3更适合中文生成&#xff1f;语言分布实证 1. 模型概述 rwkv7-1.5B-g1a是基于RWKV-7架构的多语言文本生成模型&#xff0c;特别适合中文场景下的基础问答、文案续写和简短总结任务。作为1.5B参数量的轻量级模型&#xff0c…...

LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测

LFM2.5-1.2B-Thinking-GGUF开源可部署&#xff1a;自主可控轻量模型替代方案深度评测 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该模型采用GGUF格式存储&#xff0c;配合llama.cpp运行时&#xff0c;能…...

OpenClaw对话式编程:Qwen3.5-9B解释代码与生成可执行脚本

OpenClaw对话式编程&#xff1a;Qwen3.5-9B解释代码与生成可执行脚本 1. 为什么需要对话式编程助手&#xff1f; 作为一个经常需要写脚本处理数据的开发者&#xff0c;我发现自己80%的时间都花在重复性工作上&#xff1a;查文档、调试语法错误、验证代码逻辑。直到尝试用Open…...

MIPI D-PHY v1.2升级指南:如何利用HS-Deskew提升2.5Gbps传输稳定性

MIPI D-PHY v1.2升级指南&#xff1a;如何利用HS-Deskew提升2.5Gbps传输稳定性 在嵌入式系统设计中&#xff0c;高速串行接口的稳定性往往成为项目成败的关键。当MIPI联盟推出D-PHY v1.2规范时&#xff0c;最引人注目的变化莫过于将单通道传输速率从1.5Gbps提升至2.5Gbps——这…...

如何通过5个步骤为Windows 11 24H2 LTSC恢复微软商店功能

如何通过5个步骤为Windows 11 24H2 LTSC恢复微软商店功能 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否曾遇到过在Windows 11 24H2 LTSC系统中…...