Linux网络——从《计算机网络》到网络编程

ops/2024/12/22 20:59:26/

文章目录

    • 从《计算机网络》到网络编程
      • 从计算机到计算机网络
      • 解决问题
      • 网络与计算机系统
      • 计算机网络的传输流程
      • IP地址与MAC地址

从《计算机网络》到网络编程

科班的同学大多学过计算机网络,而非科班的同学也多多少少听说过一些

计算机网络体系十分繁杂且精妙,这三四十年来计算机网络技术不断进步,但是核心是TCP/IP、UDP协议

从计算机到计算机网络

我们说一个计算机中的进程可以处理一定的任务

当他想与另一个进程进行通信时,就需要IPC的各种方式

但无论是管道、共享内存都是利用内存作为中转

如果想让另一台计算机的进程也能与这个计算机的进程进行通信呢

聪明的你肯定想到,把内存连起来呗,让他们都能访问到就行

诶,恭喜你,发明了计算机网络

所谓的计算机网络其实就是若干台计算机进程之间进行通信的一个过程

但是这里就有了很多问题

  1. 当时的计算机系统各异,Linux、MacOS、Windows,怎么样让他们也能进行通信,甚至同一个操作系统搭载在不同型号的计算机上都有可能不同
  2. 如果传输过程中出错了怎么办,要重传吗,还是将就着用
  3. 如果计算机之间怎么认得彼此,要知道计算机网络中可不止两台计算机,找到计算机了之后又要怎么找到你想找的进程呢
  4. 怎样让我在合肥的计算机访问到在北京的服务器
  5. 为什么无线网跟有线网都能进行通信呢

怪不得说计算机网络复杂呢,这些问题解决起来可是一点都不轻松

解决问题

大家其实都遇到了同样的问题,那么最好的解决方式就是开大会,定标准

这个标准我们就称之为协议,学过计算机网络的同学都懂,那些协议名字看起来就脑袋瓜疼

除此之外,我们在组织数据,处理任务的时候,从来都是将大问题化成小问题,解决了小问题再将各个模块拼起来,就成了如今庞大的知识体系

如果有过项目开发经验,会更有切身的体会

计算机网络也是如此,OSI标准将从下向上设计了七层网络模型,他设计的非常非常好,但是在实践中四层模型就能很好的解决问题,也称之为TCP/IP四层模型,在我们学习的过程中将物理层和数据链路层分开,变成五层模型

TCP和UDP是传输层协议,IP是网络层协议,TCP和IP都单独拿出来命名整个计算机网络协议,可想而知这两个协议簇对于计算机网络的重要性

我们这里简单介绍一下五层协议,并且说明一下这五层协议是如何解决那些个问题的

  • 物理层:规定了广电信号的传递方式,用什么线,以前用电缆,现在用双绞线,远距离会用光纤什么的,wifi的电磁波频率也算,主要是规定了传输距离、传输速率等等,集线器工作在物理层,稍后我们会讲这些网络设备有什么用
  • 数据链路层:这一层规定了设备之间数据的传送和识别,主要是让计算机分得清楚,什么样的01信号算这个数据包(数据帧)的开始,什么样的01信号算这个数据帧的结束,冲突检测(又冲突就自动重发),数据纠错,还有以太网、令牌环网、无线LAN的标准,交换机工作在数据链路层
  • 网络层:网络层主要负责地址管理和路由选择,数据走在大街上,他需要一个可以问路的人(路由器),才能知道自己下一步是直走还是左转,为了描述目的地,就需要一个地址,也就是ip地址,路由器工作在网络
  • 传输层:主要负责主机之间的数据传输,如果传输出错了怎么办,是重传(TCP),还是放弃(UDP)
  • 应用层:负责应用程序之间的沟通,电子邮件传输协议SMTP,文件传输协议FTP,网络远程访问协议Telnet,还有耳熟能详的HTTP协议

下面是网络设备的介绍

  • 集线器:其实就是延长版的网线,解决了网线不够长的问题,三台计算机如何连接的问题,总不能用剥线钳吧
  • 交换机:交换机就稍微带点脑子了,他可以解决计算机互联时数据冲突的问题,一条线不能既往左发数据又往右发数据,就像一条路不能既有向左开的车又有向右开的车一样,数据也会发生碰撞,而交换机就能屏蔽两个接口的碰撞,把他们分为两个碰撞域,而上面的集线器就没有这个功能了,因为他的本质就是网线
  • 路由器:路由器就像是热心大叔一样,你想去哪里他都知道,你只管问,他不仅能让你不撞车,还能告诉你怎么走,让你不绕弯子,也就是路由器可以划分广播域,让你知道往这条路走一定是对的,而上面的交换机和集线器就没有这个功能,因为他们也不认识路

网络与计算机系统

除了上面说的搭积木原理,其实这些层次也对应着操作系统的层次

因为是计算机先生出来的,才有的计算机网络

如果计算机网络违背了计算机系统的设计原则,那还有什么用

仔细看其实就可以发现,网络和计算机的对应关系

物理层对应着计算机的硬件,各种接口、设备

数据链路层对应着驱动,网卡驱动、显卡驱动

传输层和网络层对应着操作系统,他们处理了来自各个设备的信息,让上层用户看起来并没有什么区别

应用层对应着各种库,shell,应用软件

计算机网络的传输流程

在这里插入图片描述

网络的每一层都有着自己的协议方案,因此也有着自己专门的标识(报头)

当应用层的两个进程想要通信时,实际上的数据是自己的电脑从应用层到传输层到网络层到链路层,层层套上自己的包头,让别人认识自己,让对方认识自己

通过以太网或者无线网传输

当对方收到之后,从下到上一层一层剥开,才能拿到最终的想要的报文数据

但是如果每一层对应着看,他们似乎都是和对面的同一层进行交流

在数据传输的过程中,可能经历了数个路由器,这是一个艰难的旅程

在这里插入图片描述

IP地址与MAC地址

IP地址有两个版本,IPv4和IPv6,是网络层协议的内容

6是4的升级版,但是还是以4为基础的,毕竟现在6还是推广阶段,4仍然在使用

一般我们常用的还是4,使用点分十进制来表示,例如,192.168.0.1、127.0.0.1等等,每一个数字是32位,取值从0到255

MAC地址也算物理地址

用来标识数据链路层的地址,一般来说,一个设备就有一个甚至多个MAC,长度是48位一共6字节,一般来说MAC地址是全球唯一的

从下一篇开始我们就着手实践,将从前学习的内容全部串联起来,C++、Linux系统编程、进程间通信


http://www.ppmy.cn/ops/108930.html

相关文章

Qt-QWidget的focusPolicy属性(20)

目录 描述 相关API 使用 描述 这里引入了焦点的概念,这个很重要,也是伴随后面介绍中的一个很重要的概念 拿魔兽世界来举例,如下我们在操作兵种的时候,需要先选中单位,然后才能对这些单位进行命令的下达 这一点在笔…

framebuffer帧缓存

framebuffer:帧缓冲,帧缓存 Linux内核为显示提供的一套应用程序接口。(驱动内核支持) framebuffer本质上是一块显示缓存,往显示缓存中写入特定格式的数据就意味着向屏幕输出内容。framebuffer驱动程序控制LCD显示设备&#xff0…

【专题】2024年8月医药行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37621 在科技飞速发展的当今时代,医药行业作为关乎人类生命健康的重要领域,正处于前所未有的变革浪潮之中。数智医疗服务的崛起,为医疗模式带来了全新的转变,开启了医疗服务的新时代。…

C++11深度剖析

目录 🚀 前言:C11简介 一: 🔥 统一的列表初始化💫 2.1 {}初始化 二: 🔥 std::initializer_list 💫 2.1 std::initializer_list是什么类型💫 2.2 s…

黑马点评11——UV统计-HyperLogLog

文章目录 HyperLogLog的用法测试百万数据的统计 HyperLogLog的用法 简直就是天生用于UV统计的,太爽了! 测试百万数据的统计 /*** info memory* 2107168* 插入1000000条数据后,内存的变化* 2121552*/Testvoid testHyperLogLog(){String[] val…

iOS——APP启动流程

APP启动 APP启动主要分为两个阶段:pre-main和main之后,而APP的启动优化也主要是在这两个阶段进行的。 main之后的优化:1. 减少不必要的任务,2.必要的任务延迟执行,例如放在控制器界面等等。 APP启动的大致过程&#…

StorageSync数据缓存API

uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…

若依框架登录鉴权详解(动态路由)

若依框架登录鉴权:1.获取token(过期在响应拦截器中实现),2.基于RBAC模型获取用户、角色和权限信息(在路由前置守卫),3.根据用户权限动态生成(从字符串->组件,根据permission添加动…