前言:
当前咱们对“apache第一次响应速”大约比较关注,咱们都想要剖析一些“apache第一次响应速”的相关资讯。那么小编也在网摘上网罗了一些对于“apache第一次响应速””的相关文章,希望各位老铁们能喜欢,姐妹们快快来了解一下吧!四 请求头和响应头
还记得我们前面提到的上网流程吧?
1 DNS解析,获取A记录,找到网站对应的IP地址
2 三次握手
三次握手之前服务器处在listen状态 建立完三次握手之后服务器处于established状态可以传输数据
Established阶段的工作
1) 客户端发起请求,告诉服务器要什么
2) 服务器接收请求:读取请求信息内容
3) 服务器处理请求:将请求交给文件系统,让文件系统去找文件
4) 服务器响应请求:将数据交给客户端
a) 要不要压缩?(取决于双方是否支持压缩)
b) 是否开了长连接(长连接:在服务器和客户端建立连接之后,不会立即断开,会等待一定时间,在此时间内如果再有数据包发送就不需要进行三次握手,可直接发送,对应的就是短连接)
3 四次断开
在这个流程中接收请求和处理请求是在服务器内部完成的,所以呢,我们来看一下发起请求和响应请求
环境准备
为apache生成一个web页面
echo "hello" > /var/www/html/index.htmlsystemctl 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
wireshark的几面分为三部分
第一部分是数据包列表
No.: 序号
Time: 时间
Source: 源地址
Destination: 目标地址
Protocol:协议
Length:长度
info:简介
第二部分为数据包的详细信息
Frame&Ethernet 数据链路层数据,主要是mac地址和帧
Internet protocol 网络层信息 逻辑链路寻址,主要是IP地址
Transmssion Control 传输控制,可以查看应用层信息
第三部分为16进制数据
在wireshark中如果是确认包,在选中的时候前面会有√的标记,如果是请求包会有→的标记,如果是响应包会有←的标记
我们先看一下第四个包,请求头
Hypertext Transfer Protocol#HTTP协议 GET / HTTP/1.1\r\n #请求信息 [Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n]#专家信息 [GET / HTTP/1.1\r\n] #获取根下的数据,http协议的版本是1.1 \r\n=换行符 [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.141\r\n #请求的主机信息 User-Agent: curl/7.64.1\r\n #客户端浏览器和版本 Accept: */*\r\n \r\n #客户端支持的内容类型,服务器会根据此内容返回信息 内容类型主要指的是文本类,视频,音频,图片等 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 request 1/1] #http请求进度 [Response in frame: 6] #响应帧是第6帧 [Next request in frame:8] #下一个请求帧
请求头我们就看完了,接下来就是一个应答包
这个应答包的作用就是服务器告诉客户端:“你的请求我收到了,等着吧,我给你找数据”,如果客户端收不到这个应答吧,就会再次发起请求
然后第六个就是响应包,来看下响应包当中的响应头
Hypertext Transfer Protocol HTTP/1.1 200 OK\r\n #响应代码 [Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n] [HTTP/1.1 200 OK\r\n] [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 GMT\r\n #响应时间 Server: Apache/2.4.37 (centos)\r\n #服务器版本 Last-Modified: Wed, 25 Mar 2020 02:33:30 GMT\r\n #服务器认定的资源做出修改的日期及时间。 它通常被用作判断接收到的或者存储的资源是否一致。由于精确度比ETag要低,所以这是一个备用机制。 ETag: "6-5a1a4b1a67408"\r\n #验证标签,用来帮助控制缓存验证,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值,并通过 ETag 返回给浏览器,浏览器把对应的哈希值和A同时缓存在本地,当下次再次向服务器请求A时,会把这个哈希值发送给服务器,服务器再次计算A的哈希值并和刚刚接收到的哈希值做比较,如果发现A发生了变化就把A返回给浏览器(200),如果发现A没有变化就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端 Accept-Ranges: bytes\r\n #接受范围,如果出现此字段表示,这是一个续传的下载(断点续传),bytes表示服务器可接受范围请求的单位是bytes,none表示不支持 Content-Length: 6\r\n #返回的数据长度,单位为字节 [Content length: 6] Keep-Alive: timeout=5, max=100 #长连接的时长及能够处理的请求数量 Connection:keep-alive #支持长连接 Content-Type: text/html; charset=UTF-8\r\n \r\n #页面类型,文本、图片、视频、音频,及字符编码 [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)#数据类型及相关信息 hello\n#数据内容
以上就是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的界面包含哪些内容
请求头当中所包含的信息的含义
响应头分析
常用的响应代码含义
重点:相关工具的使用,请求头当中包含的内容,响应头当中包含的内容
难点:记住并理解请求头当中所包含的信息和作用,理解响应头中字段的含义和作用,记住常用的响应代码功能
3分钟了解计算机发展历史-组团学
标签: #apache第一次响应速