跳到主要内容

网络模型

提示

网络模型是很基础但是很重要的网络基础知识.现在常说的都是 OSI 七层模型和 TCP/IP 四层模型和五层协议模型.

计算机网络为什么要分层呢?


因为计算机网络是一个复杂的程序,需要对复杂的程序进行分层管理,一层解决一类事情。分层有很多好处:

  • 各层之间是独立的,某一层并不需要知道它的下一层或上一层是如何实现的,仅仅需要知道该层通过层间的接口所提供的服务。将复杂的系统拆分成一个一个小的系统,使得整个问题的复杂程度就降低了;
  • 灵活性好, 某一层的内部发生了变化,只要它提供的接口是不变的,就不会影响上层或者下层的使用;
  • 能促进标准化工作

分层是一个逻辑概念,在做架构设计时,有句话叫没有什么问题是多加一层解决不了的。计算机网络的分层也是程序逻辑上的抽象

计算机网络分层思想


为了减少计算机网络设计的复杂性,大多数网络都按层(Layer) 或在级 (Level) 的方式来组织,每一层都建立在它的下层之上。在所有的网络中,每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上层加以屏蔽。

OSI 七层模型


一般叫做OSI(Open System Interconnection) 模型或者叫七层模型.他是国际标准化(ISO)定的一个用于计算机或通信系统间互联的标准体系.协议将计算机网络体系结构划分为 7 层.

每一层实现各自的功能和协议,并完成与相邻层的接口通信.每一层提供的服务就是该层及其以下层的协作完成的.

层级OSI/RM 模型功能协议
7应用层(Application Layer)

应用层是 OSI 标准模型的最顶层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。包括文件传输、电子邮件远程登录和远端接口调用等协议。

HTTP、FTP、SMTP、POP3
6表示层(Presentation Layer)

表示层向上对应用进程服务,向下接收会话层提供的服务,表示层位于 OSI 标准模型的第六层,表示层的主要作用就是将设备的固有数据格式转换为网络标准传输格式。

HTML、MIME
5会话层(Session Layer)

会话层位于 OSI 标准模型的第五层,它是建立在传输层之上,利用传输层提供的服务建立和维持会话。

4传输层(Transport Layer)

传输层位于 OSI 标准模型的第四层,它在整个 OSI 标准模型中起到了至关重要的作用。传输层涉及到两个节点之间的数据传输,向上层提供可靠的数据传输服务。传输层的服务一般要经历传输连接建立阶段,数据传输阶段,传输连接释放阶段 3 个阶段才算完成一个完整的服务过程。

TCP、UDP
3网络层(Network Layer)

网络层位于 OSI 标准模型的第三层,它位于传输层和数据链路层的中间,将数据设法从源端经过若干个中间节点传送到另一端,从而向运输层提供最基本的端到端的数据传送服务。

2数据链路层(Data Link Layer)

数据链路层位于物理层和网络层中间,数据链路层定义了在单个链路上如何传输数据。

1物理层(Physical Layer)

物理层是 OSI 标准模型中最低的一层,物理层是整个 OSI 协议的基础,就如同房屋的地基一样,物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。

TCP/IP 四层模型


层级TCP/IP 模型功能协议
4应用层(Application Layer)包含OSI的会话层、表示层和应用层,提供了一些常用的协议规范,比如FTP、SMPT、HTTP、DNS等。
3传输层 (Transport Layer)为两台主机设备提供端到端的通信。TCP、UDP
2网络层 (Network Layer)负责处理IP数据包的传输、路由,建立主机间的通信。IP 是 互联网协议(Internet Protocol)
1网络接口层包含了OSI模型的物理层和数据链路层

五层协议模型


层级五层协议模型功能协议
5应用层 (Application Layer)任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。HTTP 协议、FTP 协议、DNS 协议、WebScoket协议
4传输层 (Transport Layer)主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。传输控制协议 TCP 、用户数据协议 UDP
3网络层 (Network Layer)负责寻址和路由功能,将数据包发送到特定的计算机 负责为分组交换网上的不同主机提供通信服务。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称 数据报。IP协议
2数据链路层 (Data Link Layer)负责将二进制数据包和网络信号相互转换 两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装程帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)
1物理层 (Physical Layer)实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上面的数据链路层不必考虑网络的具体传输介质是什么。接收器、发送器、中继器、光纤电缆

三种模型对比


TCP/IP 协议簇中都有哪些具体的协议


IP 协议

IP 是 互联网协议(Internet Protocol) ,位于网络层。IP是整个 TCP/IP 协议族的核心,也是构成互联网的基础。IP 能够为运输层提供数据分发,同时也能够组装数据供运输层使用。它将多个单个网络连接成为一个互联网,这样能够提高网络的可扩展性,实现大规模的网络互联。二是分割顶层网络和底层网络之间的耦合关系。

ICMP 协议

ICMP 协议是 Internet Control Message ProtocolICMP 协议主要用于在 IP 主机、路由器之间传递控制消息。ICMP 属于网络层的协议,当遇到 IP 无法访问目标、IP 路由器无法按照当前传输速率转发数据包时,会自动发送 ICMP 消息,从这个角度来说,ICMP 协议可以看作是 错误侦测与回报机制,让我们检查网络状况、也能够确保连线的准确性。

ARP 协议

ARP 协议是 地址解析协议,即 Address Resolution Protocol,它能够根据 IP 地址获取物理地址。主机发送信息时会将包含目标 IPARP 请求广播到局域网络上的所有主机,并接受返回消息,以此来确定物理地址。收到消息后的物理地址和 IP 地址会在 ARP 中缓存一段时间,下次查询的时候直接从 ARP 中查询即可。

TCP 协议

TCP 就是 传输控制协议,也就是 Transmission Control Protocol,它是一种面向连接的、可靠的、基于字节流的传输协议,TCP 协议位于传输层,TCP 协议是 TCP/IP 协议簇中的核心协议,它最大的特点就是提供可靠的数据交付。 TCP 的主要特点有 慢启动、拥塞控制、快速重传、可恢复。

UDP 协议

UDP 协议就是 用户数据报协议,也就是 User Datagram ProtocolUDP 也是一种传输层的协议,与 TCP 相比,UDP 提供一种不可靠的数据交付,也就是说,UDP 协议不保证数据是否到达目标节点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP 是一种无连接的协议,传输数据之前源端和终端无需建立连接,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序等现象。但是 UDP 具有较好的实时性,工作效率较 TCP 协议高。

FTP 协议

FTP 协议是 文件传输协议,英文全称是 File Transfer Protocol,应用层协议之一,是 TCP/IP 协议的重要组成之一,FTP 协议分为服务器和客户端两部分,FTP 服务器用来存储文件,FTP 客户端用来访问 FTP 服务器上的文件,FTP 的传输效率比较高,所以一般使用 FTP 来传输大文件。

DNS 协议

DNS 协议是 域名系统协议,英文全称是 Domain Name System,它也是应用层的协议之一,DNS 协议是一个将域名和 IP 相互映射的分布式数据库系统。DNS 缓存能够加快网络资源的访问。

SMTP 协议

SMTP 协议是 简单邮件传输协议,英文全称是 Simple Mail Transfer Protocol,应用层协议之一,SMTP 主要是用作邮件收发协议,SMTP 服务器是遵循 SMTP 协议的发送邮件服务器,用来发送或中转用户发出的电子邮件

SLIP 协议

SLIP 协议是指串行线路网际协议(Serial Line Internet Protocol) ,是在串行通信线路上支持 TCP/IP 协议的一种点对点(Point-to-Point)式的链路层通信协议。

PPP 协议

PPP 协议是 Point to Point Protocol,即点对点协议,是一种链路层协议,是在为同等单元之间传输数据包而设计的。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

一个完整http请求在五层模型中的完整工作流程


Preview
  • 主机A发起请求,数据发送前会被分为许多片段,称为数据包,然后使用http协议将数据包封装,并加上请求头,传给下一层
  • 传输层拿到数据,为每个数据包分配一个端口号,用来确定目标计算机的哪一个应用程序,然后使用TCP协议进行处理,加上TCP头或UDP头,通过TCP协议传给下一层
  • 网络层拿到数据后为每个数据包添加目标计算机的IP地址,并决定传给什么路由或接收的主机,再封装传给下一层
  • 链路层将数据转译成电子信号,进一步封装成数据帧,传给物理层
  • 物理层通过电缆传送给主机B这边的链路层
  • 主机B的链路层拿到数据后,检查每个包中的目标地址并确定将其发送到哪里,如果不是发给自己的就丢弃,然后根据数据确定协议类型,再传给网络层的IP协议模块
  • 网络层接收到后拆开获取IP头,判断首部接收的IP地址匹配,然后根据头部协议类型,转发TCP或UDP等
  • 传输层TCP收到后会计算校验,判断数据的完整性,然后处理数据包顺序接收的逻辑,最后根据端口确定要转发给应用层的哪个程序

最终应用层接到数据之后,根据http协议解析数据