OSI七层网络模型
<1> 应用层
OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。
<2> 表示层
表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
<3> 会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
<4> 传输层
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,不在乎数据包的中转过程。
- TCP协议(传输控制协议)为应用层提供可靠的、面向连接的和基于流的服务。TCP使用超时重传、数报确认等方式来确保数据包被正确地发送至目的端,因此TCP服务是可靠的。使用TCP协议通信双方必须先建立TCP连接,并在内核中为该连接维持一些必要饿数据结构。
- UDP协议(用户数据报协议)为应用层提供不可靠的、无连接、基于数据报的服务。通信双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收端的地址。每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其内容一次性读出,否则数据将会被截断。
- SCTP协议(流控制传输协议)是一种相对较新的传输层协议,它是为了在因特网上传输电话信号而设计的
<5> 网络层
网络层实现数据包的选路和转发。WAN(广域网)通常使用众多分级的路由器来连接分散的主机或LAN(局域网)。通信的两台主机一般不是直接相连的,而是通过多个中间节点(路由器)连接的。网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。网络层对上层协议隐藏了网络拓扑连接细节,使得在传输层和网络应用程序看来,通信双方是直接相连的。
- 网络层最核心的是IP协议(因特网协议)IP协议使用逐跳的方式确定通信路径。
- 另外一个重要的协议是ICMP协议(因特网控制报文协议)主要用于检测网络连接
ICMP协议并非严格意义上的网络层协议,因为它使用处于同一层的IP协议提供的服务
<6> 数据链路层
数据链路层实现了网卡接口的网络驱动程序,以处理数据物理媒介(以太网、令牌环)上的传输。
- 数据链路层常用的两个协议是ARP协议(地址解析协议)和RARP协议(逆地址解析协议)
- 它们实现了IP地址和机器物理地址(通常是MAC地址,以太网、令牌环、802.11无线网络都使用了MAC地址)之间的相互转换
<7> 物理层
实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。
TCP/IP四层概念模型
TCP/IP通讯过程:
将自己要传递的信息封装上各自的报头信息自顶向下(以太网程序发送消息,)进行交付,同时要自底向上交付自己的报文信息。
我们把用户数据自顶向下交付添加报头的过程叫做封装。
当前层永远认为上层交付给的都是数据,不关心里面的内容。
协议当中每一层协议都要能够做到把自己的报头和数据部分(有效载荷)分离。(定长报头法,自描述信息)
每一层协议报头信息中都包含有效载荷交付给谁。
每一层协议在忽略底层所有协议的前提条件下,都认为在和对方的同等协议进行直接通讯。(协议不可交叉使用)
封装
应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下一次传递,每层协议都将会在上层数据的基础上加上自己的头部信息(有时还有尾部信息)以实现该层的功能,这个过程称为封装
- 经过TCP封装的数据称为TCP报文段。
- 经过IP封装后的数据称为IP数据报。
- 经过数据链路层封装的数据称为帧。帧的最大传输单元(MTU)即最多能携带多少上层协议数据,通常收到网络类型的限制。以太帧的MTU是1500字节,过长的IP数据段需要被分片传输。
分用
当帧达到目的主机时,将沿着协议栈自底向上依次传递,各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序,这个过程叫做分用。
分用是依靠头部信息中的类型字段实现的。