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检测: 五、 修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失…

【Luogu】 P5769 [JSOI2016] 飞机调度

题目链接 点击打开链接 题目解法 考虑可以经停,从 i i i 到 j j j 包括维修在内的最短时间,这是可以通过 f l o y d O ( n 3 ) floyd\;O(n^3) floydO(n3) 求的 这样我们可以维护出一辆飞机是否可以先运行航班 x x x 再运行航班 y y y&#xff0c…

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

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

使用ChatGPT构建一个AIML聊天机器人是什么体验

​ 使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言&#xff0c…

嵌入式学习之linux

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

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

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

如何通过以太坊JSON-RPC方式获取ERC-20代币的信息?

目录 一、ERC-20介绍 二、ERC-20代币标准功能 1、可选功能 2、标准功能 三、获取代币信息

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

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

C++:编译与链接

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

Qt基础 线程池

目录 QThreadPool类 QRunnable类 应用场景示例 QThreadPool类 主要属性: 1、activeThreadCount: 此属性表示线程池中的活动线程数,通过activeThreadCount() 调用。 2、expiryTimeout: 线程活着的时间。没有设置expiryTimeout毫秒的线程会自动退出&am…

【PHP】流程控制-ifswitchforwhiledo-whilecontinuebreak

文章目录 流程控制顺序结构分支结构if分支switch分支 循环结构for循环while循环do-while循环continue和break 流程控制 顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构) 分支结构:给定一个条件,…

OAuth2.0 客户端实战

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

「Java」《深度解析Java Stream流的优雅数据处理》

《深度解析Java Stream流的优雅数据处理》 一、引言1.1 背景1.2 Stream流的意义 二、Stream流的基本概念2.1 什么是Stream流2.2 Stream与传统集合的对比 三、创建Stream流3.1 通过集合创建Stream3.2 使用Arrays和Stream.of创建Stream3.3 从文件和网络流创建Stream 四、 中间操作…

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系列高压放大…

【分布式】VMware FT概要

讨论了1primary 1backup的情况,比较好理解, 6.824中以该论文为例,介绍了分布式系统中复制的概念,复制的方式。以下简要讲述一些关键点,来源于MIT6.824课程,翻译版本 https://mit-public-courses-cn-transl…

模板方法模式在JDBCTemplate中的应用

上一篇中系统总结了模板模式的原理和使用,提到了模板方法和回调接口。回调接口和模板方法类之间的关系可以看作服务与被服务的关系,模板方法类想要回调接口做事,就要提供相应的资源,接口用提供的资源做事,完事后&#…

【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下,理解并预测生物种群如何应对气候变化,特别是它们的地理分布如何变化,已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟,不仅可以量化描述物种对环境的需求和适应性,预…