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

计算机网络基础(三)

一.计算机网络体系结构

1.介绍OSI体系

为了使不同体系结构的计算机网络都能够互联,国际标准化组织于1977年成立了专门机构研究该问题,不久他们就提出了一个试图使各种计算机在世界范围内都能够互连成网的标准框架,也就是著名的“开放系统互连参考模型”,简称为OSI,OSI体系结构有时候我们也称之为OSI模型。

OSI是一个七层协议的体系结构:从下往上依次是物理层、数据链路层、网络层、运输层、会话
层、表示层、应用层


如图:

虽然OSI体系完备,但是实际上还是因为各种原因使其无法应用,现在我们更广泛应用的是TCP/IP的体系结构

2.介绍TCP/IP体系

TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层(用网际层这个名
字是强调这一层是为了解决不同网络的互连问题)

先给大家看一个图:(学完后面就理解了)

由于OSI的七层协议体系结构概念清楚,理论也比较完整,但是太过于复杂不实用。TCP/IP体系结构简单,但是也有一定的不足,所以在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。有时为了方便,也可把最底下两层称为网络接口层

如下图:

下面我们就对着这些层进行讲解(注意:我们是研究五层协议)

二.各层功能介绍

我们采取从上向下的方式进行介绍:

2.1.应用层

应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,等等。我们把应用层交互的数据单元称为报文(message)

2.2.运输层

运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。

运输层主要使用以下两种协议:
传输控制协议TCP(Transmission Control Protocol):提供面向连接的、可靠的数据传输服务

用户数据报协议UDP(User Datagram Protocol):提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性)

TCP和UDP协议都有固定的格式,数据在经过运输层时会根据所选择的运输协议在应用层传递过来的数据基础上加上对应协议的头部

2.3.网络层

网络层(network layer)主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择拥塞控制和网际互连等。
在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,简称为数据报。数据在经过网络层时会
加上IP协议的头部网络层

2.4.数据链路层

数据链路层常简称为链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)

例如:主机H1给主机H2发送数据,中间要经过三个路由器、电话网、局域网、广域网等多种网络

从五层协议原理体系结构的角度来看,主机应该具有体系结构中的各个层次,而路由器只需要具有
体系结构中的网络层、数据链路层、物理层。网络中的各个设备通过传输媒体进行互连,主机H1将需要发送的数据逐层封装后通过物理层将构成数据包的各个比特转换为电信号发送到传输媒体,数据包进入到路由器后,从下网上逐层解封到网络层,路由器根据数据包的目的网络地址和自身的转发表确定数据包的转发端口,然后从网络层向下逐层封装数据包,最后通过物理层将数据包发送到传输媒体,最后到达主机H2,主机H2在接收到数据包后再逐层解封

当我们研究数据链路层时,我们可以只关心数据链路层,而不考虑其他各层。我们可以想象,数据
只在数据链路层从左至右沿水平方向传送。从数据链路层来看,主机H1到主机H2的通信可以看作
是在4段不同的链路上的通信所组成的

如下图:

链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。要在链路上传输数据,仅有链路还不够,还需要一些通信协议来控制这些数据的传输,如果把实现这些协议的硬件和软件加到链路上就构成了数据链路 (DatanLink)

在数据链路上传输的数据包,又称为帧。(数据链路层是以帧作为单位传输和处理的)

数据链路层的协议有很多种,但是有三个基本问题是共同的。这三个基本问题就是:封装成帧、透
明传输和差错检测

下面我们就对这三个问题进行讲解:

2.4.1.封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧

下面我们来看两种帧:

帧头和帧尾的作用之一就是帧定界

但是我们看图发现PPP帧是存在帧头帧尾定界标志的,而MAC帧是不存在帧定界标志的

那么接收方是如何从物理层交付的比特流中提取出一个个的以太网帧的呢???

第一步:数据链路层封装好MAC帧,将其交付给物理层
第二步:物理层在MAC帧的前面添加8字节的前导码,前导码的前7个字节为前同步码,其
作用是使接收方的时钟同步,之后的1个字节为帧开始定界符,表明其后紧跟着的就是MAC帧

注意:bit流低位是头部!!!

但是你是否想过如果我们的帧中有效数据部分和帧首部或者帧尾部相同,此时是不是解帧时会提前结束,那么我们该如解决呢???看下一部分

2.4.2.透明传输

解决法一:字节填充(byte stuffing)或字符填充(character stuffing)

数据链路层在交付数据给物理层时,对帧进行扫描,首先扫描到SOH,然后每扫描到一个SOH或者EOT就在前面加转义字符ESC,直至扫描到最后一个EOT

如图:

此时只要接收端将转义字符删除即可!!!

解法二:零比特填充法

对数据进行扫描,当遇到SOH/EOT时(注意:不包括帧开始和结束位置)每5个连续的比特1后面就插入1个比特0

如图:

因此为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些,但是为了考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)

2.4.3.

2.5.物理层

物理层主要解决在各种传输媒体上传输比特0和1的问题,进而给数据链路层提供透明传输比特流的服务

由于传输媒体的种类太多(例如同轴电缆、光纤、无线电波等),物理连接方式也有很多例如点
对点连接、广播连接等,因此物理层协议种类也比较多。但是物理层为了解决在各种传输媒体上传
输比特0和1的问题,无论是那种物理层协议都需要满足主以下四个任务:

如图:

物理层主要与传输媒体有关,所以我们可以来简单了解下传输媒体:

主要分为以下两种:

1.导引型传输媒体:电磁波被导引沿着固体媒体传播

例如:同轴电缆,双绞线,光纤

非导引型传输媒体:非导引型传输媒体是指自由空间
例如:无线电波,微波,红外线,可见光

以上就是这次的内容,感谢你的支持!!!

http://www.dtcms.com/a/323584.html

相关文章:

  • [Shell编程] Shell 函数
  • PyQt5技术栈简述
  • .htaccess 文件上传漏洞绕过总结
  • Linux文件操作详解:一切皆文件
  • 编辑距离-二维动态规划
  • SkyWalking-3--Java Agent开发和集成示例
  • AI智能编程工具汇总
  • ComfyUI版本更新---解决ComfyUI的节点不兼容问题
  • MySQL 主备(Master-Slave)复制 的搭建
  • SOLIDWORKS 2025对工具栏等进行了重新布局和优化
  • GoEnhance AI-AI视频风格转换工具
  • gRPC 全面解析与实战 —— 从原理到同步/异步开发全攻略
  • Linux系统编程——进程地址空间
  • GM3568JHF:FPGA+ARM异构开发板环境搭建教程
  • 嵌入式学习day23-shell命令
  • Qdrant Filtering:must / should / must_not 全解析(含 Python 实操)
  • 【Python 高频 API 速学 ②】
  • 【线程池】压测确定线程池合适的参数
  • 【js】判断异步函数的返回值要加await
  • 使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
  • 计算机系统设计中都有什么任务~计算密集~IO密集~逻辑密集等
  • 提示条贴合右侧边栏
  • java web项目入门了解
  • 天地图,cesium,leaflet
  • java练习题:数字位数
  • Windows下使用PyInstaller打包PyQt项目
  • 第15届蓝桥杯Scratch图形化省赛中级组2024年8月24日真题
  • 4深度学习Pytorch-神经网络--损失函数(sigmoid、Tanh、ReLU、LReLu、softmax)
  • Linux-JSON Schema
  • Java类和对象课上练习题目设计