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源和目的地址在路由过程中始终不变

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis命令总结

1、启动Redis服务,登录Redis # 开启redis服务 redis-server redis配置文件路径例子: redis-server redis.windows.conf# 连接redis 【无密码】 redis-cli# 连接redis【有密码】 # 1 先连接再输入密码 redis-cli auth 密码 2、连接时输入 IP址、端口号、…

Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程

这个是篇学习 Handsfree_ros_imu 传感器的博客记录 官方教程链接见: https://docs.taobotics.com/docs/hfi-imu/ 产品功能 IMU 内有 加速度计,陀螺仪,磁力计这些传感器,通过固定 imu 到物体上后,可以获取物体在运动…

力扣LCR 166. 珠宝的最高价值(java 动态规划)

Problem: LCR 166. 珠宝的最高价值 文章目录 解题思路思路解题方法复杂度Code 解题思路 思路 改题目与本站64题实质上是一样的,该题目在64题的基础上将求取最小路径和改成了求取最大路径和。具体实现思路如下: 1.定义一个int类型的二维数组dp大小为给定…

代码随想录第五十五天——判断子序列,不同的子序列

leetcode 392. 判断子序列 题目链接:判断子序列 确定dp数组及下标的含义 dp[i][j]:以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列长度为dp[i][j]确定递推公式 分为两种情况:s[i - 1] 与t[j - 1]相…

一起学习python类的属性装饰器@property

之前文章我们介绍了class的一些通用功能,比如类属性/类方法/实例属性/实例方法等,之前的属性可以直接修改和访问(设置私有属性,不能直接访问,可通过对象名._[类名][属性名]的方式访问),没有一些权限的控制逻…

049.Python包和模块_虚拟环境超详细讲解

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理?

环境 戴尔R420 服务器 1U 2台直连存储 4U CentOS 7 问题描述 IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理? 服务器上电开机就出现进入紧急模式 Welcome to emergency mode! After logging in, type “journalctl …

开关电源PFC电路原理详解及matlab仿真

PFC全称“Power Factor Correction”,意为“功率因数校正”。PFC电路即能对功率因数进行校正,或者说能提高功率因数的电路。是开关电源中很常见的电路。 在电学中,功率因数PF指有功功率P(单位w)与视在功率S&#xff08…

动态pv策略和组件

pv和pvc,存储卷: 存储卷: emptyDir 容器内部,随着pod销毁,emptyDir也会消失 不能做数据持久化 hostPath:持久化存储数据 可以和节点上的目录做挂载。pod被销毁了数据还在 NFS:一台机器&am…

centos7下升级openssh9.4p1及openssl1.1.1v版本

背景:客户服务器扫描出一些漏洞,发现和版本有关,漏洞最高的版本是9.3p2,所以我们安装一个openssh9.4p1版本及openssl1.1.1v版本 虽然我们进行了镜像备份,为了安全先安装telnet以防止升级失败无法通过ssh连接服务器 一…

大模型在广告ctr预估中的应用

背景 预训练大模型在ctr预估方面取得了不错的效果,但是应用大模型方面还主要停留在提取离线预训练,然后使用大模型的打分结果或者中间的embedding向量,这种级联的应用方式相对灵活方便。但是这种使用大模型提取特征的方式存在自身的问题&…

无法解析的外部符号 “public: virtual void * __cdecl MyTcpsocket::qt_metaca

问题:严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "public: virtual void * __cdecl MyTcpsocket::qt_metacast(char const *)" (?qt_metacastMyTcpsocketUEAAPEAXPEBDZ) SmartTool D:\…

[软件工具]pdf多区域OCR识别导出excel工具使用教程

首先我们打开软件,界面如下: 如上图,使用非常简单,步骤如下: (1)选择工具-取模板选择一个pdf文件划定自己需要识别的区域,如果你选择第2页指定区域则软件统一识别所有pdf第2页指定区…

鸿蒙基础开发实战-(ArkTS)像素转换

像素单位转换API的使用 主要功能包括: 展示了不同像素单位的使用。展示了像素单位转换相关API的使用。 像素单位介绍页面 在像素单位介绍页面,介绍了系统像素单位的概念,并在页面中为Text组件的宽度属性设置不同的像素单位,fp…

AI副业拆解:文字生成图文绘本,赋予你的故事生命,Story Agent智能绘本创作神器震撼登场!

大家好我是在看,记录普通人学习探索AI之路。 对话即创作,颠覆传统!🚀 Story Agent,一款前所未有的开源故事绘本生成智能体,让你与科技的边界交融,以对话的形式轻松唤醒内心深处的故事精灵。&…

Object.keys()

目录 1、Object.keys() 是什么? 2、Object.keys(obj) 用法: 2.1 如果对象是一个对象,会返回对象的属性名组成的数组; 2.2 如果对象是一个数组,则返回索引组成的数组: 2.3 如果是字符串,返回…

【微服务】日志搜集es+kibana+filebeat+redis+logstash(单机)

日志搜集系统搭建 基于7.17.16版本 ps: 项目是toB的,日志量不大 前置准备 软件下载 7.17.16版本。8.x版本需要JDK11 elastic.co/downloads/past-releasesJDK java8 Linux elastic 软件不能以root用户启动,需要创建用户 sudo useradd elastic #给此…

【Redis】Redis持久化方式

Redis 中有两种持久化方式,分别为 RDB 和 AOF。 RDB RDB 全称 Redis Database Backup file,也叫做 Redis 数据快照。简单来说就是把 Redis 中的数据记录到磁盘中。当 Redis 实例故障重启后,从磁盘读取快照文件,恢复数据。 RDB有…

Vue新手村(二)

目录 1、计算属性 2、事件修饰符 2.1、stop事件修饰符 2.2、prevent事件修饰符 2.3、self事件修饰符 2.4、once事件修饰符 3、按键修饰符 3.1、enter回车键 1、计算属性 计算属性: computed:vue官方提供一个计算属性作用:在完成某种业…

文件上传进阶绕过技巧(一)和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战:upl…
最新文章