大家好,我们今日讲解“网络通信基础”,这节内容是“VBA信息获取与处理”教程中第七个专题“VBA与HTTP网络通讯”的第一节。由于涉及到文章的审核相关问题(设计到一些网址的话审核通过十分困难),关于网抓的内容在平台上发表的不全,平台发表的代码有些运行不了,这是因为缺少某些自定义函数的过程,在其他的章节中。如果有需要学习网抓的朋友可以联络我分享这套教程。其中的程序文件是非常值得拥有的代码源码。
第一节网络通信基础
在当今的时代,网络是无所不在的,在互联网的基础上开始了物联网的起步。从电子邮件的发送,到无人驾驶技术;从手机的智能到宇宙的探测,通信无所不能。在探讨网络通信时我们有必要理解几个概念,在VBA的网络应用中,有必要对网络的通信进行必要的模拟认识。
1几个基本概念的讲解(WEB,HTTP,TCP/IP)
1)WEB即WorldWideWeb的缩写,中文名翻译为:全球广域网或万维网
它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
Web非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。
Web1.0时代开始于年,其主要特征是大量使用静态的HTML网页来发布信息,并开始使用浏览器来获取信息,这个时候主要是单向的信息传递。通过Web万维网,互联网上的资源,可以在一个网页里比较直观地表示出来,而且资源之间,在网页上可以任意链接。Web1.0只解决了人对信息搜索、聚合的需求,而没有解决人与人之间沟通、互动和参与的需求。
Web2.0始于年3月,在Web2.0中,软件被当成一种服务,Internet从一系列网站演化成一个成熟的为最终用户提供网络应用的服务平台,强调用户的参与、在线的网络协作、数据储存的网络化、社会关系网络、RSS应用以及文件的共享等成为了Web2.0发展的主要支撑和表现。Web2.0模式大大激发了创造和创新的积极性,使Internet重新变得生机勃勃。
可以说WEB使得全世界的人们以史无前例的巨大规模相互交流。相距遥远的人们,甚至是不同年代的人们可以通过网络来发展亲密的关系或者使彼此思想境界得到升华,甚至改变他们对待小事的态度以及精神。情感经历、政治观点、文化习惯、表达方式、商业建议、艺术、摄影、文学都可以以人类历史上从来没有过的低投入实现数据共享。信息保存方式不是使用人们熟悉的方式如图书馆、出版物那样实在的东西。信息传播是经由万维网和英特网来实现,而无须被搬运具体的书卷,或者手工的或实物的复制而限制。而且数字储存方式的优点是,你可以比查阅图书馆或者实在的书籍更容易有效率地查询网络上的信息资源。
2)HTTP是HyperTextTransferProtocol的缩写,翻译为超文本传输协议。
万维网WWW技术的出现使得因特网得以超乎想象的速度迅猛发展。这项基于TCP/IP的技术在短短的十年时间内迅速成为已经发展了几十年的Internet上的规模最大的信息系统,它的成功归结于它的简单、实用。在WWW的背后有一系列的协议和标准支持它完成如此宏大的工作,这就是Web协议族,其中就包括HTTP超文本传输协议。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
HTTP诞生之初主要是应用于WEB端内容获取,那时候内容还不像现在这样丰富,排版也没那么精美,用户交互的场景几乎没有。对于这种简单的获取网页内容的场景,HTTP表现得还算不错。但随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示(更多的图片文件),排版变得更精美(更多的CSS),更复杂的交互也被引入(更多的jS)。用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。
3)TCP/IP是TransmissionControlProtocol/InternetProtocol的缩写,翻译为传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇。
TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
TCP用于应用程序之间的通信。当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
IP用于计算机之间的通信。IP是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至它的目的地。
TCP/IP协议意味着TCP和IP在一起协同工作。TCP负责应用软件(比如你的浏览器)和网络软件之间的通信。IP负责计算机之间的通信。TCP负责将数据分割并装入IP包,然后在它们到达的时候重新组合它们。IP负责将包发送至接受者。
2网络通信的实现步骤
由以上的名词解释我们可以看出,通过TCP/IP的通信规格可以让我们的计算机进行网络通信;HTTP协议架起了客户端和服务器之间的文档或数据的交互桥梁,通过以上两个协议就可以让我们的计算机和外界有了联络的可能。
1)通信的过程分析
一般而言,通讯是静态的。服务器在等待浏览器的请求之前,是不会主动做任何事情的。现在页面很多动态实时的效果,其实还是我们浏览器,不停的向服务器发送请求,服务器返回消息再更新页面的结果,例如AJAX技术;或者是首次请求后,通讯并没有断开,服务器源源不断的往浏览器发送更新数据,这就是传说中的长连接技术。
通常情况下,当我们的浏览器,通过域名,访问了某个服务器,会进到服务器的门户主页面中。当我们点击门户页面的某个超链接或者点击某个提交按钮后,要求服务器进一步返回我们需要的某个资源文档,或者执行我们提交给它的某些命令。其实,我们刚才点击的超链接或按钮,就蕴含着我们要获取的文档或者执行程序的路径,这个路径统称为URL——统一资源定位符。HTTP通讯中,这个路径的格式一般为:
HTTP://域名:端口/文档或程序的全路径?参数。
端口就是服务器某个特定进程来处理客户端发来的消息,默认为80,可以先不用去理解这个名词。文档或程序路径是相对路径。服务器也是一台计算机,上面除了存放资源文件,还存放着维护服务器的软件,因此资源文档可能并不存放在其根目录上。
用于传递浏览器向服务器发送的请求参数,可有多个参数,用“”符号隔开,每个参数的名和值用“=”符号隔开,例如: