客户端:主动发起请求的一方
服务器:被动接受请求的一方
应用层
1.请求(request)和响应(response)中包含的信息有哪些
2.请求数据和响应数据如何组织(具体按照什么格式来序列化)
序列化:把对象变成字符串
反序列化:把字符串变成对象
序列化的创建方式
a)xml
b)json 优点:方便调试
缺点:传输效率低
HTTP协议
打开一个网页都是靠http协议
https基于http来实现的,多了一层加密层
url:网址/链接
ip地址不太方便记忆和传播,用一些更好记忆的字符串来表示:域名,浏览器在访问域名的时候会自动把域名转成ip地址
路径表示主机上的具体的资源(文件或者虚拟的文件)
查询字符串(query_string)中的键值都是用户自定义
urlencode:query_string如果包含了一些特定字符,都需要进行转译. %[十六进制数字]
抓包工具:收费站
HTTP 请求
1.首行
a)方法 GET/POST/PUT/DELETE/…
b)url
c)版本号 常见HTTP/1.1 HTTP2.0 HTTP3.0
三个部分之间使用空格分割
2.协议头(header)
若干个键值对
每个键值对占一行,每个键和值之间使用:分割
3.空行
表示header到这里结束
4.协议正文(body)
一般GET请求没有body,POST请求才有
HTTP响应格式
1.首行
A:版本号
B:状态码
C:状态码描述信息
2.协议头(header)
仍然是一组键值对
每个键值对占一行
中间使用:隔开
3.空行
表示header部分结束的标记
4.协议正文(body)
响应中的正文格式有很多种,比如可以是一个html,也可以是一个CSS,也可以是一个JavaScript,还可以是一个图片数据,还可以是一个json数据…
1.常用的方法有哪些?
GET,POST,PUT,DELETE,HEAD,OPTION…
2.GET和POST的区别是啥?【重点】
GET请求往往把自定制数据放在query_string中
POST请求往往把自定制数据放在body中.
3.常见的状态码有哪些?【重点】
a)200 OK 表示访问成功
b)302 Found 表示重定向
c)404 Not Found 表示没找到指定资源
d)403 Forbidden 表示没有找到,没有权限
e)502 Bad Gateway 表示服务器挂了
f)504 Gateway Timeout 服务器响应超时
- 2xx表示访问成功
- 3xx表示重定向
- 4xx表示客户端出错
- 5xx表示服务器出错
4.常见的header有哪些?
a)Content-Type:描述了body的数据格式类型。
b)Content-Length:描述了body的数据长度。
c)Host:描述了主机名(域名:ip地址)
d)Referer:当前页面是从哪个页面跳转过来的
e)Cookie:字符串,浏览器的本地存储能力之一
Cookie中经常会包含一种身份标示信息称为session id
session 服务器端维护的一个数据结构,记录了用户的相关身份信息,session id就是session对象的唯一身份标示,session id 保存在浏览器中,浏览器后续再访问服务器的时候,就会自动带着session id,从而让服务器知道当前请求是哪个用户发过来的。
服务器端使用hash table之类的结构来维护若干个用户的身份信息,key就是session id,value 就是完整session对象
Cookie其实是按照我们的Host这个header来划分的。