本章将通过网络参考模型去了解数据简单的一生。

  1. 理解数据的定义及传递过程
  2. 理解网络参考模型概念及优势
  3. 了解常见的标准协议
  4. 掌握数据封装与解封装过程
  5. 华为设备图标简介

注意:对于一名网络工程师来说,需要更关注数据的端到端传递的过程。

一、网络参考模型与标准协议

1.OSI参考模型

OSI模型层次 说明
应用层 对应用程序提供接口(网络服务)
表示层 进行数据的转换和编码,确保一个系统的应用层发送的数据能被另一个系统的应用层识别
会话层 负责建立、管理和终止表示层实体之间的通信会话,通过会话层区分不同的应用。
传输层 建立、维护和取消一次端到端的数据传输过程,控制传输节奏的快慢,及进行重传前的差错检测
网络层 定义逻辑地址(ip地址),供路由器确定路径,负责将数据从源网络传输到目的网络
数据链路层 将比特组合为字节、再组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,实现点到点 or 多点传输。
物理层 在媒介上传输比特流,规定了电平、速度和电缆针脚等物理特性(器械和电气特性)

2.TCP/IP参考模型&常见协议

由于OSI协议栈比较复杂,且TCP/IP的广泛应用故称为了目前的主流参考模型

(1)TCP/IP对等模型:

image-20211209210550498.png

TCP/IP标准参考模型将OSI中的数据链路层和物理层合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的。

故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出,后面的讲解也都将基于这种模型。

(2)TCP/IP对等模型各层协议:

image-20211209210811446.png

<1>应用层:

HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。

FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。

DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。

<2>传输层:

TCP (Transmission Control Protocol) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。

UDP(User Datagram Protocol):提供了无连接通信,且不对传送数据包进行可靠性的保证。

<3>网络层:

IP(Internet Protocol,互联网协议):

将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。

IGMP(Internet Group Management Protocol,因特网组管理协议):

负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

ICMP(Internet Control Message Protocol,网际报文控制协议):

基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

<4>数据链路层:

PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层协议,多用于广域网。

Ethernet( 以太网协议 ):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。

PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。

注意:PPPoE常见的应用有家庭宽带拨号上网。

(3)常见协议标准化组织

  • IETF(Internet Engineering Task Force)

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

  • IEEE(Institute of Electrical and Electronics Engineers)

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

  • ISO(International Organization for Standardization)

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

3.应用层&应用层协议

(1)应用层:

应用层最为TCP/IP模型的最高层,负责为应用软件提供接口,使应用程序能够使用网络服务。

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

注意:应用层的PDU被称为Data(数据)。

image-20211209211637633.png

(2)应用层协议:FTP

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

image-20211209211515870.png

(3)应用层协议:Telnet

Telnet是数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。

image-20211209211532257.png

(4)应用层协议:HTTP

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

image-20211209211549357.png

4.传输层&传输层协议:

(1)传输层:

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

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

image-20211209211656753.png

(2)TCP&UDP报文格式:

image-20211210081358771.png

<1>TCP报文头部(20Byte)字段说明:
TCP字段 说明
Source Port:源端口 标识哪个应用程序发送,长度为16比特。
Destination Port:目的端口 标识哪个应用程序接收,长度为16比特。
Sequence Number:序号字段 TCP链接中传输的数据流每个字节都编上一个序号,序号字段的值指的是本报文段所发送数据的第一个字节的序号,长度为32比特。
Acknowledgment Number:确认序列号 是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有Ack标识为1时该字段有效,长度为32比特。
Header Length:头部长度 指出TCP报文头部长度,以32bit(4Byte)为计算单位。若无选项内容,则该字段为5,即头部为20Byte。
Reserved:保留 必须填0,长度为6bit。
Control bits:控制位 包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段。
Window:窗口TCP的流量控制 这个值表明当前接收端可接受的最大的数据总数(以Byte为单位)。窗口最大为65535字节。长度为16比特。
Checksum:校验字段 是一个强制性的字段,由发端计算和存储,并由接收端进行验证。在计算检验时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特。
Urgent:紧急指针 只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为16比特。
Options:选项字段(可选) 长度为0-40字节。

<2>UDP报文头部(8Byte)字段说明:
UDP字段 说明
Source Port:源端口 标识哪个应用程序发送。长度为16比特。
Destination Port:目的端口 标识哪个应用程序接收。长度为16比特。
Length:该字段指定UDP报头和数据总共占用的长度。 可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。
Checksum:覆盖UDP头部和UDP数据的校验和。 长度为16比特。

(3)TCP&UDP端口号:

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

源端口号为系统中未使用的(且大于1023,0-2^16),目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。

image-20211210104427515.png

(4)TCP的建立三次握手:

注意:任何基于TCP的应用,在发送数据之前,都需要由TCP进行三次握手建立连接(通信之前确认路径搭建完成)。

  • 第1次握手:由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为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双向连接建立。

image-20211210104724115.png

注意:a(某个不定的数字,例如10086)与b没有任何关系

(5)TCP的序列号与确认序列号:

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

若PC1要给PC2发送一段数据,其传输过程如下:

  • step1:PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为a+1,第二个字节的序号为a+2,依次类推。
  • step2:PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。
  • step3:PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据。

step3如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)。

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

image-20211210110842905.png

注意:step3中PC1的Ack没有增长?实际上Ack的值为b+1+0

(6)TCP滑动窗口机制:

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

  • step1:在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(即缓冲区大小)。
  • step2:连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
  • step3:接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  • step4:接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
  • step5:发送方根据接收方当前的Window大小发送相应数量的数据。

image-20211210111047359.png

(7)TCP的关闭四次挥手:

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

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。

在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。

  • step1:由PC1发出一个FIN字段置1 的不带数据的TCP段。
  • step2:PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  • step3:若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  • step4:PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

image-20211210111240429.png

5.网络层

(1)网络层(Internet层):

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

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

image-20211209212338203.png

(2)网络层协议工作过程:

当采用IP作为网络层协议时,通信的双方都会被分配到一个独一无二的IP地址来标识自己。

IP数据包的封装与转发:

  • step1:网络层收到上层(如传输层)协议传来的数据时候,会封装IP报文头部(包含源和目的IP地址,类似于信封)。
  • step2:中间经过的网络设备(如路由器),会维护一张路由表(指导IP报文转发的地图),通过读取IP数据包的目的地址(读取信封的收件地址),查找本地路由表后再转发IP数据包。
  • step3:IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。

注意:IP协议工作时,需要OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。

6.数据链路层

(1)数据链路层:

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

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

image-20211209212535606.png

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

(2)以太网与MAC地址

MAC地址(Media Access Control)由48比特长(6个字节),12位的16进制数字组成。例如:48-A4-72-1C-8F-4F。

  1. MAC地址/以太网地址/物理地址,每一个主机都有唯一的MAC地址,标识一张网卡。
  2. MAC地址用于在同一个IP网段地址(广播地址)内进行通信的。
  3. 以太网交换机会负责维护MAC地址表。

image-20211209212733276.png

(3)地址解析协议ARP:

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址(MAC地址)的一个TCP/IP协议。

注意:ARP是IPv4中必不可少的一种协议。MAC地址是唯一的不允许修改的,IP地址是允许修改的。

ARP协议的主要功能
1.将IP地址解析为MAC地址
2.维护IP地址与MAC地址的映射关系的缓存,即ARP表项
3.实现网段内重复IP地址的检测

image-20211209212936033.png

注意:

  1. Host B响应Host A的ARP请求报文(广播方式)属于单播响应方式。
  2. 任何数据通信的第一步一定是完成ARP响应。

(4)ARP协议的工作原理:

step1:查询ARP缓存表

网络设备都有一个ARP缓存(ARP Cache),用来存放IP地址和MAC地址的关联信息。

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

类比:发送快递时,若之前已经有发送过快递可直接使用地址记录,否则需要询问后再填写地址。

学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。

如果目标设备在其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关,最后网关把数据转发给目的设备。

image-20211210111656663.png

注意:主机第一次开机,ARP缓存表的内容将为空。

step2:发送ARP请求

若主机1的ARP缓存表中不存在主机2的MAC地址,则主机1会发送ARP Request来获取目的MAC地址。

ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机1的MAC地址。由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF(全MAC地址)。

ARP Request报文中包含发送端MAC地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。

image-20211210111858460.png

step3:ARP缓存表添加

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

如果不匹配,则该主机将不会响应该ARP Request报文。

如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。

image-20211210111913918.png

step4:发送ARP响应

主机2会向主机1回应ARP Reply报文。

ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。

ARP Reply报文通过单播传送。

image-20211210111934412.png

step5:ARP缓存表添加

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

如果匹配,ARP报文中的发送端MAC地址和发送端IP地址会被记录到主机1的ARP缓存表中。

image-20211210111948477.png

注意:因为MAC地址是通过ARP报文学习得到的,故Type栏为动态Dynamic。

在了解/得到到对方的MAC地址之后,后续的所有报文封装就可以正常进行了。

7.物理层

(1)物理层

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

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

image-20211209213035194.png

(2)常见传输介质

image-20211209213306137.png

<1>双绞线:

注意:当今以太网最常见的传输介质就是双绞线,按照抗电磁干扰能力还可以分为STP-屏蔽双绞线 and UTP-非屏蔽双绞线

<2>光纤传输:

注意:按照功能部件可分为光纤 and 光模块。

光纤:光传输介质,就是一根玻璃纤维,用于约束光传输的通道。

光模块:将电信号与光信号互转的器件,产生光信号。

<3>同/异步串口电缆:

串口电缆在WAN(Wide Area Network,广域网)中大规模使用,

根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。

<4>无线传输:

无线信号的传输可以通过电磁波进行,例如:

  1. 无线路由器将数据通过调制以电磁波发送出去。
  2. 移动终端的无线网卡将电磁波解调得到数据,完成从无线路由器到移动终端的数据传输。

二、数据通信过程

1.发送方数据封装

image-20211209213839922.png

2.中间网络数据传输

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

网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的交换操作。

网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的路由操作。

image-20211209214102078.png

注意:需要注意交换和路由的详细细节和原则。

3.接收方数据解封装

经过中间网络传递之后,数据最终到达目的服务器。

根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。

image-20211209214249404.png

思考题:

  1. (简答)分层模型的概念有什么好处?
  2. (简答)常见的应用层、传输层、网络层、数据链路层有哪些协议?
  3. (单选)以下哪个组织不是常见的协议标准化组织?( )

A. IETF(Internet Engineering Task Force)

B. IEEE(Institute of Electrical and Electronics Engineers)

C. ISO(International Organization for Standardization)

D. IEC(International Electrotechnical Commission)

  1. (单选)HTTP协议是基于传输层哪种协议的哪个端口号?( )

A. TCP 80

B. TCP 23

C. TCP 25

D. UDP 69

  1. (多选)以下哪些协议属于传输层的协议?( )

A. TCP

B. FTP

C. UDP

D. HTTP

  1. (判断)在网络中进行通信时,必须封装IP地址和MAC地址。( )

A. 正确True

B. 错误False

  1. (判断)ARP Reply报文是广播形式发送的。( )

A. 正确True

B. 错误False