当前位置: 首页 > news >正文

【Linux网络(一)】初识网络

目录

一、初始网络

二、网络为什么要进行分层

三、网络传输的基本流程

 四、初始IP地址和MAC地址


一、初始网络

网络其实就是进程间通信的一种,跨网络通信是在不同主机上进行的(比如在西安要访问qq,而qq的服务器进程可能在深圳),而通信的复杂程度是和距离成正比的。跨网络通信需要解决一些问题:

1、如何处理网络中获取的数据?

2、在网络中丢包了怎么办?

3、怎样定位要访问的主机或者要访问的进程?

4现实生活中有很多路由器可以当网络跳板,怎样知晓下一跳往哪走?

因此,为了解决上面的问题,要指定协议         协议的本质就是一层软件层

四层模型以及它们的协议:

  • 应用层(HTTP协议)
  • 传输层(TCP/UDP协议)
  • 网络层(IP协议)
  • 数据链路层(ARP协议)

 物理层偏向硬件

二、网络为什么要进行分层

进行分层的原因:

  • 场景复杂,分层有利于拆分复杂场景
  • 功能解耦,便于后续进行构造维护

网络进行分层之后,不同层负责不同的功能,互相之间不会有干扰,并且每一层都有自己的协议,虽然现在大多数都是使用TCP/IP协议,但是不能保证未来是否会退出更优的协议,所以为了未来的可维护性,分层也是很有必要的。除此之外,一旦网络通信中出现了错误,分层就能很好的定位错误出现在哪一层,进而该善组件。

网络编程使用的是系统调用:

  • 应用层对shell,应用软件
  • 传输层和网络层对应OS
  • 数据链路层对应的是驱动软件
  • 物理层对应硬件

三、网络传输的基本流程

1、每一层都有自己的协议定制的方案

2、每一层都要有自己的协议报头(字段)

3、从上到下交付数据,需要添加报头

4、从下到上交付数据,需要去掉报头

由上图可以看出, 客户端和服务器的每一层使用的协议都是一样的,也就是说,在客户端的X层添加了协议报头的数据,在服务器的X层会使用同样的协议来拆解报头,使用这种方法可以让数据在客户端的X层和服务器X层看起来是一样的。   除此之外,数据在经过数据链路层之后,可能会经过多个路由器才能到达对方服务器。

报文= 报头 + 有效载荷 

上层数据向下传送时,每一层都有自己的协议,要想对方的同一层根据协议解析数据,就要加一个报头。类似于快递要贴上订单号给每一个快递员或驿站传递信息,收到快递后要把订单号去掉,收到的数据中,多出来的部分就是协议报头 

网络通信的本质就是:贯穿协议栈的过程      通信的过程就是不断地封装和解包的过程。

补充:

1、几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力 

2、几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的的哪一个协议的能力

以太网通信:
交换机---划分碰撞域  任何主机都可以向局域网中发数据,但是任何时刻只允许一台主机向局域网中发数据,避免碰撞。  局域网是共享资源

 四、初始IP地址和MAC地址

认识IP地址:

IP协议有两个版本IPv4和IPv6  我们只说IPv4也是最常见的

  • IP地址是IP协议中,用来标识网络中不同主机的地址
  • 对于IPv4来说,IP地址是一个4字节,32位的整数
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

认识MAC地址:

  • MAC地址用来识别数据链路层中相连的节点;

  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

IP地址和MAC地址的区别:

IP地址标识的是从当前主机到目标主机的起点与终点.而MAC地址标识的是从当前主机到目标主机的路程中,下一跳要往哪儿跳?我们用唐僧取经的例子来说明,唐僧从东土大唐去西天取经,那么源IP地址就是东土大唐,目的IP地址就是西天.而去西天可能要经过车迟国,黑风岭,火焰山,女儿国等地方,假设下一站是火焰山,那么目的MAC地址就是火焰山

相关文章:

  • 使用外挂工具,在教师资格面试抽题系统中自动填入身份证号
  • git文件过大导致gitea仓库镜像推送失败问题解决(push failed: context deadline exceeded)
  • ragflow-组件可视化工具 es默认用户名elastic
  • git pull报错
  • 【AI大模型智能应用】Deepseek生成测试用例
  • Redis分布式锁
  • [Java]使用java进行JDBC编程
  • 大规模语言模型的涌现能力
  • linux和windows之间的复制
  • AI+Python机器学习小项目教程(数据分类)
  • JAVA面试_进阶部分_正确使用 Volatile 变量
  • Web Workers 客户端 + 服务端应用
  • Python编程学习13条Python2.x和3.x的区别?
  • 【odoo17】odoo前端视图的结构分析及新增视图类型的实现
  • 【从零开始学习计算机科学】操作系统(一)什么是操作系统?操作系统的功能是什么
  • 案例1_1:Proteus点亮8个蓝色LED灯
  • 从头开始开发基于虹软SDK的人脸识别考勤系统(python+RTSP开源)(五)补充剩余内容
  • 邮件发送IP信誉管理:避免封号
  • 用CSS画一条0.5px的线
  • Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案
  • seo高手培训/seo快速入门教程
  • 廊坊盘古网站建设/爱站网长尾关键词挖掘查询工具
  • 自己做视频网站用cdn那个便宜/seo快速排名软件平台
  • 莱芜可靠的网站建设/营销案例100例小故事及感悟
  • 某某公司电子商务网站建设与维护/seo和sem的联系
  • wordpress 打开网页慢/上海怎么做seo推广