http,全称「超文本传输协议」
文本的意思是字符串,超文本,意味着http不仅能传输文本,还能传输图片,传输音频文件,传输视频,传输其他的各种数据等
http是一种典型的「一问一答」模型的协议
客户端->服务器
客户端发一个请求,服务器返回一个响应(一一对应)
打开网页这种场景,就属于典型的一问一答模式
【http报文格式】
借助抓包工具,可以观察到http请求/响应的详细情况
「抓包」:把通过网卡上的数据,获取到,并且解析显示出去,可以使用“Fiddler”抓包工具进行操作
「代理」:
给客户端跑腿的程序,为「正向代理」(将请求从客户端以代理服务器的身份发出)
给服务端跑腿的程序,为「反向代理」(将服务器监听端口在代理服务器上暴露)
【http请求的基本格式】
1.首行
2.请求头(header)
从第二行开始的若干行,一直到空行结束
不知道有多少行,遇到空行就结束
每一行都是一个键值对,键和值之间使用“: ”来分割
键值对是什么?
键值对是一种特殊的结构,分「键」和「值」两部分,键和值之间使用:空格 来进行分割
键值对不确定是几行,以空行为结尾
有的键值对只能出现在请求中,而有的只能出现在响应中,有的两者都能出现
3.空行
请求头的结束标记
4.正文(body)
有的请求中有body,有的请求中没有
【http响应的基本格式】
1.首行
2.响应头(header)
与上文请求头相同
3.空行
4.正文
【URL】
唯一资源定位符
网络上资源很多(资源可以是一个网页/文件/图片等,须要有一套规则,能找到某个指定的资源)
【URI】
唯一资源标识符
可以简单的理解成,URL是URI的一种实现
【URL基本格式】
【协议方案名】
声明给哪个协议进行使用
【登录信息(认证)】
现在见不到了,已废弃
【服务器地址】
可以是IP,也可以是域名
【服务器端口号】
不写端口则根据协议类型自动分配端口
http协议,自动分配80端口
https协议,自动分配443端口
【带层次的文件路径】
确定服务器上的具体资源
【查询字符串】
程序员自定义的键值对,可以对指定内容进行筛选
(没有“?”字符标明没有查询字符串)
对于一个URL来说,主要关心其中四个部分
1.IP地址(域名)
2.端口号
3.层次的路径【和代码直接相关】
4.查询字符串【和代码直接相关】