您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

apache-4-请求头和响应头

时间:2021-09-13 16:18:35  来源:  作者:请叫我老菜鸟

四 请求头和响应头

还记得我们前面提到的上网流程吧?

1 DNS解析,获取A记录,找到网站对应的IP地址

2 三次握手

三次握手之前服务器处在listen状态 建立完三次握手之后服务器处于established状态可以传输数据

Established阶段的工作

1) 客户端发起请求,告诉服务器要什么
http://www.sina.com.cn/meizi.jpg

2) 服务器接收请求:读取请求信息内容

3) 服务器处理请求:将请求交给文件系统,让文件系统去找文件

4) 服务器响应请求:将数据交给客户端

a) 要不要压缩?(取决于双方是否支持压缩)

b) 是否开了长连接(长连接:在服务器和客户端建立连接之后,不会立即断开,会等待一定时间,在此时间内如果再有数据包发送就不需要进行三次握手,可直接发送,对应的就是短连接)

3 四次断开

在这个流程中接收请求和处理请求是在服务器内部完成的,所以呢,我们来看一下发起请求和响应请求

环境准备

Apache生成一个web页面

echo "hello" > /var/www/html/index.html
systemctl restart httpd
访问测试

安装wireshark(图形界面查看数据包内容的工具)

[root@manage01 ~]# dnf install wireshark* -y

抓包

[root@manage01 ~]# tcpdump -nn -vvv -s 1500 -w /tmp/httpd host 172.16.121.141 and port 80 -i ens37

切换到另一台主机访问

curl 172.16.121.141

使用apache主机查看抓到的数据包

[root@manage01 ~]# wireshark /tmp/httpd 

 

apache-4-请求头和响应头

 

 

wireshark的几面分为三部分

第一部分是数据包列表

No.: 序号

Time: 时间

Source: 源地址

Destination: 目标地址

Protocol:协议

Length:长度

info:简介

第二部分为数据包的详细信息

Frame&Ethernet 数据链路层数据,主要是mac地址和帧

Internet protocol 网络层信息 逻辑链路寻址,主要是IP地址

Transmssion Control 传输控制,可以查看应用层信息

第三部分为16进制数据

在wireshark中如果是确认包,在选中的时候前面会有√的标记,如果是请求包会有→的标记,如果是响应包会有←的标记

我们先看一下第四个包,请求头

 

apache-4-请求头和响应头

 

 


Hypertext Transfer Protocol
#HTTP协议
    GET / HTTP/1.1rn #请求信息
        [Expert Info (Chat/Sequence): GET / HTTP/1.1rn]#专家信息
            [GET / HTTP/1.1rn]
            #获取根下的数据,http协议的版本是1.1 rn=换行符
            [Severity level: Chat]
            #严重级别 chat note warn error
            [Group: Sequence]
            #数据包属于哪个组(类)
                Checksum:校验和类
                            Sequence:序列号类
                            Response:响应类
                            Request:请求类
                            Undecoded:不能识别类
                            Reassemble:重组问题类
                            Malformed:畸形数据包类
                            Debug:不应该出现匹配此类型的数据包


        Request Method: GET
        #请求的方法是get,获取数据,获取的数据通过Request URI指定
        get     获取指定的资源
        post    向指定资源提交数据进行处理,有可能导致新的资源的建立或原有资源的修改
        put     向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定资源的内容)
        delete  删除指定的资源
        opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许客户端查看服务器性能)
        Trace 回显服务器收到的请求,用于测试和诊断
        Connect 将服务器作为代理,让服务器代替用户去访问其他网页,之后将数据返回给用户。
        Head 与get请求类似,返回的响应中没有具体内容,用于获取报头
        Request URI: /
        #请求的资源信息
        Request Version: HTTP/1.1
        #请求的版本
    Host: 172.16.121.141rn
    #请求的主机信息
    User-Agent: curl/7.64.1rn
    #客户端浏览器和版本
    Accept: */*rn
    rn
    #客户端支持的内容类型,服务器会根据此内容返回信息
    内容类型主要指的是文本类,视频,音频,图片等
        Accept:text/html,Application/xhtml+xm… #接受的数据类型
        Accept-Language:en-US,en;q=0.5  #语言环境
        Accept-Encoding:gzip, deflate   #是否支持压缩,及类型
        Connection:keep-alive   #是否支持长连接
        Upgrade-Insecure-Requests:1 #客户端优先选择加密及带有身份验证的响应
        If-Modified-Since: Wed, 25 Mar 2020 12:18:04 GMT
        #把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文件显示到浏览器中。如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。(如果客户端是第一次访问,不会出现此字段,因为客户端没有相关缓存数据)
        If-None-Match: "5-5a1acdc3a6d9e" #验证标签,用来帮助控制缓存验证
    [Full request URI: http://172.16.121.141/]
    #完整的请求信息
    [HTTP request 1/1]
    #http请求进度
    [Response in frame: 6]
    #响应帧是第6帧
    [Next request in frame:8]
    #下一个请求帧

 

请求头我们就看完了,接下来就是一个应答包

 

apache-4-请求头和响应头

 

 

这个应答包的作用就是服务器告诉客户端:“你的请求我收到了,等着吧,我给你找数据”,如果客户端收不到这个应答吧,就会再次发起请求

然后第六个就是响应包,来看下响应包当中的响应头

Hypertext Transfer Protocol
    HTTP/1.1 200 OKrn
    #响应代码 
        [Expert Info (Chat/Sequence): HTTP/1.1 200 OKrn]
            [HTTP/1.1 200 OKrn]
            [Severity level: Chat]
            [Group: Sequence]
        Response Version: HTTP/1.1
        #响应版本
        Status Code: 200
        #响应代码
        [Status Code Description: OK]
        #状态代码介绍
        Response Phrase: OK
        #响应短语
    Date: Wed, 25 Mar 2020 02:37:05 GMTrn
    #响应时间
    Server: Apache/2.4.37 (centos)rn
    #服务器版本
    Last-Modified: Wed, 25 Mar 2020 02:33:30 GMTrn
    #服务器认定的资源做出修改的日期及时间。 它通常被用作判断接收到的或者存储的资源是否一致。由于精确度比ETag要低,所以这是一个备用机制。
    ETag: "6-5a1a4b1a67408"rn
    #验证标签,用来帮助控制缓存验证,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值,并通过 ETag 返回给浏览器,浏览器把对应的哈希值和A同时缓存在本地,当下次再次向服务器请求A时,会把这个哈希值发送给服务器,服务器再次计算A的哈希值并和刚刚接收到的哈希值做比较,如果发现A发生了变化就把A返回给浏览器(200),如果发现A没有变化就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端
    Accept-Ranges: bytesrn
    #接受范围,如果出现此字段表示,这是一个续传的下载(断点续传),bytes表示服务器可接受范围请求的单位是bytes,none表示不支持
    Content-Length: 6rn
    #返回的数据长度,单位为字节
        [Content length: 6]
    Keep-Alive: timeout=5, max=100
    #长连接的时长及能够处理的请求数量
    Connection:keep-alive
    #支持长连接
    Content-Type: text/html; charset=UTF-8rn
    rn
    #页面类型,文本、图片、视频、音频,及字符编码
    [HTTP response 1/1]
    #响应进度
    [Time since request: 0.019117000 seconds]
    #响应耗时
    [Request in frame: 4]
    #请求帧是第四帧
    [Next request in frame:8]
    #下一个请求帧
    [Next response in frame:9]
    #下一个响应帧
    File Data: 6 bytes
    #数据大小
Line-based text data: text/html (1 lines)
#数据类型及相关信息
    hellon
#数据内容

以上就是http的请求头内容和响应头内容

1xx(临时响应)

100: 请求者应当继续提出请求。

101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。

2xx(成功)
200:正确的请求返回正确的结果,如果不想细分正确的请求结果都可以直接返回200。

201:表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。
202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求。
203:请求的代理服务器修改了源服务器返回的 200 中的内容,我们通过代理服务器向服务器 A 请求用户信息,服务器 A 正常响应,但代理服务器命中了缓存并返回了自己的缓存内容,这时候它返回 203 告诉我们这部分信息不一定是最新的,我们可以自行判断并处理。

3xx(已重定向)
300:请求成功,但结果有多种选择。
301:请求成功,但是资源被永久转移。比如说,我们下载的东西不在这个地址需要去到新的地址。
303:使用 GET 来访问新的地址来获取资源。
304:请求的资源并没有被修改过。
308:使用原有的地址请求方式来通过新地址获取资源。

4xx(请求错误)
400:请求出现错误,比如请求头不对等。
401:没有提供认证信息。
402:为以后需要所保留的状态码。
403:请求的资源不允许访问。就是说没有权限。
404:请求的内容不存在。
406:请求的资源并不符合要求。
408:客户端请求超时。
413:请求体过大。
415:类型不正确。
416:请求的区间无效。

5xx(服务器错误)

500:服务器错误。
501:请求还没有被实现。
502:网关错误。
503:服务暂时不可用。服务器正好在更新代码重启
505:请求的 HTTP 版本不支持。


总结

如何使用抓包工具

如何使用wireshark查看抓取到的数据包

wireshark的界面包含哪些内容

请求头当中所包含的信息的含义

响应头分析

常用的响应代码含义

重点:相关工具的使用,请求头当中包含的内容,响应头当中包含的内容

难点:记住并理解请求头当中所包含的信息和作用,理解响应头中字段的含义和作用,记住常用的响应代码功能



Tags:apache   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
序言:习惯了用集成软件来安装php的运行环境,单独配置php、apache成为了部分程序员不愿意面对的问题,下面和我一块来复习一下,赶紧点赞收藏吧。 php官方下载地址https://windows....【详细内容】
2021-11-23  Tags: apache  点击:(24)  评论:(0)  加入收藏
四 请求头和响应头还记得我们前面提到的上网流程吧?1 DNS解析,获取A记录,找到网站对应的IP地址2 三次握手三次握手之前服务器处在listen状态 建立完三次握手之后服务器处于esta...【详细内容】
2021-09-13  Tags: apache  点击:(50)  评论:(0)  加入收藏
1. Apache HTTP Server地址: http://httpd.apache.org/download.cgi#apache242. APR 和 APR-Util地址: http://apr.apache.org/download.cgi3. PCRE地址: https://sourceforge....【详细内容】
2021-04-12  Tags: apache  点击:(195)  评论:(0)  加入收藏
四个大型数据和数据湖的大型Apache系统,Apache Shardingsphere,Apache冰山,Apache Hudi和Apache IotdB 管理大数据所需的许多功能是其中一些是事务,数据突变,数据校正,流媒体支持,...【详细内容】
2021-03-09  Tags: apache  点击:(242)  评论:(0)  加入收藏
Knoldus Inc.3分钟阅读嘿那里,作为一个技术人员有时我们必须编写数据库的查询,看起来不错,但我们不知道我们写的查询是句法正确的。所以在这个博客中,我们在Apache Calcite的帮...【详细内容】
2021-02-24  Tags: apache  点击:(408)  评论:(0)  加入收藏
目前广为人知的Druid有两个,一个是阿里巴巴开源的Durid数据库连接池,一个是MetaMarkets开源的分布式、实时多维OLAP分析的数据处理系统。这篇文章将介绍后者,即Apache Druid。...【详细内容】
2021-01-12  Tags: apache  点击:(278)  评论:(0)  加入收藏
正确的集成框架是绑定应用程序架构构建块的粘合剂。应用程序组件必须不断交换关键数据,以方便用户操作、服务扩展、威胁监视、后端操作、事件触发等。如果没有可靠的集成过...【详细内容】
2020-12-18  Tags: apache  点击:(164)  评论:(0)  加入收藏
一、Apache Doris概览Apache Doris是一个现代化的MPP分析型数据库(OLAP)产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简...【详细内容】
2020-12-03  Tags: apache  点击:(372)  评论:(0)  加入收藏
Kylin术语Data Warehouse(数据仓库)数据仓库是一个各种数据(包括历史数据和当前数据)的中心存储系统,是BI( business intelligence ,商业智能)的核心部件。这里所谈的数据包括来自企...【详细内容】
2020-11-12  Tags: apache  点击:(96)  评论:(0)  加入收藏
本文将从云原生时代的机遇和挑战说起,介绍一个全新的开源高性能云原生 API 网关——Apache APISIX,探讨如何解决云原生时代 API 网关所面临的一些痛点,最后介绍该开...【详细内容】
2020-10-13  Tags: apache  点击:(163)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条