Linux网络编程1(网络基础定义)

网络早已成为我们日常生活的一部分,经常使用互联网的人很难长时间内离开互联网。你是否好奇你的电脑仅仅插上一根网线,你发给朋友的聊天信息就能准确无误的到达朋友的手机或者电脑上,你是否好奇为何你仅仅在浏览器输入一个网址,点击一下enter,网页图片和视频就展现在你的眼前,这一切的背后究竟是什么原理?在网络编程的系列学习中,我们将逐渐揭开网络神秘的面纱,不仅要懂网络,还知道如何编写网络程序

网络的起源

网络最初是美国军方用来通信的一种手段,后来逐渐下放在民用市场被广泛使用,一开始的网络是由美国政府掌管,后来逐渐分配给各大运营商(ISP)来管理,随着越来越多的人加入互联网,互联网的规模也变得越来越大。网络的出现是一种必然的趋势,随着人们逐渐依靠计算机来解决问题,就暴露出很多问题

 

某人用计算机A得出计算结果,要记下数据,来到计算机B把A的数据结果输入进去,然后再把计算机B的结果输入到计算机C中得出最终结果,这个过程中虽然计算机解决了计算问题,但是各个计算机之间相互独立,还是很不方便

如果计算机A和计算机B,C之间能够互相连接起来,A计算完把结果传送给B,B再传送给C这样不就不需要人跑来跑去,如下图

 

要是此时计算机C想直接从A拿到数据,直接在A,C之间接线单这一个还好,如果接入更多的计算机呢?难不成每个计算机之间都接一条线吗?成本太高了,怎么更好的解决呢?我们可以引入第四台计算机,如下图

A把运算结果上传到服务器上,B和C可以访问这个服务器获取A的数据,并且以后再接入更多的计算机也不怕了,这是服务器的用法之一,现在的服务器有着更丰富的功能,是撑起互联网大厦的支柱

那么计算机A该如何找到服务器又成了一个问题,可以让A在这个局域网内进行广播,当服务器收到了广播,发现是在找自己,于是应答,建立A与服务器之间的通信,这样做会带来一系列的问题。首先A是广播,只要A发送消息,那么局域网内的所以机器都能收到消息,如果有非法计算机监听通信信息,会很危险,并且A发送消息时,整个局域网的信道都被占用,B和C都不能发送消息,否则就会产生信息碰撞,种种的不方便催生了交换机的诞生

交换机的原理是所有局域网内的主机都连接到交换机上,当计算机A想要给服务器发送信息时,只要发给交换机,交换机会自动找到服务器把信息转交,这样避免了信息泄露和碰撞

  

路由器又是个什么东西呢?假设现在成都有一个局域网A,上海有一个局域网B,现在A和B想要进行通信,两个局域网之间的互相连接就是靠路由器来实现的,把一个局域网比作一个山村的话,那么路由器就是离开这个山村去往外面世界唯一的通道,世界上的各个路由器互相连接就构成了庞大的互联网世界

 

网络分层模型 

上面仅仅是对互联网的一个简单描述,如果仅仅是科普程度也差不多了,但是作为程序编写人员,我们对互联网的了解要更加深刻,深入到具体的实现细节中,那么首先得明白互联网的层次模型,互联网共有两种层次模型,一种是OSI模型,一种是TCP/IP的模型

分层的目的是什么?要知道在主机上随手点击一下的网络请求具体实现要经过很多层次,假设你在使用浏览器,输入网址后点击访问,那么浏览器这个软件会将请求信息转交给OS,OS会对转交信息进行一定层度的包装,然后再转交给网卡,网卡将请求信息转换成模拟或者波信号发送出去

在这个过程中,浏览器软件负责请求网络通信,OS负责将信息包装,网卡负责传播信号,任何一个环节出了问题,就体现出分层解耦的作用了,当浏览器请求出了问题,并不会影响到OS和硬件,每一层都有自己的工作要做,当然刚学理解不了这些很正常,随着对每一个层次的深入学习后,再次看这个分层模型就能理解为何要这么做

实际上我们并不使用OSI模型,因为在实际的程序编写上发现应用层,表示层,会话层之间的联系很紧密,即耦合度高,不便于分开处理,因此TCP模型将这三个模型压缩成一个应用层,我么实际上使用的就是TCP模型,因为我们主要负责软件方面的,因此最底层的硬件部分我们并不怎么关心,所以TCP模型又可以看作是只有四层

网络的信息传送过程 

网络信息传送就是指一个请求信息是如何通过层次模型,层层包装最后传输给目的主机的,这个过程用语言描述并不直观,大家可以观看相关的视频来理解,例如在b站上搜计算机网络,就可以查看到相关的内容,建议大家去看看,找不到可以联系笔者

 

 协议

上面那张分层图,每一个分层都有对应的协议,那么什么是协议呢?大家都是明白协议的意思的只是不好口述出来,协议说简单点就是通信双方互相约定以某一种方式进行通信,以日常生活中的快递公司为例

常见的快递公司有邮政,京东,顺丰等,当我们在网上购物,商家会选择一个快递公司将货物递送出去,那么快递小哥如何知道要送达到哪里呢?快递公司会专门定制它们公司的快递送达协议,快递小哥只要根据这个协议执行,那么就能够把快递送给用户,这个快递协议具体就是体现在快递单上,快递单记录了该快递公司名称,用户地址,用户姓名,用户号码等等必要信息,所以快递协议是体现在快递单上的

同样的,我们后面会学习TCP协议,IP协议等,然后你会发现这些协议都有一个报头,TCP报头,IP报头等,和快递单是类似的,协议的内容体现在报头上的

 

上图就是IP协议的报头,每个字段的具体内容大家可以搜索查看,我们这里看看这个报头内部有一个协议字段,这个是什么意思?这个字段是记录的是当前信息的上一个协议用的是哪个?是TCP还是UDP,还是OSPF协议等等

为什么当前协议还有记录上一层使用的是什么协议呢?如果你看了网络信息传送过程视频你应该能想明白,当目的主机收到分组信息,会逐层向上传递,传到IP层时,它的上层有很多协议,有udp,有tcp,那么该传给谁呢?这个时候就提现到这个协议字段的作用了,协议字段里记录的是哪一个协议就传给哪一个协议

以太网名称由来 

平时主机上连接的网线而形成的局域网络被称为以太网,那么为什么叫以太网这个奇怪的名字呢?早期的物理学家发现声音的传播是依靠介质的,在真空状态下无法传播声音,于是就推测光的传播肯定也是要依靠介质的,于是把光的传播所依靠的介质称为以太,并做了大量实验想找到这种介质。后来有人科学的证明了,光的传播是不需要介质的,前面的实验就成了笑谈,网络祖师爷起这个名字是对物理界的一种调侃或致敬,不必奇怪,大佬嘛,能成为大佬,基本很多圈子都有身影

IP和MAC地址 

在网络上如何查找到具体的一台联网主机呢?这就靠IP地址了,IP地址就相当于主机的门牌号,唯一的标识网络上的一台主机

你可能会疑惑,32位的整数,2的32次方也不过才40亿多,怎么能满足全球50多亿的上网需求呢?我们将在后面解释这部分内容,不过未来的趋势是使用IPv6协议,共有128位,几乎可以给地球每一个沙子都分配一个ip地址,不过现在IPv6的普及还需要一段时间

MAC地址唯一的标识了一台网络硬件设备,MAC地址有48位, MAC地址一般是写死到网络硬件设备上的

MAC地址能标识唯一,IP地址也能标识唯一,那么为何还要IP地址呢?直接统一用MAC地址不就好了,有时候一台主机不止有一个网卡,如果有多个网卡,那么就会有多个MAC地址。在网络信息传输过程中,IP地址是不变的 ,一旦确定了目的主机的IP地址,就不会更改,MAC地址是动态变化的,每经过一个新的路由就要更新一跳的MAC地址,MAC地址常用来局域网内搜寻某个主机,随着对网络学的加深,大家会对这两个地址有更加深刻的理解 

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

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

相关文章

亿赛通电子文档安全管理系统 RCE漏洞

亿赛通电子文档安全管理系统 RCE漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC检测: 五、 修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失…

【力扣】77. 组合 <回溯、回溯剪枝>

目录 【力扣】77. 组合题解回溯回溯法三步剪枝优化 【力扣】77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按任何顺序返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2]…

嵌入式学习之linux

今天,主要对linux文件操作原理进行了学习,主要学习的内容就是对linux文件操作原理进行理解。写的代码如下:

【AI】即使AI 时代,程序员也无需焦虑

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…

LLMs参考资料第一周以及BloombergGPT特定领域的训练 Domain-specific training: BloombergGPT

1. 第1周资源 以下是本周视频中讨论的研究论文的链接。您不需要理解这些论文中讨论的所有技术细节 - 您已经看到了您需要回答讲座视频中的测验的最重要的要点。 然而,如果您想更仔细地查看原始研究,您可以通过以下链接阅读这些论文和文章。 1.1 Trans…

C++:编译与链接

首先要思考问什么要编译与链接,首先这是一个如何把源程序即写好的代码编程可执行文件的过程,简单的加工模型如下图: 这是一个简单的加工模型,比较直观,但是有一个问题,就是如果对源程序进行修改&#xff0c…

OAuth2.0 客户端实战

上一次课程,我们了解了 OAuth 认证是怎么回事,以及了解了四种认证方式,今天我们将以 Github 为例,了解一下如何用 Flask 第三方应用 在之前的介绍 JWT 的时候,了解过 Authlib 库,Authlib 是集 JWT、OAuth1…

Go 语言的实战案例 | 青训营

Powered by:NEFU AB-IN 文章目录 Go 语言的实战案例 | 青训营 Go补充简介猜数游戏在线词典项目 Go 语言的实战案例 | 青训营 GO语言工程实践课后作业:实现思路、代码以及路径记录 Go补充简介 在计算机编程领域,Go 语言(也称为 Golang&…

[C++] STL_vector使用与常用接口的模拟实现

文章目录 1、vector的介绍2、vector的使用2.1 vector的定义2.2 vector迭代器的使用2.3 vector的空间增长问题 3、vector的增删查改3.1 push_back(重点)3.2 pop_back(重点)3.3 operator[](重点)3.4 insert3.…

【SQL中DDL DML DQL DCL所包含的命令】

SQL中DDL DML DQL DCL所包含的命令 关于DDL、DML、DQL、DCL的定义和适用范围如下: 数据定义语言(Data Definition Language,DDL): DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、A…

ATA-7000系列高压放大器——应用场景介绍

ATA-7000系列是一款理想的可放大交、直流信号的高压放大器。单端输出20kVp-p(10kVp)高压,可以驱动高压型负载。电压增益数控可调,一键保存常用设置,为您提供了方便简洁的操作选择。 图:ATA-7000系列高压放大…

shell 06(shell内置命令)

一、内置命令介绍 shell 内置命令,就是由 Bash shell 自身提供的命令,而不是文件系统中的可执行文件 使用type 来确定一个命令是否是内置命令: type 命令 通常来说,内置命令会比外部命令执行得更快: 执行外部命令时不但会触发磁盘 I/0&am…

MyBatis的核心技术掌握,简单易懂(上)

目录 一.MyBatis中的动态SQL 二.MyBatis中的模糊查询 1. # 符号 2. $ 符号 ---问题 ---所以大家知道 # 和 $ 在MyBatis中的模糊查询中的区别了嘛?? 三.MyBatis 中的结果映射 1. resultType: 2. resultMap: ---问题 ---…

时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)

时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比) 目录 时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)预测效果基本介绍模型介绍程序设计参…

React Diff算法

文章目录 React Diff算法一、它的作用是什么?二、React的Diff算法1.了解一下什么是调和?2.react的diff算法3.React Diff的三大策略4.tree diff:1、如果DOM节点出现了跨层级操作,Diff会怎么办? 5. component diff:6. e…

使用ELK(ES+Logstash+Filebeat+Kibana)收集nginx的日志

文章目录 Nginx日志格式修改配置logstash收集nginx日志引入Redis收集日志写入redis从redis中读取日志 引入FilebeatFilebeat简介Filebeat安装和配置 配置nginx转发ES和kibanaELK设置账号和密码 书接上回:《ELK中Logstash的基本配置和用法》 Nginx日志格式修改 默认…

Jenkins的流水线详解

来源:u.kubeinfo.cn/ozoxBB 什么是流水线 声明式流水线 Jenkinsfile 的使用 什么是流水线 jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。…

ROS2 学习(五)接口,动作

接口 通信双方统一规定好接口。比如图像 img,控制运动的线速度和角速度…… 我们也不用了解具体实现,基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package…

搭建CFimagehost私人图床,实现公网远程访问的详细指南

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

PMP证书的正确打开方式 get✓

在职场竞争日益激烈的今天,拥有一项专业认证成为了许多人提升自身竞争力的必备条件。而作为项目管理领域的顶级认证,PMP证书备受关注。不过,很多人对于PMP证书的费用颇有顾虑。那么,PMP证书有什么补贴政策呢?下面就为大…