目录
零、本章主要内容
1、理解数据的定义及传递过程
2、网络参考模型概念及优势
3、常见的标准协议
4、数据封装与解封装过程
一、应用和数据
应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频等。 伴随着应用会有信息的产生。比如文本,图片,视
频等都是信息的不同呈现方式。
在计算机领域,数据是各种信息的载体。 数据传输大部分应用程序所产生的数据需要在不同的设备之间传递。
计算机只能识别0和1的组成的电子数据(digital data)。它不具备读取各种信息的能力,所以信息需要通过一定的规则翻译成数据。
而对人来说,我们不具备读取电子数据的能力,所以在读取信息的时候,需要将数据转成人能理解的信息。
对于一名网络工程师来说,需要更关注数据的端到端传递的过程。
问题:一个应用程序是否需要完成数据的产生到传递的整个过程呢?
二、网络参考模型与标准协议
2.1 OSI参考模型
OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在
ISO 7489标准中并于1984年发布。
OSI参考模型又被称为七层模型,由下至上依次为:
物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。
数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。
网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。
传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
2.2 TCP/IP参考模型
因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。
TCP/IP模型在结构上与OSI模型类似,采用分层架构,同时层与层之间联系紧密。 TCP/IP标准参考模型将OSI中的数据链路层和物理层
合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的,故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出,
后面的讲解也都将基于这种模型。
2.3 TCP/IP常见协议
2.3.1 应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
HTTP 80 (TCP) 超文本传输协议,提供浏览网页服务
Telnet 23 (TCP) 远程登陆协议,提供远程管理服务
FTP 20、21 (TCP) 文件传输协议,提供互联网文件资源共享服务
SMTP 25 (TCP) 简单邮件传输协议,提供互联网电子邮件服务
TFTP 69 (UDP) 简单文件传输协议,提供简单的文件传输服务
DNS 域名称解析服务,用于实现从主机域名到IP地址之间的转换。
2.3.2 传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。 传输层的PDU被称为Segment(段)。
TCP (Transmission Control Protocol,传输控制协议) :一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。为应用
程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
UDP(User Datagram Protocol,用户数据报协议):一种简单的无连接的传输层协议,由IETF的RFC 768定义。提供了无连接通信,
且不对传送数据包进行可靠性的保证。
问题:TCP相对UDP的安全性体现在哪里
2.3.2.1 三次握手:任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
TCP连接建立的详细过程如下: 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ; 接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1; PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。
2.3.2.2 TCP的序列号与确认序列号:TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。
假设PC1要给PC2发送一段数据,传输过程如下: 1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。 2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。 3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12) 4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。 为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。
注意:
客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;
源端口号一般为系统中未使用的,且大于1023;
目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。
2.3.2.3 窗口滑动机制:TCP通过滑动窗口机制来控制数据的传输速率。
2.3.2.4 四次挥手:当数据传输完成,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双向连接断开。
2.3.3 网络层
网络层 IP(Internet Protocol,互联网协议): 将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。网络层的PDU被称为Packet(包)。
IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。
IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
IP数据包的封装与转发: 网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
除了IP协议外,网络层中还有如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。
2.3.4 数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。以太网
(Ethernet)是最常见的数据链路层协议。
数据链路层向网络层提供“段内通信”。 负责组帧、物理编址、差错控制等功能。
常见的数据链路层协议有:以太网、PPPoE、PPP等。
以太网是一种广播式数据链路层协议,支持多点接入。 个人电脑的网络接口遵循的就是以太网标准。 一般情况下,一个广播域对应着一个IP网段。
MAC (Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F MAC用于在一个IP网段内,寻址找到具体的物理设备。 工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。
ARP (Address Resolution Protocol)地址解析协议: 根据已知的IP地址解析获得其对应的MAC地址。ARP(Address Resolution
Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个TCP/IP协议。
ARP是IPv4中必不可少的一种协议,它的主要功能是:
将IP地址解析为MAC地址;
维护IP地址与MAC地址的映射关系的缓存,即ARP表项;
实现网段内重复IP地址的检测。
ARP工作原理
网络设备一般都有一个ARP缓存(ARP Cache)。ARP缓存用来存放IP地址和MAC地址的关联信息。
在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将
帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。
学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查
找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。
如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关。最后网关再把数据转发给目的设备。如下图示例:
主机1的ARP缓存表中不存在主机2的MAC地址,所以主机1会发送ARP Request来获取目的MAC地址。
ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机1的MAC地址。
此时,由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。 ARP Request报文中包含发送端MAC
地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。
ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。
所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响
应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,
然后通过ARP Reply报文进行响应。
主机2会向主机1回应ARP Reply报文。 ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的
端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。 ARP Reply报文通过单播传
送。
主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和
发送端IP地址会被记录到主机1的ARP缓存表中。
2.3.5 物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。 物理层的PDU被称为比特流(Bitstream)。
物理层位于模型的最底层: 负责比特流在介质上的传输。 规范了线缆、针脚、电压、接口等物理特性规范。 常见的传输介质有:双绞线、光纤、电磁波等。
物理层常见传输介质有
双绞线:当今以太网最常见的传输介质
按照抗电磁干扰能力还可以分为: STP-屏蔽双绞线 UTP-非屏蔽双绞线 光纤传输
按照功能部件可分为: 光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。 光模块:将电信号与光信号互转的
器件,产生光信号。 串口电缆在WAN(Wide Area Network,广域网)中大规模使用
根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到
数据,完成从无线路由器到移动终端的数据传输。
2.4 常见的协议标准化组织
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。
三、数据的通信过程
假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情:
1. IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) 。
2. HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。
3. TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。
4. 在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。
5. IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。
6. 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。
7. Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧)。
8. 在Ethernet模块封装完毕之后,会将数据传递到物理层。
9. 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。 10. 转换完成的信号在网络中开始传递。
一般情况下:
网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。