泓泰

网络通信的过程

admin
网络通信的过程-第1张-游戏相关-泓泰

前言:

如今兄弟们【men】对【duì】“wow钓鱼100200”大概比较重【chóng】视,姐【jiě】妹们都需要剖析一些“wow钓鱼100200”的相关知识。那么【me】小【xiǎo】编在网上【shàng】网罗了一些对于“wow钓鱼【yú】100200””的相关文章,希望咱们能喜欢【huān】,各位【wèi】老铁【tiě】们【men】快快来学习一下吧!

【分享成果,随【suí】喜正能量】不要拒绝善意【yì】,不要停止【zhǐ】微笑;不管雨下【xià】了多久,雨【yǔ】后【hòu】都是将会有彩【cǎi】虹,不管你是有【yǒu】多悲伤,你都要坚信,幸福是在【zài】等你!幸福是一种比较,是【shì】一种【zhǒng】知足。在【zài】人生的道路上,人就是要有所【suǒ】追求的,又【yòu】是要有【yǒu】所满足。

《VBA信【xìn】息获取与处【chù】理》教程是【shì】我推出第六套教程,目【mù】前已经是第一版修订了。这套教程【chéng】定位于最高级,是【shì】学完初级,中【zhōng】级后的教程【chéng】。这部教程给【gěi】大家讲解的内【nèi】容有【yǒu】:跨【kuà】应用程序【xù】信【xìn】息获得、随机信息【xī】的利用、电子【zǐ】邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数【shù】扩展、工作表信息与其他应用交互【hù】,FSO对【duì】象的利用、工作表及文件夹【jiá】信息的获取、图形【xíng】信息的获取以【yǐ】及定制工作【zuò】表【biǎo】信【xìn】息函数【shù】等等内【nèi】容。程序文件【jiàn】通过32位和64位两【liǎng】种OFFICE系统【tǒng】测试。是非【fēi】常抽象的,更【gèng】具研究的【de】价【jià】值。

教程共两册,八十四讲。今日的内容是专题七 VBA与【yǔ】HTTP网络【luò】通【tōng】讯【xùn】的第2讲【jiǎng】:网络【luò】通【tōng】信【xìn】的过程

第二节 网络通信过程的解读

大家【jiā】好,在一讲中,我【wǒ】讲【jiǎng】解了网络通【tōng】信的一些概念及网络【luò】通信【xìn】的【de】实现的步骤,在这【zhè】一【yī】讲我们来解读网络通【tōng】信【xìn】的具体过程,了解一下网络通【tōng】信的请求和【hé】响应是如何实现的。

1 网络通信中客户端请求阶段

为了更【gèng】好【hǎo】的给【gěi】大家讲解网【wǎng】络通信【xìn】的过程,我在360浏览器中要【yào】直【zhí】接进行网址的搜索http://www.4399.com/

为了更好的【de】给大家讲解,我利用了一个抓【zhuā】包【bāo】的软件得【dé】到了我【wǒ】们客户【hù】端对服务【wù】器的请求如下【xià】:

GET http://www.4399.com/ HTTP/1.1

Host: www.4399.com

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: __guid=208989332.4442495301675265000.1591451028570.9978; monitor_count=1; home4399=yes;UM_distinctid=17289df92b6561-0048d5baa4a47b-4e4c0d20-100200-17289df92b71d;CNZZDATA30039538=cnzz_eid%3D1989079887-1591447571-null%26ntime%3D1591447571; Hm_lvt_334aca66d28b3b338a76075366b2b9e8=1591451030

If-None-Match: W/"5edaf3e5-29b9a"

If-Modified-Since: Sat, 06 Jun 2020 01:39:49 GMT

上述截图:

内容的讲解:

1)首行【háng】的HTTP方法,就是请求的方【fāng】法。常【cháng】用的就【jiù】GET和POST。

GET是索取数据【jù】的请求,要求服务器【qì】返回URL指定的文档内容【róng】,或返回URL指定【dìng】的数【shù】据处理过程的结【jié】果所【suǒ】指向的文档,是最【zuì】常见的。

POST是向服务器提交数据【jù】的请求,要求服【fú】务器接收并利用随附的消息主体的【de】数【shù】据,来执【zhí】行某个【gè】程序【xù】或获【huò】取文档,通常用于浏【liú】览器向服【fú】务器发送表单数据,例如提【tí】交注【zhù】册信息,或者进行【háng】数据查询【xún】等【děng】。

所以,如果【guǒ】采用【yòng】GET方式【shì】,一【yī】般消息主体为空,采用POST方式的话,一般就有相应的消息主【zhǔ】体。

请注意【yì】,并【bìng】不意味【wèi】着采用GET方式就不【bú】能携带【dài】数据了【le】,URL是可以携带【dài】我们需要传递给服务器的参数的。可有多个参数,用“&”符号隔开【kāi】,每个参【cān】数【shù】的【de】名和值用“=”符号隔开【kāi】。

那既然GET方式也可以携带参数,那两者【zhě】区别【bié】又是什么呢?一是安全性【xìng】,GET方式参【cān】数就在【zài】URL,提交的是密码等私密资料就不合适【shì】用GET;二【èr】是,GET方式提【tí】交【jiāo】的数据最多只能有1024字节,而POST则没【méi】有此限制。三是,GET一般不能改变服务【wù】器的数据【jù】,而POST可【kě】以改【gǎi】变服务器的数据,例如注册【cè】了个用【yòng】户,服【fú】务器【qì】就多了【le】数据条目。

2)Host字段:该【gāi】字段【duàn】指定请求资源的Intenet主机【jī】和端口号,即URL的域名部分,HTTP/1.1请求必【bì】须包【bāo】含该【gāi】字【zì】段。

3)User-Agent字【zì】段:该字【zì】段的内容包含发出请求的用户信息(浏览器和系统【tǒng】等消息)。

4)Cookie字段:这是比较重要的请求头信息之一

5)If-Modified-Since字段:所【suǒ】请求的页【yè】面在客户【hù】端的缓存中的最近【jìn】更新时间;

6)If-None-Match字段:后面储【chǔ】存的是客户端读取的【de】缓【huǎn】存中【zhōng】页面的缓存检验值

特别提示【shì】,发包的整个过【guò】程,例如消【xiāo】息主【zhǔ】体,都不【bú】支持英文和数字以外的字【zì】符【fú】,如果要写入中【zhōng】文或特殊字符,就需【xū】要URLENCODE的函数进行转码了【le】。

urlencode是一个【gè】函数【shù】,可将字符串以URL编码,用于【yú】编码处理【lǐ】,URL编码(URL encoding),也称作百分号编码(Percent-encoding), 是【shì】特定上下文的【de】统【tǒng】一资源定位符 (URL)的【de】编【biān】码【mǎ】机制。将需要转码的字【zì】符转为16进制,然后从右到【dào】左,取4位【wèi】(不足4位直接处理),每2位做一【yī】位,前面加上%,编码成【chéng】%XY格式。

2 网络通信的服务器响应阶段

当我们发【fā】送【sòng】请求后,服务【wù】器处理完我们的请【qǐng】求,就会向我们【men】的浏览器,发【fā】送响应消息【xī】了。我们看看上【shàng】面请求的【de】响应:

HTTP/1.1 304 Not Modified

Date: Sat, 06 Jun 2020 13:44:06 GMT

Content-Type: text/html

Connection: keep-alive

Expires: Sat, 06 Jun 2020 10:20:10 GMT

Last-Modified: Sat, 06 Jun 2020 01:39:49 GMT

ETag: "5edaf3e5-29b9a"

Cache-Control: max-age=1800

Age: 14028

X-Via: 1.1 CSP-129514:10 (Cdn Cache Server V2.0)

X-Ws-Request-Id: 5edb9da6_CSP-129514_16864-31796

下面我们来解读一下上面的数据:

1) 状【zhuàng】态行 = HTTP协议 [空【kōng】格] 状态码 [空格] 状【zhuàng】态解释 [回车【chē】换【huàn】行],状态码【mǎ】常【cháng】见的就是,200成功、400错误请求(一【yī】般我们是发送的请【qǐng】求有【yǒu】问【wèn】题)、500服务器错误。上【shàng】面的值是304,我在下面有讲解【jiě】。

2)Content-Type:表示后面的文档属于什么类型;

3) Expires:指明【míng】应【yīng】该在什么时候认为文档已经过期【qī】,从而不再缓【huǎn】存【cún】它。

4) Last-Modified:文档【dàng】在服务【wù】器上最后更【gèng】新时间。同缓存一起【qǐ】保存【cún】这个值,当【dāng】再次访问该【gāi】页面,在请求的头部字段的If-Modified-Since中再次携带这个时间值发送至服务【wù】器,如【rú】果服务器此时的文档更新【xīn】时间晚于该【gāi】时间【jiān】,返回新页面数据,否【fǒu】则返回一个304(Not Modified)状态,并加载缓存【cún】数据进行【háng】显【xiǎn】示【shì】;

5) Set-Cookie: 服务器向客户【hù】端发送的cookie。

6) ETag:一段文【wén】本,一般也【yě】是用于缓存是否更新的判【pàn】断的校检值,当首次访【fǎng】问页面时候,获【huò】取【qǔ】这个值,同缓存【cún】一起保存,当再【zài】次访问时候【hòu】,请求阶【jiē】段【duàn】的If-None-Match字段就会再次携【xié】带这段校检值发送至服务器,服务器判【pàn】断【duàn】ETag校检【jiǎn】值是否变化【huà】,变【biàn】化则【zé】返回新的页面数据【jù】,无变化则返回304,读【dú】取缓存数据显示。

3 Cookie、Session与Cache(缓存)

网络通讯是静态的,http协议是无【wú】状态【tài】的【de】。它对于我【wǒ】们【men】之前【qián】的所【suǒ】有通讯都没【méi】有记忆能【néng】力【lì】。那出现【xiàn】的问题是,如果后续处【chù】理需要前面的信息,则【zé】它必须重传,这样可能导致每【měi】次连接传送的数据量增大。另一方【fāng】面,就难以验证【zhèng】用户的权限和【hé】登录问题。于是【shì】,两种用于【yú】解【jiě】决机制就产生了,就是Cookie和Session。还有【yǒu】就是利用Cache可以减小重复数【shù】据的下载【zǎi】。

1)Cookie 是通过客户端【duān】记录通讯情况,其是由服务器发给客户端的特【tè】殊信息,以【yǐ】文本文件【jiàn】的方式【shì】存放在我们的电脑上,然【rán】后我们的【de】浏【liú】览器每次向【xiàng】服务【wù】器发送请【qǐng】求的时候就会带【dài】上这些特殊的信【xìn】息【xī】。例如,当我们登录网站【zhàn】时,服务器会【huì】发送【sòng】一段cookie给我们【men】,这【zhè】就是我们在上面的【de】响【xiǎng】应阶段所说的Set-Cookie头部字【zì】段的功能,后续【xù】的【de】通讯,在请求阶段,就会【huì】使用cookie请求【qiú】字段,发送这段文本,服务器收到了这段文本,就知道我们【men】已经登【dēng】录了。

2)Session 它【tā】是通【tōng】过服【fú】务器来记【jì】录通讯情况。Session指的是服务器端为客户端所开辟的存储空间,在其【qí】中【zhōng】保存的信息就是用于保持【chí】状态。当我【wǒ】们的浏览【lǎn】器【qì】首次【cì】访问或者登录服务【wù】器时【shí】,服务器就创建【jiàn】一个【gè】session,服务器会为该Session生成【chéng】唯【wéi】一的Session id,这个session id将【jiāng】从URL或者从cookie返回客户端【duān】,以后【hòu】的【de】HTTP请求,从cookie或者URL附上【shàng】Session id,服务器接受到请【qǐng】求【qiú】之后就会依据Session id找到相应的Session,这样【yàng】,用户【hù】的【de】状态也就记忆了【le】。

3) Cache缓【huǎn】存 保存在客户端上的【de】。当我【wǒ】们首【shǒu】次访【fǎng】问某个页面【miàn】时,浏览器会自动【dòng】保【bǎo】存这【zhè】个页面的部分内容,例【lì】如html页面【miàn】,图【tú】片等【děng】,当下【xià】一次再次访问时,缓存直接使用之前保存的数【shù】据【jù】响【xiǎng】应访问请【qǐng】求【qiú】,而【ér】不是向服务器再次发【fā】送【sòng】请求。这样大大的节【jiē】约【yuē】了访问的时间。客户端首次访问服务【wù】器后,服务器【qì】会【huì】返【fǎn】回该页面的【de】Last-Modified或ETag字段值,客户端将该【gāi】页【yè】面数据保存在cache中,并记录这两个属性。当客【kè】户端再次【cì】访问这个页面,请求【qiú】阶段【duàn】的消【xiāo】息【xī】,会在If-Modified-Since(对【duì】应Last-Modified)或If-None-Match(对应【yīng】ETag)两个字【zì】段中携带之前在cache中【zhōng】保存的Last-Modified或ETag的属性值。服务【wù】器通过判断这个两个【gè】属性,判【pàn】断页面【miàn】是否发生变化,如无变化,客户端【duān】不需要重新下【xià】载,返回304响应。

以上就是整个网络通信过程的基本过程,大家可以慢慢理解。

本节知识点回向:

网络通【tōng】信的过程是【shì】怎么样【yàng】的?每【měi】个阶段有哪些数据的传输?什么是【shì】Cookie?什么是Session?什么是Cache?作用是什么?

我20多年的VBA实【shí】践经验,全部浓缩在下【xià】面的各【gè】个教【jiāo】程中【zhōng】,教程学习顺序:

【分【fèn】享成果【guǒ】,随喜正【zhèng】能量】昨天再好,也走【zǒu】不回去;明天再难【nán】,也要抬脚继续。日【rì】子过的是心情;生活要的是质量【liàng】。要【yào】懂得,无事心不空,有【yǒu】事心不【bú】乱,大事心不畏,小【xiǎo】事【shì】心不慢。

标签: #wow钓鱼100200