本想把题目写成《详解HTTP全过程》,能力有限来个《略解HTTP全过程》还是更好些。
IE主页设置([url]www.51cto.com[/url])
Sniffer设置就绪
点IE,点Sniffer!
[url]www.51cto.com[/url]网页完全打开时,我们才停止数据包的捕获(因为我们想得到一个完整的HTTP过程,所以先禁用网卡,使保存在计算机缓存中关于HTTP的信息自动删除掉!)。
经Sniffer的工作后,可得到下面的图表(让我们略分析下图表)(图表看起来有点模糊,点击后,可能看到比较清楚的图表喔!):
当我们进行HTTP请求时,计算机最先进行的当然是用ARP去得到网关的MAC喔!(在表中没有显示出来)。
由于我们使用[url]www.51cto.com[/url]访问网页的,DNS当然就少不的。[序号(1)]行中我们可以看到一个DNS数据包被计算机发送了,目标地IP(61.139.2.69)当然是DNS服务器(这是在本地中有个存IP与域名映射的文件中没有相应映射才进行的动作(本地计算机的高速缓存中也没有这个域名与IP的映射)),源地址IP当然就是我的计算机IP地址(192.168.0.96)。
这样一去一回,计算机这时就知道一个(大型网站,同时有个多域名,有多个IP。这样做的好处当然多多喔!)我们想访问网站(51CTO的主页)的IP地址喔!
现在计算机知道了网关的MAC也知道我们访问网站的IP地址,下面就要进行TCP的最最著名的三次握手动作了喔!从[序号(3)]这行中我们知道,这个握手是本地计算机发起的(谁叫是我们向别人要东西喔!当然要主动些啊!)。[序号(4)][序号(5)][序号(6)]这三个数据包就是三次握手的“铁证”喔!
鉴于三次握手在TCP的地位与声望。在此还是要比较重点的介绍一下,才对得起它。
从“摘要”栏中我们可知:[序号(3)]这个数据包的目标端口是80(这是个RFC中定义了的,提供WEB服务时使用TCP的80端口,不过现在有时也不一定喔!有的软件就是不遵从规则,不按规律出牌。像QQ不管是443、80、8080一个都不放过。),源端口就是随机的(其实是使用 现在未使用的最小的合法的端口号,是按顺序从低到高取的(这只是在windows中是这样的,在其它的TCP/IP实现(linux,mac OS)中就不知道了)),这次TCP连接中计算机选择了1051这个端口号(看来计算机先前还是没有建立多少连接)。
数据包中的TCP段是这个三次握手的主体部分,在TCP段中有几个很重要的标志位(虽然只有短短的6个比特,但作用是很大,有多大呢?没有它们,三次握手就不能建立,直接的后果这个TCP连接就不能建立,间接的后果是我们不能浏览WEB等等。)。在三次握手的初始中,SYN这个标志位就代表发起一个TCP连接(请求51CTO的WEB服务器建立连接)。
由于TCP连接提供的功能比UDP强大。根据功能与复杂度成正比。TCP就一定需要用更多的设置来达到某些特定的功能。下面介绍的SEQ、ACK、WIN就是为达到某些功能面产生的“事物”。到底SEQ、ACK它们存在的价值是什么呢?
SEQ: 数据包中的实际数据(应用层的数据,不包括TCP层、IP层、物理层的数据)中最后一个字节(每一个字节占用一个序列号单位)相对初始序列号的序列号(好难说喔!感觉还是没有说清楚喔!)。举例:如果初始序列号(SEQ)为1234567890,数据包中的实际数据有6个字节,则下个数据包中的SEQ为1234567896。
ACK: 就是计算机希望得到下一个数据包的这第一个实际数据的序列号。
通过SEQ、ACK(还有各种计时器的配合),就可以达到对已发送的数据的确认,如果有未确认的已发的数据,发送方会重新进行传输。
[/img]..