网络参考模型


1 应用和数据

  应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频等。

  伴随着应用会有信息的产生。比如文本,图片,视频等都是信息的不同呈现方式。

  应用的实现-数据:

   数据的产生:在计算机领域,数据是各种信息的载体。

   数据传输:大部分应用程序所产生的数据需要在不同的设备之间传递。

2 OSI参考模型

层数名 作用
7.应用层 对应用程序提供接口
6.表示层 进行数据格式的转换
确保系统生成的应用层数据能够被另外系统的应用层所识别和理解
5会话层 在通信双方之问建立、管理和终止会话
4.传输层 建立、维护和取消一次端到端的数据传输过程
控制传输节奏的快慢,调整数据的排序等等
TCP和UDP在传输层
3.网络层 定义逻辑地址;实现数据从源到目的地的转发
网络层有IP地址
网络层中6代表TCP、17代表UDP
路由器在网络层
2.数据链路层 将分组数据封装成帧
在数据链路上实现数据的点到点、或点到多点方式的直接通信
差错检测
数据链路层有MAC地址
交换机在数据链路层
1.物理层 在媒介上传输比特流;提供机械的和电气的规约

3 TCP/IP参考模型

  因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。

  TCP/IP常见协议:

  ICMP:因特网控制报文协议

  IGMP:因特网组管理协议

  常见的协议标准化组织:

  IETF(lnternet Engineering Task Force)

   负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。

  IEEE(lnstitute of Electrical and Electronics Engineers)

   IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE802.3(Ethernet)、IEEE802.11(Wi-Fi)等。

  ISO(International Organization for Standardization)

   在制定计算机网络标准方面,1S0是起着重大作用的国际组织,如0SI模型,定义于IS0/IEC 7498-1。

3.1 应用层

  应用层为应用软件提供接口,使应用程序能够使用网络服务。

  应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。

  应用层的PDU(协议数据单元)被称为Data(数据)。

  应用层协议:

协议名称 端口 TCP/UDP 解释
Telnet 23 TCP 远程登陆协议,提供远程管理服务
FTP 20、21 TCP 文件传输协议,提供互联网文件资源共享服务
20端口用于数据传输
21端口用于控制连接
SFTP 22 TCP 安全文件传输协议
TFTP 69 UDP 简单文件传输协议,提供简单的文件传输服务
SNMP 161、162 UDP 简单的网络管理协议
UDP 161端口:用于SNMP管理站(NMS)与代理(Agent)之间的常规通信,如轮询请求(GET)
UDP 162端口:用于SNMP代理主动向管理站发送陷阱消息(Trap操作),通知特定事件
HTTP 80 TCP 超文本传输协议,提供浏览网页服务
SMTP 25 TCP 简单邮件传输协议,提供互联网电子邮件服务
DNS 53 TCP、UDP 域名解析协议
DHCP 67、68 UDP 动态主机配置协议
DHCP服务器监听的端口:UDP端口 67,用于接收来自客户端的请求
DHCP客户端监听的端口:UDP端口 ‌68,用于接收服务器的响应
HTTPS 443 TCP 简单文件传输协议,提供简单的文件传输服务
比HTTP更加安全
POP3 110 TCP、IP 用于支持使用客户端远程管理服务器上的电子邮件
NTP 123 TCP、IP 用于同步网络中各个计算机时间的协议
SSH 22 TCP 建立在应用层和传输层基础上的安全协议

3.1.1 应用层协议-FTP

   FTP是一个用于从一台主机传送文件到另一台主机的协议,用于文件的”下载”和”上传”,采用C/S(Client/Server)结构。

  FTP客户端:

   提供本地设备对远程服务器的文件进行操作的命令。

   用户在PC上通过应用程序作为FTP Client,并与FTP服务器建立连接后,对FTP Server上的文件进行操作。

  FTP服务器:

   运行FTP服务的设备。

   提供远程客户端访问和操作的功能,用户可以通过FTP客户端程序登录到服务器上,访问设备上的文件。

3.1.2 应用层协议-Telnet

   Telnet是数据网络中提供远程登录服务的标准协议。

   Telnet为用户提供了在本地计算机上完成远程设备工作的能力。

   用户通过Telnet客户端程序连接到TeInet服务器。用户在Telnet客户端中输入命令,这些命令会在服务器端运行,就像直接在服务端的控制台上输入一样。

3.1.3 应用层协议-HTTP

   HTTP是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

3.2 传输层

  传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立”端到端”(Port to Port)的连接。

  传输层的PDU被称为Segment(段)。

  传输层协议:

   TCP:一种面向连接的、可靠的传输层通信协议。TCP又被称为传输控制协议。

   UDP:一种简单的无连接的传输层协议。UDP又被称为用户数据包协议。

3.2.1 TCP和UDP-报文格式

   TCP头部:

   UDP尾部:

3.2.2 TCP和UDP-端口号

   客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;

   源端口号一般为系统中未使用的,且大于1023;

   目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。

3.2.3 TCP建立-三次握手

   任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。

  1.由TCP连接发起方(PC1)发送第一个SYN位置1的TCP报文。初始序列号(Seq)a 为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号(Ack)为0

  2.接收方(PC2)接收到合法的SYN报文之后,回复一个 SYN 和 Ack 置 1 的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1

  3.PC1接收到 PC2发送的SYN和Ack置位的TCP报文后,回复一个Ack置位的报文,此时序列号为a+1,确认序列号为b+1。PC2接收到报文后,TCP双向连接建立。

3.2.4 TCP序列号与确认序列号

   TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。

  在此期间PC2没有向PC1发送新的数据,所以PC1的确认号(AcK)保持不变。

  假设PC1要给PC2发送一段数据,传输过程如下

   1.PC1将全部待TCP发送的数据按照字节为单位进行编号。假设第一个字节的编号为a+1,第二个字节的编号为a+2,以此类推。

   2.PC1会把每段数据的第一个字节的编号作为序列号,然后将TCP报文发送出去。

   3.PC2在收到PC1发送米的TCP报文后,需要给予确认,同时请求下一段数据,下一段数据的第一个字节的确认序列号(a+1+12)=序列号(a+1)+载荷长度。

   4.PC1在收到PC2发送来的TCP报文后,发现确认序列号为a+1+12,说明a+1到 a+12这一段的数据已经被接收,需要从a+1+12处开始发送

3.2.5 TCP的窗口滑动机制

   TCP通过窗口滑动机制来控制数据的传输速率。

  PC1在发送这三个数据段时,尚未收到PC2的窗口更新通知,所以继续使用之前协商的窗口大小(win=3)

  TCP通过窗口滑动机制控制数据传输速率的流程如下:

   1.在TCP通过三次握手建立连接时,双方通过win字段告诉对方本端最大能够接收的字节数(缓冲区大小)。

   2.连接建立成功之后,发送方会根据接收方宣告的win字段大小发送相应字节数的数据。

   3.接收方接收到数据之后会存放在缓冲区内,等待上层应用取走缓冲区中的数据。若数据被上层取走,则相应的缓冲空间将被释放。

   4.接收方根据自身的缓存空间大小通告当前可以接收的数据大小(win)。

   5.发送方根据接收方当前的win字段大小发送相应数量的数据。

3.2.6 TCP关闭-四次挥手

   当数据传输完成,TCP需要通过”四次挥手”机制断开TCP连接,释放系统资源。

  TCP支持全双工模式传输数据,意味着同一时刻两个方向都可以进行数据传输。在传输数据之前,TCP通过三次握手建立的连接实际上是两个方向的连接,因此在数据传输完毕后、两个方向的连接必须都关闭。流程如下:

   1.由PC1发送一个FIN字段置1的不带数据的TCP报文。

   2.PC2收到PC1发送的FIN置位的TCP报文后,会回复一个Ack置位的TCP报文。

   3.若 PC2 没有需要发送的数据,则直接发送 FIN置位的TCP报文。假设此时 PC2还有数据要发送,那么当PC2发送完这些数据之后,会发送一个FIN置位的TCP报文关闭连接。

   4.PC1收到FIN置位的TCP报文后,回复Ack报文,TCP双向连接断开。

3.3 网络层

  传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。

  网络层的PDU被称为Packet(包)。

  网络层也叫Interet层,负责将分组报文从源主机发送到目的主机。

3.3.1 网络层作用

   为网络中的设备提供逻辑地址。

   负责数据包的寻径和转发。

   常见协议如IPv4、IPv6、ICMP、IGMP等。

3.3.2 网络层协议工作过程

3.4 数据链路层

  数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。

  数据链路层的PDU被称为Frame(帧)。

  以太网(Ethernet)是最常见的数据链路层协议

  数据链路层位于网络层和物理层之间:

   数据链路层向网络层提供”段内通信”

   负责组帧、物理编址、差错控制等功能。

   常见的数据链路层协议有:以太网、PPPoE、PPP等。

3.4.1 以太网和MAC地址

   以太网是一种广播式数据链路层协议,支持多点接入。

   个人电脑的网络接口遵循以太网标准。

   一个广播域对应着一个IP网段。

   MAC(Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。

   MAC用于在一个IP网段内,寻址找到具体的物理设备。

   工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。

  MAC(Media Access Control,媒体访问控制)地址是在IEEE 802标准中定义并规范的,凡是符合IEEE802标准的网络接口卡(如以太网卡、令牌环网卡等)都必须拥有一个MAC地址。并不是所有网卡都必须拥有 MAC地址(以下所说的网卡均指以太网卡)。MAC地址是全球唯一的硬件地址,如同身份证号码用于识别身份一样,MAC地址用于识别以太网中的一台设备的地址。

  MAC地址的长度为48位,由两部分组成。前24位为厂商代码,简称OUI(Organizationally Unique Identifier,组织唯一标识符,又称厂商唯一代码);后24位由厂商自定义。厂商在制造网卡之前,必须先向IEEE注册,然后由IANA(The Internet Assigned Numbers Authority,因特网编号分配机构)进行分配。

  MAC地址特殊的位置不同,标识的地址类型也不同,如下:

  MAC地址的分类标准如下:

   如果第一个字节的第一位为1,则为广播MAC地址。

   如果第一个字节的最后一位为1,则为组播MAC地址。

   如果第一个字节的最后一位为0,则为单播MAC地址。

3.4.2 地址解析协议(ARP)

   ARP (Address Resolution Protocol)地址解析协议:

   根据已知的IP地址解析获得其对应的MAC地址。

3.4.3 ARP的工作原理

  步骤1:

   在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过ARP来获取。

  步骤2:

   主机1通过发送ARP Request报文来获取主机2的MAC地址。

   由于不知道目的MAC地址,因此ARP Request报文内的目的端MAC地址为0

  步骤3:

   ARP Request是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作。

  步骤4:

   所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。

   主机2发现IP地址匹配,则会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。

  步骤5:

   主机2通过发送ARP Reply报文来响应主机1的请求。

   此时主机2已知主机1的MAC地址,因此ARP Reply是单播数据帧。

  步骤6:

   交换机收到该单播数据帧后,会对该帧执行转发操作。

  步骤7:

   主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段是否与自己的IP地址匹配。

   如果匹配,会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。

3.4.4 代理ARP

  主机A与主机B进行通信时,目的IP地址与本机的IP地址位于不同的网络,但由于主机A未配置网关,所以会以广播的形式发送ARP Request报文,请求主机B的MAC地址。但路由器是隔离广播域的,因此该广播报文无法被路由器转发,所以主机B无法接收到主机A发送的ARP Request报文,当然也就无法应答。这种情况下就需要代理ARP,工作过程如下图:


  在路由器上启用代理ARP功能后,路由器收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的 GE0/0/0接口的 MAC地址,回应主机A发送的ARP Request请求。主机 A收到代理 ARP 路由器发送的ARP Reply后,将以路由器的GE0/0/0接口的MAC地址作为目的MAC地址进行数据转发。

3.5 物理层

  数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。

  物理层的PDU被称为比特流(Bitstream)。

  物理层位于模型的最底层:

   负责比特流在介质上的传输。

   规范了线缆、针脚、电压、接口等物理特性规范。

   常见的传输介质有:双绞线、光纤、电磁波等。

  接线顺序:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕

4 数据通信过程

4.1 PDU

  PDU(Protocol Data Unit,协议数据单元)就是每层的通信数据,用不同的术语来指明所提到的层级。

  各层级PDU名称如下表:

TCP/IP标准模型 OSI参考模型 TCP/IP对等模型 PDU英文名 PDU中文名
应用层 应用层 应用层 data 数据
表示层 data 数据
会话层 data 数据
主机到主机层 传输层 传输层 segment 数据段
英特网层 网络层 网络层 packet 数据包
网络接入层 数据链路层 数据链路层 frame
物理层 物理层 bit 比特(位或数据流)

4.2 发送方数据封装

  PDU:协议数据单元,表示数据在各层的名字,即:数据、数据段、数据包、帧、位(数据流或比特流)等

  封装:数据从上往下走,在每层加报头(如:TCP Header、IP Header、Eth Header)的过程叫封装

  数据发送者在发送数据时就像给快递打包一样,从上层向下层进行数据封装,没经过一层就封装一个包头,到达数据链路层后,不仅要封装一个包头,还要追加一个FCS的尾部,目是检测数据的完整性OSI参考模型的数据封装过程如图1.1所示。

4.3 中间网络数据传输

  封装好的数据,将会在网络中被传递。

4.4 接收方数据解封装

  FCS:帧校验,校验数据完整性

  接收方接收到数据后,首先要对数据帧头进行校验,以查看数据帧在传递过程中是否失去完整性,若检验结果不完整,则立即丢弃该数据帧;若校验数据帧无破损,则对数据进行解封装,解封装的顺序是由下层向上层进行。


文章作者: 罗宇
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 罗宇 !
  目录