应用层 HTTP协议分析

文章目录

      • 应用层
      • 自定制协议
      • HTTP协议
        • 协议概述
        • URL
        • 数据流
        • 协议格式
          • 请求方法
          • 响应状态码
          • 请求头部
          • 响应头部
          • Cookie/Session
      • 抓包分析

应用层

:通过进程间通信完成网络任务

自定制协议

自定制协议是程序员在应用层描述描述应用数据的协议,要保证一方在发送时可以构造数据(序列化),一方在接收时能够解析数据(反序列化)。

HTTP协议

协议概述

超文本传输协议(HyperText Transfer Protocol);

  1. 工作于应用层。
  2. 无连接:http自身不维护连接信息,http将数据交给传输层的TCP协议,而TCP是面向连接的。
  3. 无状态:http自身不对请求和响应之间的通信状态进行保存,也不做持久化处理。
URL

URL == 网址

http://user:pass@www.域名:8080/news/index.boardID=5&ID=2461?uid=1#name


1.协议部分:该URL的协议部分为“http:”,在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。不区大小写,在"HTTP"后面的“//”为分隔符。

2.user:pass: 登录信息(可选)

3.域名部分:。一个URL中,也可以使用IP地址作为域名使用.

4.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符,(可选)HTTP默认端口:80.HTTPS默认端口443.

5.虚拟文件路径:指定服务器上地文件的路径,定位特指资源。从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。(可选)

6.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。(可选)

7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

8.锚部分:标记出以获取资源中的子资源不会被传递到服务器端,锚一般用于页面。从“#”开始到最后,都是锚部分。(可选)
数据流

从发送端的应用层走网络协议栈到物理层,通过物理层传输到接收端,从接受端的网络协议栈传到应用层。

协议格式

应用层 HTTP协议分析_第1张图片

请求方法
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息
PUT:在标明的URL下存储一个文档
HEAD:请求读取由URL所标志的信息的首部。
DELETE: 删除指明URL所标志的资源,无验证机制。
OPTIONS: 询问服务端支持的方法。
TRACE:追踪路径,用于换回测试的请求报文。
CONNECT:要求用隧道协议连接代理。(用于代理服务器)
LINK:建立和资源间的联系。
UNLINE:断开连接。
响应状态码

常见的状态码:
200(ok),204(没有资源可以返回)
301(临时重定向),302(永久重定向)
400(请求有语法错误),403(Forbidden),404(NOT FOUND)
500(服务端内部错误),504(网关超时)

状态码 信息类别 原因
1xx 信息性状态码 收到的请求正在处理
2xx 成功性态码 正常处理完毕
3xx 重定向状态码 需要附加操作
4xx 客户端状态码 服务器无法处理请求
5xx 服务端状态码 服务器处理请求出错
请求头部
Host: 指定请求服务器都域名和端口号。
Accept: 指定客户端能接受内容的类型。
Accept-Language: 浏览器可接受的语言。
Accept-Encoding: 声明浏览器支持的编码类型
Accept-Charset: 浏览器可接受的字符集。
Connection: 是否需要持久连接。
Conntent-Length: 请求正文长度。
Conntent-Type: 数据类型(text/html等)
Referer: 先前网页的地址
Cookie: 浏览器保存的一些信息,区分每个用户的身份,用于实现会话功能。
cache-Control:关于缓存的响应头。
响应头部
Connect-Length:正文长度
Connect:-Type:正文类型
Location:重定向地址:3xx
Set-Cookie:设置http cookie。
Cookie/Session

Cookie:浏览器保存的客户端不敏感的信息,数据来源于服务器端,保存在浏览器,当下次再请求服务端某资源时携带。
Session:数据保存在服务端,一般描述当前会话信息。

抓包分析

请求

GET /s?ie=UTF-8&wd=bai HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie:...
Host: www.baidu.com
Referer: https://www.baidu.com/
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

响应

HTTP/1.1 200 OK
Bdpagetype: 3
Bdqid: 0xeb4f30e80002abb4
Cache-Control: private
Ckpacknum: 2
Ckrndstr: 80002abb4
Connection: keep-alive
Content-Encoding: br
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
Content-Type: text/html;charset=utf-8
Date: Mon, 30 Oct 2023 11:46:17 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BD_CK_SAM=1;path=/
Set-Cookie: PSINO=6; domain=.baidu.com; path=/
Set-Cookie: BDSVRTM=24; path=/
Set-Cookie: H_PS_PSSID=39320_39396_39530_39420_39142_39439_39528_39497_39552_26350_39566_39427; path=/; domain=.baidu.com; Secure; SameSite=None
Strict-Transport-Security: max-age=172800
Traceid: 1698666377184948020216955824895063927732
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

你可能感兴趣的:(http,网络协议,网络)