计算机网络基础(一):TCP/IP五层模型和OSI七层模型简介_七层网络模型和五层区别-程序员宅基地

技术标签: 网络  网络协议  tcp/ip  

对于同⼀台设备上的进程间通信,有很多种⽅式。⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备,就协商出了⼀套通⽤的⽹络协议

一、OSI模型

OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model)
在这里插入图片描述

二、TCP/IP五层模型

TCP/IP是一组协议的代名词,它包括许多协议,组成了TCP/IP协议簇。它是把OSI七层模型简化成了五层模型。每一层都呼叫它的下一层所提供的功能来完成自己的需求。
要注意TCP/IP是一个四层的体系结构这种说法,它指把物理层和数据链路层综合在一起,称之为链路层或网际接口层。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1)OSI和TCP/IP模型每层的作用:

每一层都是下一层的用户,不必关心下层是如何工作的,只需知道下层为自己提供什么服务以及本层要向上层提供什么服务即可。其实这样设计的好处就是可以把复杂的问题简单化,便于定位问题发生的位置。

推荐阅读资料:
OSI模型的简洁版介绍(易于理解):

计算机网络基础之应用层
计算机网络基础之表示层的功能和服务
计算机网络基础之会话层的功能和服务
计算机网络基础之传输层的功能和服务
计算机基础之网络层的功能和服务
计算机网络基础之数据链路层的功能与服务
计算机网络基础之物理层功能与协议
计算机网络基础之OSI参考模型

比较详细的版本

计算机网络——应用层
计算机网络—运输层
计算机网络 —— 数据链路层
计算机网络 —— 物理层

以OSI模型为例:
在这里插入图片描述

在这里插入图片描述
上图中的争议点:ARP应该在2.Data Link还是3.Network
ARP 属于网络层的观点:原因是 ARP 属于 TCP/IP 协议簇。在 TCP/IP 模型中,未定义 OSI 参考模型的物理层和数据链路层这两层的功能,它定义的都是在网际层及以上的协议。
ARP 属于数据链路层的观点:按照 OSI 参考模型,数据链路层封装 IP 报文时,需要通过 ARP 获取链路层目的地址,添加到报文头部,这就不属于网络层的功能了。
结论:在 TCP/IP 模式中 ARP 协议属于网络层,在 OSI 参考模型中 ARP 协议属于数据链路层。
所以在上图OSI模型中,ARP应该在2.Data Link而不是3.Network
(来源:ARP 属于哪层协议

应用层:

为应用程序或用户请求提供各种请求服务。也是我们能直接接触到的就是应⽤层(Application Layer),我们电脑或⼿机使⽤的应⽤软件都是在应⽤层实现。应用层有很多协议,每一个协议对应着计算机上的一个服务,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议。
在这里插入图片描述
关于应用层以上协议的介绍,详见博文计算机网络——应用层

表示层:数据编码、格式转换、数据加密。

表示层的功能大概可以分为以下三点:语法转换:沟通用户之间的编码规则,以便有一致的格式;语法选择:选择传输语法传送数据;连接管理:利用会话层服务建立表示连接,管理在这个连接之上的数据传输和同步控制,以及正常或异常的释放这个连接。

会话层:

支持会话连接的建立和释放,以及常规数据的传输;支持用户以半双工或全双工的方式交换数据,同时支持用户之间进行优先级较高的数据传输;支持用户分割会话单元内部的数据流,支持用户分割会话单元,要求活动和主同步令牌的支持;对于主同步点请求,对方必须予以应答;支持用户在异常情况下进行恢复动,支持活动管理服务,利用活动划分逻辑工作段,并加以控制和恢复。

  “会话”是指用户之间的信息交换过程。例如:进行文件传输,首先需要建立“会话连接”,通知通信对方“会话开始”,会话连接建立后,通信双方可进行文件传输;可以把每传输一个文件作为一个“活动”,发送方在开始传输该文件时,通知接收方“活动开始”;为使接收方接收同步,每发送一段数据后,设置一个“次同步点”,使得接收方可以检查数据接收的正确性;发送一组相对完整的数据后,设置一个“主同步点”,接收方收到主同步点信息后,给予确认,表示在这之前的数据已完全正确接收。一个文件传输结束时,通知接收方,本次“活动结束”,如要继续发送下一文件,则通知接收方“新的活动开始”,继续发送文件。 直至本次连接需要传输的文件都传输完毕,通知接收方“会话结束”,拆除会话连接。

    “活动”和“主同步点”同时也作为恢复点,如果传输过程中出现故障,传输中断,则等再次连接时,可以恢复最近一次活动,并从最后的主同步点开始重新同步,继续传输数据。

在这里插入图片描述

(来源:计算机网络基础之会话层的功能和服务

传输层:

可以实现应用间端到端的连接(进程到进程),负责为一个进行中的会话提供可靠的传输,完成端到端的通信链路的建立、维护和管理。首先传输层会将会话层发来的数据分割成若干份小的数据单元,然后再传输层为每一个数据单元的头部添加上控制信息,其中包含了源目端口号,然后数据经过通信子网到达接收方的传输层之后,会去掉报文头部的控制信息,最终将数据单元按照原来的顺序进行重组,发往本地的会话层 。当然了传输层也有相应的流量控制和差错检测功能流量控制功能是通过窗口技术来实现,避免本地端口发出的流量超过接收端口所能承受的接收能力。

传输层存在的意义: 1)解决通信子网性能的差异性: 世界上的各种通信子网的性能是存在着很大的差异的,这种差异具体指的是吞吐量、传输速率等。 会话层不能接受通信子网的这种差异性的存在,所以就在网络层和会话层之间增加了新的一层,即传输层。传输层在这里会使用分流/合流,复用/介复用技术等技术为上层的会话层屏蔽掉这种差异,让上层的会话层对下层的通信子网的差异性“视而不见”。 2)保证把来自源主机的信息准确的送往了目的主机中相应的程序: 其实计算机网络之间的通信,就是计算机之间的应用程序之间的通信。当两个主机之间的程序进行交互时,源主机的程序发出的信息需要准确的送往目的主机地相应程序。首先网络层只能做到将源主机的数据按照网络地址发送到目的主机,但是如何保证把来自源主机的信息准确的送往了目的主机中相应的程序呢。这个时候就需要传输层出马了,传输层可以根据端口号将数据准确无误的传送到对应的程序。

传输层的服务与协议: 传输层的服务也是分为面向有连接的服务和面向无连接的服务。那么为什么不直接使用网络层的虚电路电路服务和数据报服务呢?原因是网络层的这两个服务达不到传输层所要求的的标准,网络层的这两个服务终究会出现不可靠的情况。而会话层又无法对下面的通信子网进行控制,所以就添加了新的传输层,因为传输层会更容易检错纠正。不难看出传输层的服务其实就是网络层服务的增强版,相当于是网络层的补充。所以呢通信子网中的网络层的能力越高则传输层中协议就越简单。
(来源:计算机网络基础之传输层的功能和服务
在这里插入图片描述

网络层:
数据链路层:

在物理层的基础上为更上面的层提供服务。设立数据链路层的主要目的就是对物理层传输原始比特流的能力进行加强,将物理层提供的可能出错的物理链路通过数据链路层协议改造成逻辑上无差错的数据链路,实质对网络表现为无差错的链路。这也就是数据链路层协议的任务。物理层为数据链路层提供的服务是建立、维持和拆除连接,并在物理连接上透明传输比特流。物理层为上层提供一条连接,数据链路层为上层提供了改造后的无差错连接。

数据链路层的功能:

链路管理:两个结点要进行通信时,数据链路的创建、维护和释放就叫做链路管理;

帧同步:帧同步是指接收端应该能够准确的区分开每一帧的开始和结束;

差错控制:处理数据中可能出现的差错;

流量控制:协调发送时发送方的发送速率大于接收方的问题;

将数据和控制信息区分:使二者能够分开;

透明传输:如果实际传输中数据的某一比特串恰好和控制信息的某一比特串的完全一样时,要能够进行区分;

寻址:保证每一帧数据都能被正确送往目的地。

数据链路层的协议可以分为同步协议和异步协议,常用的典型协议是HDLC。

(来源:计算机网络基础之数据链路层的功能与服务

物理层:

真正意义上的物理层并不是指用于连接设备的具体的传输介质,而是介于数据链路层和传输介质之间的一层,起着数据链路层到传输介质之间的接口作用。解决如何在连接各种计算机的传输媒体上传输数据比特流 物理层的功能是传输数据位,它的服务是为上层数据链路层建立、维持和释放物理连接,并在物理连接上透明传输比特流。物理层协议的作用就是解决了网络设备和物理信道是如何连接并传输比特流的。

可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性,包括:

(1)机械特性:指明接口所用接线器的形状,性质,尺寸,引线数目排列,固定和锁定装置等待,比如无论什么材质的网线都是用的水晶头;

(2)电气特性:指明在接口电缆的各条线上出现的电压的范围;

(3)功能特性:指明某条线上出现的某一电平的电压表示的意义,比如什么范围的电压代表高电频,与电气特性有一种相互对照关系;

(4)过程特性:指明对于不同功能的各种可能事件出现顺序,比如报文的小组划分,组装的顺序;

对OSI七层模型的总结:

OSI模型成功的将网络协议、服务和接口三者分离开来。网络服务定义了每一层具有的功能,协议表示每一层的功能的实现方式,接口自然就定义了上层如何访问下层的服务。
在这里插入图片描述

物理层传输的单位是比特流,数据链路层传输的是数据帧,而网络层的传输单位是数据包。这里还要做一个比较,物理层要解决的问题是创建、维护和释放连接;数据链路层要解决的问题是将不可靠的物理链路改造成无差错的数据链路;而网络层主要解决的问题是选择路径,之所以设置网络层的目的就是要为报文分组提供最佳路径,通过通信子网到达目的主机。传输层在这里会使用分流/合流,复用/介复用技术等技术为上层的会话层屏蔽掉这种差异,让上层的会话层对下层的通信子网的差异性“视而不见”,实现端到端之间的建立和维持。传输层之上的会话层、表示层和应用层只是为程序服务的,不包含任何数据传输功能。他们的功能是是组织和同步进程间的通信、对数据的语法表示进行转换、为网络的最终用户提供服务。

原文链接:计算机网络基础之会话层的功能和服务

2)资源子网和通信子网的概念

通信子网和资源子网的划分是以功能为依据的。以OSI七层模型为例,资源子网提供的是访问网络和处理数据,由主机,终端,和终端控制器组成,对应于高三层(会话层、表示层、应用层);通信子网由各种网络通信设备(如我们熟悉的路由器、交换机)和通信线路组成,负责数据传输,对应于低三层(物理层、数据链路层、网络层)。

3)TCP/IP五层模型和OSI七层模型的主要区别:
  1. TCP/IP协议中的应用层处理开放式系统互联模型(OSI)中的第五层、第六层和第七层的功能。
  2. OSI 参考模型过于理想化,先定义参考模型再定义协议。TCP/IP 模型则正好相反,通过已有的协议归纳总结出来的模型,成为实际的网络协议标准。

OSI七层模型和TCP/IP协议的区别和联系

4)TCP/IP五层模型和OSI七层模型所需硬件基础

从一般的概念来讲,将网络互相连起来的要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或者桥接器(bridge)、交换机
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。
详细介绍推荐:计算机网络各层网络设备(中继器、集线器、网桥、交换机、路由器、网关)总结

其他参考:
【1】图解网络-小林coding-v3.0(来自公众号:小林coding)
【2】一文读懂OSI七层模型和TCP/IP五层模型
【3】TCP/IP 与 OSI:两种模型之间的区别是什么?
【4】计算机网络-网络层
(本文属于各种资料的摘抄,方便复习,已标注参考来源)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/goodgoodstudy___/article/details/123068388

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签