OSI七层参考模型和TCP四层参考模型

什么是协议

  协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

  
  

将协议分层后的优势和劣势

  下层为上层提供服务,上层享受下层提供的服务。上下层交互所遵循的约定叫“接口”,同一层交互所遵循的约定叫“协议”

优势:

  • 分层后每一层都可以独立使用,将功能进行模块化,即使系统中某些层发生变化,也不会波及整个系统。使整个系统变得更灵活

  • 可以对学习和设计协议起到一个引导作用,许多协议都对应了模型的某一层,通过这一点可以大致了解这个协议在整个通信系统中的功能

劣势:

  • 有可能过分模块化,使处理变得更加繁琐,每个模块都不得不实现相似的处理逻辑

  
  

简述OSI七层模型

  OSI七层模型是ISO提出的一个试图将全世界计算机连接成网络的标准框架。整体分为七层,每一层都实现了本层的功能与协议,并实现了相邻两层的接口。某一层所能提供的服务就是该层及其以下所有层的能力,作为上一层只需要享受下层所提供的服务,无需知道这些服务如何实现的

  • 应用层

  应用层位于OSI模型的最高层,其作用是通过两台主机应用程序间的交互来完成特定的网络应用。

  典型的协议有:文件传输协议FTP、电子邮件协议SMTP、万维网HTTP等

  • 表示层

  不同计算机的内部存储格式可能会有差异,表示层处理通信信号的表示方法,进行不同的格式之间的翻译。并负责数据的加密解密,数据的压缩与恢复。

  典型的协议有:JPEG、ASCII等

  • 会话层

  会话层负责建立、管理、终止会话,允许不同主机上的各个进程进行会话(建立同步),并有序的传输数据。还负责建立检查点在通信失效时从检查点继续恢复通话(提供恢复方案)

  典型的协议有:ADSP、ASP等

  • 传输层

  传输层也称运输层,为上层实体提供源端到对端主机的通信功能(端对端)。

  典型的协议有:TCP、UDP

  • 网络层

  两台计算机之间建立通信的链路往往不止一条,甚至有的链路还要经过很多通信子网,网络层的主要任务就是选择最合适的路径(路由),确保数据能够按时成功传送。

  主要协议:IP

  • 数据链路层

  建立点对点的连接(一个网络,或一段链路),数据链路层的主要任务是把网络层传下来的IP数据报封装成帧,并提供差错控制服务。

  典型的协议有:SDLC、HDLC、PPP、STP

  • 物理层

  物理层的作用是实现计算机节点之间比特流的透明传输(无论是什么比特组合,都能在链路上传输),尽可能屏蔽传输介质和物理设备的差异。该层的主要任务是定义传输媒体的接口特性

  典型的协议有:Rj45、802.3

  
  

TCP/IP 网络模型有哪几层(重点)

应用层

  最上层的,也是我们能直接接触到的就是应用层Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。

  所以,应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。

  应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。

  而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。

  

传输层

  应用层的数据包会传给传输层,传输层Transport Layer)是为应用层提供网络支持的。

在这里插入图片描述

  在传输层会有两个传输协议,分别是 TCP 和 UDP。

  TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。

  UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把 TCP 的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。

  应用需要传输的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过 MSS(TCP 最大报文段长度) ,就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个 TCP 段TCP Segment)。

在这里插入图片描述

  当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口

  比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号。

  由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

  

网络层

  传输层可能大家刚接触的时候,会认为它负责将数据从一个设备传输到另一个设备,事实上它并不负责。

  实际场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,如果一个设备的数据要传输给另一个设备,就需要在各种各样的路径和节点进行选择,而传输层的设计理念是简单、高效、专注,如果传输层还负责这一块功能就有点违背设计原则了。

  也就是说,我们不希望传输层协议处理太多的事情,只需要服务好应用即可,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,而实际的传输功能就交给下一层,也就是网络层Internet Layer)。

在这里插入图片描述

  网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。

在这里插入图片描述

  网络层负责将数据从一个设备传输到另一个设备,世界上那么多设备,又该如何找到对方呢?因此,网络层需要有区分设备的编号。

  我们一般用 IP 地址给设备进行编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段(比如,192.168.100.1),每段是 8 位。只有一个单纯的 IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道一个一个去匹配?这显然不科学。

因此,需要将 IP 地址分成两种意义:

  • 一个是网络号,负责标识该 IP 地址是属于哪个「子网」的;
  • 一个是主机号,负责标识同一「子网」下的不同主机;

  怎么分的呢?这需要配合子网掩码才能算出 IP 地址 的网络号和主机号。

  举个例子,比如 10.100.122.0/24,后面的/24表示就是 255.255.255.0 子网掩码,255.255.255.0 二进制是「11111111-11111111-11111111-00000000」,大家数数一共多少个1?不用数了,是 24 个1,为了简化子网掩码的表示,用/24代替255.255.255.0。

知道了子网掩码,该怎么计算出网络地址和主机地址呢?

将 10.100.122.2 和 255.255.255.0 进行按位与运算,就可以得到网络号,如下图:

在这里插入图片描述

  将 255.255.255.0 取反后与IP地址进行进行按位与运算,就可以得到主机号。

  大家可以去搜索下子网掩码计算器,自己改变下「掩码位」的数值,就能体会到子网掩码的作用了。

在这里插入图片描述

在这里插入图片描述

  那么在寻址的过程中,先匹配到相同的网络号(表示要找到同一个子网),才会去找对应的主机。

  除了寻址能力, IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。

  路由器寻址工作中,就是要找到目标地址的子网,找到后进而把数据包转发给对应的网络内。

在这里插入图片描述

  所以,IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘

  

其它:

1、网络地址:网络地址是互联网上的节点在网络中具有的逻辑地址,可对节点进行寻址。IP地址是在互联网上给主机编址的方式,为每个计算机分配一个逻辑地址,这样不但能够对计算机进行识别,还能进行信息共享。IP主机位全0 即为网路地址

2、广播地址:广播地址专门用于同时向网路中所有工作站进行传送的一个地址。在使用TCP/IP 协议的网路中,主机标识段hostid 为全1 的IP 地址为广播地址,广播的分组传送给hostid 段所涉及的所有计算机。

  因此,在一个局域网中,能配置在计算机中的实际IP地址要比网段内的地址少两个(网络号、广播地址)

  

网络接口层

  生成了 IP 头部之后,接下来要交给网络接口层Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。

在这里插入图片描述

  IP 头部中的接收方 IP 地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,但在以太网的世界中,这个思路是行不通的。

  什么是以太网呢?电脑上的以太网接口,Wi-Fi接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,它们都是以太网的组成部分。以太网就是一种在「局域网」内,把附近的设备连接起来,使它们之间可以进行通讯的技术。

  以太网在判断网络包目的地时和 IP 的方式不同,因此必须采用相匹配的方式才能在以太网中将包发往目的地,而 MAC 头部就是干这个用的,所以,在以太网进行通讯要用到 MAC 地址。

  MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址。

  所以说,网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。

  

总结

综上所述,TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层

在这里插入图片描述

再给大家贴一下每一层的封装格式:

在这里插入图片描述

  网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

  

  

  

参考:

小林coding — 图解网络

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OSI七层模型TCP/IP四层模型网络通信中的两种不同的参考模型OSI七层模型是国际标准化组织提出的一种分层模型,包括应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。而TCP/IP四层模型是基于实际应用发展而来的一种简化的模型,包括应用层、传输层、网络层和数据链路层。 [2] 这两种模型的核心内容很相似,都涉及到网络通信中的不同层次。在分层上,TCP/IP四层模型可以看作是OSI七层模型的简化版。OSI七层模型相对于TCP/IP四层模型来说更加详细,可以更好地进行开发和故障排除。而TCP/IP四层模型则更加简洁,更常用于实际应用中。 然而,无论是OSI七层模型还是TCP/IP四层模型,它们都是为了更好地描述和理解网络通信中的不同协议而提出的模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [OSI七层模型TCP/IP网络四层模型](https://blog.csdn.net/weixin_43654097/article/details/124004173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [TCP/IP五层(四层模型](https://download.csdn.net/download/weixin_38731761/14049850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值