09. HTTP 超文本传输 ❀ 数据包分析工具 Wireshark

来源:互联网 发布:帝国时代3兵种数据骑兵 编辑:程序博客网 时间:2024/06/01 08:47

        【简介】超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。


  网络环境

        为了使测试环境更加真实,我们布置了这样一个网络环境。防火墙是192.168.28.0/24网段,无线AP是192.168.38.0/24网段。


        ① 防火墙是192.168.28.0/24网段,无线AP是192.168.38.0/24网段。三层交换机与防火墙之间是172.20.1.0/24网段。服务器是172.16.2.0/24网段。工作电脑是172.16.1.0/24网段。现在用一台工作电脑(IP 172.16.1.11)访问Web服务器(172.16.2.11)。

  Wireshark 抓包

  这里我们用最常用的方法,先抓接口包,再过滤出我们需要的信息。

        ① 启动 Wireshark ,点击以太网接口,点击蓝色图标开始抓包。

        ② 工作电脑通过三层交换机,访问同是三层交换机下的Web服务器。打开了Web服务器访问界面。

        ③ 抓包结束后,显示过滤电脑网卡IP地址和Web服务器的IP地址。每次HTTP会话的一开始,双方会首先进行TCP三次握手,HTTP协议会在通信主机之间创建出一条专用的信道,在整个会话处于活跃状态的过程中,双方都会在这条边接中接收和发送数据包。

  HTTP 超文本传输

        在TCP三次握手数据包后,我们可以看到客户端发送的第一条HTTP请求消息,每个请求消息都包含了不少要发送给服务器的内容。


        ① 整个HTTP请求包的长度是401个字节。

        Get 方法是HTTP中最常用的方法,他的意思是:‘我要得到这个资源’。域名后面的部分就是路径,默认是‘/’。然后是HTTP版本形如:‘HTTP/x.x’。

        Host(主机):在浏览器地址栏中输入的Web服务器地址。在大多数情况下,所有HTTP数据包都会发送给Web服务器的80端口,其它常用的Web服务器端口为8080、3132、8088等。

        User-Agent(用户代理):客户端访问Web页面时,所使用的一些与浏览器有关的信息。服务器会用这些信息来向客户端呈现那些与浏览器相匹配的内容。

        Accept(接受)Accept-Language(接受语言)Accept-Encoding(接受编码):在响应消息中,请求方客户端会接受哪些内容。

        Connection(连接):向服务器指定,客户端希望在处理这个请求之后的连状态状态,keep-alive 表示保持连接。

        Upgrade-Insecure-Requests(更新不安全的请求):让浏览器不再显示 https 页面中的 http 请求警报。


        ② 紧接着,服务器确认了客户端的请求,客户端可能够访问服务器的Web根目录了。接下来,服务器开始传输客户端请求的资源。长度是1460字节。


        ③ 为什么每次只传输1460字节呢?那是因为在三次握手时协商好的。(上图是第二次握手数据包)

        ④ 客户端会确认服务器发来的每一个数据包,这是TCP通信中的一部分。


        ⑤ 所有请求包发关完后,服务器会给客户端一个状态码。
         状态码是三位的整数,第一位通常分为如下几类:
         1xx 这一类型的状态码,代表请求已被接受,需要继续处理。(消息)
         2xx 这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。(成功)
         3xx 这类状态码代表需要客户端采取进一步的操作才能完成请求。(重定向)
         4xx 这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。(客户端错误)
         5xx 这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生。(服务器错误)

        常见的状态码:
        200 OK:请求成功,接收到资源。
        404 Not Found:请求失败,未找到资源。
        301 Moved Permanently:永久性转移。
        302 Moved Temporarily:暂时性转移。
        303 See Other:请求的资源已经移到了另外一个URL上了,客户端会自动跳转。这个通常是CGI脚本使用redirect,使得客户端,重定向到另外一个URL。
        500 Server Error:一个未知的服务器错误。

 

        ⑥ 最后四个包,客户端和服务器都向对方发出断开请求,并都同意。这样TCP就断开了。一次完整的Web访问结束。


老梅子   QQ:57389522



原创粉丝点击