文章目录
- 一、 前言
- 二、应用和数据
-
- 故事的起源-应用
- 实现应用-数据
- 三、网络参考模型与标准协议
-
- OSI参考模型
- TCP/IP参考模型
- TCP/IP常见协议
- 常见协议标准化组织
- 应用层
-
- 常见的应用层协议-FTP
- 常见的应用层协议-TeInet
- 常见的应用层协议-HTTP
- 传输层
-
- TCP和UDP--报文格式
- TCP和UDP-端口号
- TCP建立-三次握手
- TCP确认序列号
- TCP窗口滑动机制
- TCP关闭-四次挥手
- TCP和UDP总结
- 网络层
-
- 网络层协议工作流程
- 数据链路层
-
- 以太网与MAC地址
- 地址分析协议(ARP)
-
- ARP工作原理(1)
- ARP工作原理(2)
- ARP的工作原理(3)
- ARP工作原理(4)
- ARP工作原理(5)
- 物理层
-
- 常见的传输介质
- 四、数据通信过程
-
-
- 发送方数据封装
- 中间网络数据传输
- 接收方数据解封装
-
- 五、总结
一、 前言
在数字时代,各种信息以数据的形式充斥着我们的生活。什么是数据? 如何传递数据? 本文将通过网络参考模型简单了解数据"一生"。
二、应用和数据
故事的起源-应用
应用程序的存在是为了满足人们的各种需求,如访问网页、在线游戏、在线视频等。 伴随着应用程序会产生信息。例如,文本、图片、视频等都是不同的信息呈现方式。
实现应用-数据
:数据是计算机领域各种信息的载体。 :应用程序产生的大部分数据需要在不同的设备之间传输。
:计算机只能识别由0和1组成的电子数据(digital data)。 它没有读取各种信息的能力,所以信息需要通过一个 将固定的规则翻译成数据。 而对人来说,我们不具备读取电子数据的能力,所以在读取信息的时候,需要将数据转成人能理解的信息。 对于网络工程师来说,需要更加关注数据端到端传输的过程。
三、网络参考模型与标准协议
OSI参考模型
,由国际标准组织ISO收录在ISO 1984年发布了7489标准。 又被称为,依次为: : 在设备之间传输比特流,提供机电规定,规定电平、速度、电缆针脚等物理特性。 : 将比特组合成字节,然后将字节组合成帧,使用链路层地址(以太网)MAC访问介质并检测错误。 : 为路由器确定路径,并负责将数据从源网络传输到目的网络。 :重传前提供面向连接或非面向连接的数据传输和错误检测。 : 负责建立、管理和终止表示负责建立、管理和终止。该层的通信由不同设备中应用程序之间的服务请求和响应组成。 : 为应用层数据提供各种编码和转换功能,确保一个系统的应用层发送的数据被另一个系统的应用层识别。 : OSI最接近用户层的参考模型,为应用程序提供网络服务。
TCP/IP参考模型
因为OSI协议栈比较复杂,且TCP和IP这两个协议在业内得到了广泛的应用,因此TCP/IP参考模型已成为互联网的主流参考模型。 TCP/IP模型与结构相结合OSI模型相似,采用,同时,层与层紧密相连。 TCP/IP标准参考模型OSI中的合并为,这种划分方法实际上与实际协议的制定背道而驰,因此融合和提出后面的解释也将基于这个模型。
TCP/IP常见协议
TCP/IP协议栈定义了一系列标准协议。 (Hypertext Transfer Protocol,超文本传输协议) :在网页服务器上访问各种页面。 (File Transfer Protocol,文件传输协议) : 它为文件传输提供了一种方式,允许数据从一个主机传输到另一个主机。 (Domain Name Service,域名解析服务) :用于实现从主机域名到主机域名的实现IP地址之间的转换。
(Transmission Control Protocol, 传输控制协议) : 为应用程序提供可靠的连接通信服务。目前,许多流行的应用程序都被使用TCP。 (User Datagram Protocol,用户数据报告协议) : 提供无连接通信,不保证传输数据包的可靠性。
(Internet Protocol, 互联网协议) : 将传输层的数据包装成数据包,完成从源站到目的站的转发,提供无连接、不可靠的服务。 (Internet Group Management Protocol,因特网组管理协议) : 负责IP组播成员管理协议。IP主机与直接相邻的组播路由器之间建立和维护组播组成员关系。 (Internet Control Message Protocol,网络报文控制协议) : 基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
(Point-to- Point Protocol,点对点协议) :点对点模式的数据链路层协议主要用于广域网。 (以太网协议): 多路访问广播数据链路层协议是目前应用最广泛的局域网技术。 (Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE通过简单的桥接访问设备(接入设备)将一个网络的多个主机连接到远程访问集中器。常用的应用是家庭宽带拨号上网。
常见协议标准化组织
应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU (Packet Data Unit,协议数据单元)彼此交换信息,确保网络设备之间能够通信。
常见应用层协议-FTP
FTP (File Transfer Protocol) 是一个用于从一台主机传送文件到另一台主机的协议,用于文件的 "下载”和"上传”,它采用C/S (Client/Server) 结构。
常见应用层协议-TeInet
Telnet是数据网络中提供远程登录服务的标准协议。Telnet为用户提供了在本地计算机上完成远程设备工作的能力。
常见应用层协议-HTTP
HTTP (HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端"(Port to Port)的连接。
TCP和UDP–报文格式
TCP和UDP-端口号
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双向连接建立。
TCP的序列号与确认序列号
TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。
TCP的窗口滑动机制
TCP通过滑动窗口机制来控制数据的传输速率。
1.在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。 2.连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。 3.接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。 4.接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。 5. 发送方根据接收方当前的Window大小发送相应数量的数据。
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报文去关闭连接。 3. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。
TCP和UDP总结
网络层
传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
网络层协议工作过程
当采用IP作为网络层协议时,通信的双方都会被分配到一个"独一无二"的IP地址来标识自己. IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。
以太网与MAC地址
MAC地址由48比特(6个字节) 长,12位的16进制数字组成。例如: 48-A4-72-1C-8F-4F
地址解析协议(ARP)
ARP的工作原理(1)
网络设备一般都有一 个ARP缓存(ARP Cache)。 ARP缓存用来存放IP地址和MAC地址的关联信息。 在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。 学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省: 180s),设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。 如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关。最后网关再把数据转发给目的设备。
ARP的工作原理(2)
1.主机1的ARP缓存表中不存在主机2的MAC地址,所以主机1会发送ARP Request来获取目的MAC地址。 2.ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机1的MAC地址。此时,由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。 3.ARP Request报文中包含发送端MAC地址、发送端IP地址、目的端MAC地址、 目的端IP地址, 其中目的端MAC地址的值为0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。
ARP的工作原理(3)
所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。
ARP的工作原理(4)
1.主机2会向主机1回应ARP Reply报文。 2.ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。 3.ARP Reply报文通过单播传送。
ARP的工作原理(5)
主机1收到ARP Replyl以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和发送端IP地址会被记录到主机1的ARP缓存表中。
物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
常见传输介质
串口电缆在WAN (Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
四、数据通信过程
发送方数据封装
假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情: 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.转换完成的信号在网络中开始传递。
中间网络数据传输
封装好的完整数据,将会在网络中被传递。 一般情况下: 网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的"交换操作。 网络中的三层设备 (如路由器)只会解封装到三层头部, 并且根据三层头部的信息进行相应的"路由 "操作。 注:"交换"和"路由”的详细细节和原则,将会在后面详细介绍。
接收方数据解封装
经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。
五、总结
不论是0SI参考模型还是TCP/IP参考模型,都采用了分层的设计理念。 !!!各个层次之间分工、界限明确,有助于各个部件的开发、设计和故障排除 !!!通过定义在模型的每一层实现什么功能,鼓励产业的标准化 !!!通过提供接口的方式,使得各种类型的网络硬件和软件能够相互通信,提高兼容性 数据的产生与传递,需要各模块之间相互协作,同时每个模块又需要"各司其职"。