Linux网络编程——网络初识

文章目录

    • 1. 网络协议初识
      • 1.1 为什么要有网络协议
      • 1.2 协议分层
    • 2. OSI七层模型
    • 3. TCP/IP五层(或四层)模型
    • 4. 网络传输基本流程
    • 5. 以太网通信

1. 网络协议初识

1.1 为什么要有网络协议

早期计算机是独立的,如果要进行数据交互,就得从一台主机到另一台主机;后来出现了网络,将多台计算机连接在一起,可以完成数据交互。

局域网LAN:多台计算机在同一个区域连在一起

广域网WAN:距离十分远的计算机连在一起。

“局域网”和“广域网”是一个相对概念,就比如说我们国家的网络就可以看作一个大型的局域网

但是计算机的传输媒介是光和电,通过频率和强弱来表示01,所以想要传递不同的信息,就要先约定好,也就是“协议”

  • 计算机有不同的厂商
  • 计算机也有不同的操作系统

如果要这些不同的计算机,不同的系统进行通信,就得约定一个共同的标准,也就是网络协议

1.2 协议分层

举个例子:

在C++中,有继承和多态,着本质上就是一种软件分层,基类是上层,子类的各种实现是下层,子类的修改并不影响基类;

Linux文件系统,每个文件里面都有struct file对象,里面包含了函数指针,这个指向着底层不同硬件的方法,在我们上层用户就可以,统一以文件的视角处理所有的软件,在硬件驱动和用户之间加了一个软件层,这也属于一种软件分层。

这些分层,可以在一定程度上降低各个模块之间的耦合度,层和层之间互不影响,在后续的维护上面成本就低一些。

而对于网络协议这里为什么是层状,原因很朴素:

  1. 网络规模太大,分层将各个模块解构出来
  2. 协议要解决问题,而这些问题也刚好是层状的

2. OSI七层模型

OSI组织针对分层的需求将网络协议分为了7层模型:

image-20240129093351073

但在实践中,有些是不好写到操作系统内部的,所以在工程实践的时候,严格上只划分了5层(会话层和表示层并没有在协议中体现出来,合并在应用层了)。

3. TCP/IP五层(或四层)模型

  • **物理层:**负责光电信号的传递方式,我们现在使用的光纤、WiFi都是属于物理层概念,物理层的能力决定了最大传输速率、传输距离、抗干扰性等。
  • **数据链路层:**负责设备之间的数据帧的传递和识别
  • **网络层:**负责地址管理和路由选择,在IP协议中通过IP地址来标识一台主机,通过路由表的方式规划两台主机之间的数据传输线路(路由),路由器工作在网络层
  • **传输层:**负责数据之间通信的安全性和可靠性
  • **应用层:**负责应用之间的沟通

image-20240129102432760

传输层和网络层属于Linux内核的模块,而网卡本质上是属于硬件,我们获取信息本质就是通过网卡将数据拉取到本地,所以网络通信本质上也是访问硬件,而用户是没有资格去直接访问硬件的,所以操作系统要提供一批系统调用(一般由传输层提供)

不管是Linux还是Windows或者是其他的操作系统,它们在系统这块不管怎么不同,但是在网络层面,必须要遵守网络协议标准,不然无法入网

4. 网络传输基本流程

在网络协议栈中,每一层都有对应的协议

image-20240129112952116

在封装的时候,就要考虑到解包的问题,所以任何协议层都要提供解包的方法,即将有效载荷和报头分离;同时每层给协议也需要有将自己的有效载荷交付给上层哪个协议的能力

5. 以太网通信

每台主机在局域网上,都需要有自己唯一的“编号”

在一个教室里面,老师在上面讲课,点人回答问题,比如说点的是“阿坤,请问回答如何训练鸡打篮球”,老师说的这个话,此时教室里所以的人都听到了,可是站起来准备回答的只有“阿坤”。因为这个报头是“阿坤”的,其他人在脑海对比之后发现不是自己,所以没有站起来,然后将整个报文丢弃。

然后“阿坤”说:“老师,训练鸡打篮球首先要养两年半”,此时这个话,全班也听到了,但是这个报头是“老师”,所以其他人对比之后,也是将报文丢弃,这整个过程,虽然其他人都听到了,但是对于“阿坤”和“老师”来说,他们认为本次只完成了他们两个之间的交流。

上面这个例子,就是以太网(局域网)的通信原理。

这个“编号”就是主机的mac地址,当要进行通信的时候,就会携带自己的编号和对方的编号,比如说有10台主机h1、h2...h10

主机h1要给h10发信息,在网卡层面,除了h1本身,其他的9台主机其实都收到了信息,在数据链路层就会进行解析,发现目标不是自己就之间丢弃,然后上层并不知道这个事情,在底层直接处理掉了;如果是自己,则层层解析,拿到最后的信息。

如果想搞乱一个局域网,只需向局域网中不断发送垃圾信息,和正常信息不断碰撞,让主机收不到正常信息即可。

当然除去恶意碰撞,每台主机都要有自己的碰撞避免算法(发生碰撞时,错峰发送),这个是以太网自己协议自己定的。

息不断碰撞,让主机收不到正常信息即可。

当然除去恶意碰撞,每台主机都要有自己的碰撞避免算法(发生碰撞时,错峰发送),这个是以太网自己协议自己定的。

局域网可以看作是多台主机共享的临界资源

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

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

相关文章

超越人类上限的策划:百度输入法在候选词区域植入广告

一位 V2EX 用户最新发帖称,百度输入法的最新版本中引入了一个新功能,将广告直接植入到候选词区域。 具体表现为,当用户输入某些关键词时,候选词区域会显示与输入内容相关的广告链接。例如,用户输入“招商”时&#xf…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)

文章目录 第5章 决策树—python 实践书上题目5.1利用ID3算法生成决策树,例5.3scikit-learn实例《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树 第5章 决策树—python 实践 import numpy as np import pandas as pd import matplotlib.pyplot as plt …

能源巨头施耐德电气遭遇勒索软件攻击

Bleeping Computer 网站消息,媒体透露能源管理和自动化巨头施耐德电气公司近期遭到 Cactus 勒索软件攻击,导致公司大量数据被盗。 施耐德电气是一家法国跨国公司,主要生产能源和自动化产品,从大卖场的家用电气元件到企业级工业控制…

后序遍历的线索化二叉树

对于后序遍历,需要明确,往往叶子结点,只能指向右子树(如果右子树存在的情况),或者指向该结点(因为这才是后序遍历),同样在进行退出到前一次递归的时候,我们要…

怎么控制Element的数据树形表格展开所有行;递归操作,打造万能数据表格折叠。

HTML <el-button type"success" size"small" click"expandStatusFun"> <span v-show"expandStatusfalse"><i class"el-icon-folder-opened"></i>展开全部</span><span v-show"expan…

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

OpenAI发布新模型!ChatGPT性能重磅提升,API大幅降价,GPT-4 「变懒」被修复

OpenAI 对ChatGPT进行了大更新&#xff1a;推出了新一代的嵌入模型&#xff0c;对GPT-4 Turbo模型进行了更新&#xff0c;并将很快对GPT-3.5 Turbo的API进行大幅降价&#xff0c;GPT-4「变懒」行为也被修复。 接下来二狗就带大家看看ChatGPT的这次详细更新。 推出新的嵌入模型…

电脑护眼模式怎么设置?4个有效方法保护眼睛!

“我感觉每天使用电脑的时间久了&#xff0c;眼睛总是不太舒服。电脑护眼模式怎么设置呢&#xff1f;有什么比较好用的方法可以推荐吗&#xff1f;” 如果长时间使用电脑&#xff0c;或许会让我们感到用眼疲劳。电脑护眼模式是现代人常用的电脑设置之一&#xff0c;它能有效地减…

大数据学习之Redis,十大数据类型的具体应用(一)

目录 3. 数据类型命令及落地应用 3.1 备注 3.2 Redis字符串&#xff08;String&#xff09; 单值单value 多值操作 获取指定区间范围内的值 数值增减 获取字符串长度和内容追加 分布式锁 getset(先get后set) 3.3 Redis列表&#xff08;List&#xff09; 简单说明 …

switch-case的简单使用

签名&#xff1a;但行好事&#xff0c;莫问前程。 文章目录 前言一、switch二、case三、break四、default总结 前言 记录一下switch-case的简单使用。 一、switch switch中的表达式只能是特定的数据类型。如下&#xff1a; byteshortcharint枚举&#xff08;jdk5.0&#xff…

Java API 操作 HDFS

Java API 操作HDFS一般有两种方式&#xff1a; 使用HDFS客户端配置文件自动配置 Java 代码中配置 一 使用HDFS客户端配置 1.1 下载HDFS客户端配置 1.2 创建Maven项目 创建Maven项目&#xff0c;将下载的客户端配置文件 core-site.xml、hdfs-site.xml 放入resources目录下&…

echart 完整例子

<!--集团用电数据柱状图--> <template><div class"scsj-wsd"><div class"type-btns"><divclass"btns-item":class"currType 0 ? active : "click"change(0)">年</div><divclass&q…

华为OD-华为机试精讲500篇系列文章目录介绍(持续补充ing)

目录 背景介绍 什么是华为OD&#xff1f; OD现状 OD趋势 华为OD机考刷题攻略 1、刷题资料&#xff1a;投递岗位通过筛选后提供 2、注意事项&#xff1a; 真题代码目录 背景介绍 经济下行的这几年&#xff0c;每个人都感同身受&#xff0c;如何让自己在芸芸众生中脱颖而…

【高效开发工具系列】Wolfram Alpha

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Unity3d Cinemachine篇(三)— FreeLook

文章目录 前言一、使用FreeLook制造第三人称跟随效果1. 创建一个游戏物体2. 创建FreeLook相机4. 完成 前言 上一期我们简单的使用了Dolly CamerawithTrack相机&#xff0c;这次我们来使用一下FreeLook 一、使用FreeLook制造第三人称跟随效果 1. 创建一个游戏物体 游戏物体比较…

(十)springboot实战——springboot3下的webflux项目mysql数据库事务处理

前言 WebFlux 是 Spring Framework 5.0 中引入的一种新型反应式编程模型&#xff0c;支持非阻塞 I/O&#xff0c;适用于高并发、高吞吐量的应用程序。在 WebFlux 应用程序中使用事务需要注意以下几点。使用 Reactive R2DBC&#xff1a;WebFlux 支持使用 Reactive R2DBC 访问关…

WebService的services.xml问题

WebService有多种实现方式&#xff0c;这里使用的是axis2 问题&#xff1a; 在本地开发&#xff0c;访问本地的http://localhost:8080/services/ims?wsdl&#xff0c;正常访问 但是打成jar包&#xff0c;不管是linux还是window启动&#xff0c;都访问不到&#xff0c;报错…

金线检测步骤

半导体行业,金线检测是必不可以少的一个检测项,除了焊点,die面,手指以外的必检项目. 重难点在于金线的提取,算法多种多样,找到适合才是关键,涉及到打光,图像处理,这里不做深入分析,软件和硬件配合好才能做的最好. 经典算法Block分析,结合图像检测. 高斯算法提取 边缘检测算法提…

空间域:空间组学的耶路撒冷

文章目录 环境配置与数据SquidpySpaGCN将基因表达和组织学整合到一个图上基因表达数据质控与预处理SpaGCN的超参优化空间域 参考文献 空间组学不能没有空间域&#xff0c;就如同蛋白质不能没有结构域。 摘要&#xff1a; 空间域是反映细胞在基因表达方面的相似性以及空间邻近性…

【Android Studio 启动出错】

Android Studio版本&#xff1a;2022.3.1 出错前操作&#xff1a; 昨晚开着三四个项目&#xff0c;然后太晚了直接关机睡觉&#xff0c;第二天起来开机&#xff0c;启动Android Studio&#xff0c;就出现了这个问题&#xff1a; Internal error. Please refer to https://co…