最重要的部分背景用颜色衬托出来,注意看背景彩色部分,一定要看时序!!!,
http常见的请求方式有两种 GET和POST都是请求方式!!!是请求体里的!
相信在面试的过程中,面试题里关于http协议是基本是所有公司都会问到的,这是一项必备的知识点,WEB程序分为客户端和服务端,由两部分组成,他们之间利用【网络】进行通信,
网络中通信就是利用网络进行数据传递,网络中数据传递必须指定网络协议。
WEB程序的客户端和服务端传递的数据使用的网络协议是HTTP协议【作用 客户端和服务端进行通信】
HTTP 超文本传输协议,属于应用层协议,底层基于TCP协议!
网络通信TCP/IP四层
1.应用层:用户可以直接发起操作的部分!HTTP-->浏览器 输入一个网站
2.传输层:TCP UDP
3.网络层:IP
扫描二维码关注公众号,回复: 15549149 查看本文章4.物理层:数据进行比特流转化等等
-
HTTP协议因为基于TCP协议,所以HTTP协议也属于安全协议,会进行确定以后进行数据通信【三次握手】
-
HTTP协议超文本传输协议,他可以传递任何数据格式 【字符 | 字节】,客户端和服务端传递的数据的时候可以是任何格式
-
HTTP协议属于一次性,一次通信的数据不会被保留,如果想保留数据,自己利用Java的保存数据机制即可 例如:登录的账号
HHTP数据的组成
http协议由两个数据包组成。
请求数据包和相应数据包。请求数据包就是客户端(即我们)发起的数据包,
响应数据包就是服务端向客户端响应的数据包。
请求
详解
请求行【请求数据的第一行】:请求方式 请求路径 协议版本
请求头【第二行开始,请求空行前】:固定的key:固定的值 【浏览器的信息,正文数据例如账号和密码】
请求空行:【请求空行的作用激素用来区分请求头和请求提的】
请求体【底层机制,字节流可以传递任何数据】:请求数据【携带我们客户端主动发送给服务端的数据,例如登陆的账号和密码,上传头像:头像图片】
响应
状态行【相应数据第一行】:协议版本 状态码 状态 【标注本次响应数据是否成功!根据状态码!】
响应头 【第二行开始,到相应空行】固定的key:固定的值 【返回服务器的额外信息,例如:服务器种类,服务器返回数据的长度】
响应空行:[回车][换行] 【区分响应头和响应体】
响应体 【响应体,底层也是字节流】:服务端给客户端返回数据的位置!
HTTP协议步骤,时序
a.客户端向DNS服务器,解析域名对应的IP地址
下面绿色的是重点,一定要把SYN和ACK带着回答出来。【ACK】是确认的意思
b.进行TCP的三次握手【客户端和服务端建立两个连接】
i. 第一次握手:客户端--SYN[建立连接]-->服务端 客户端和服务端建立申请连接
ii. 第二次握手: 服务端--ACK[确定]+SYN-->客户端 1.确认了客户端建立连接的请求 2.申请和客户端建立连接
iii. 第三次握手:客户端--ACK-->服务端 客户端确定服务端建立连接的请求,最后形成双链接。
户端向服务端发送HTTP的请求数据包 【请求数据包:客户端向服务端传递的数据】
-
服务端向客户端响应HTTP的响应数据包 【响应包,只有请求的时候,才会反馈,装服务端给客户端数据】
-
进行TCP的四次挥手,断开之前的两个TCP连接
-
客户端 -- FIN [断开连接] --> 服务端 客户端申请和服务端断开连接
-
服务端 --> ACK --> 客户端 确认断开和客户端的连接 [一条连接]
-
服务端 --> FIN --> 客户端 服务端申请断开和客户端的另一条连接
-
客户端 --> ACK --> 服务端 客户端确定断开和服务端的连接 [另一条连接]
-
HTTP的请求方式:
最常见的有两种:GET【获取】| POST【推 上传】
请求的数据最多有四部分:请求行 请求头 请求空行 请求体
其中GET请求方式只有: 请求行 请求头
而POST的请求方式有:请求行 请求头 请求空行 请求体
-
两种请求方式的优缺点
-
GET
-
请求有两部分数据 请求行和请求头
-
GET方式的传递效率高于POST方式 (害,毕竟因为请求格式少嘛)
-
GET方式也可以传递参数,利用请求行中请求路径部分 url?key=value&key=value (只可以传字符类型,字节类型不可以传)
-
GET方式传递参数的限制
-
大小为2kb! 浏览器对路径的大小限制
-
请求数据类型只能是字符
-
请求路径不推荐传递隐私数据,会在浏览器路径部分直接显示
-
-
-
POST
-
请求有四部分数据,请求行,请求头和请求空行,请求体
-
POST方式因为数据部分较多,传递效率低于GET
-
POST方式可以利用请求体传递任何数据类型,并且也没有限制
-
-
-
总结对比
-
当是二进制文件的时候使用 POST
-
传递参数大小大于2KB POST
-
隐私的数据账号和密码等 POST
-
HTTP状态码的介绍
-
介绍
-
状态码是包含到响应的状态行中!
-
状态码是代表本次响应的数据的状态!
-
客户端浏览器不会直接展示数据,会先读取状态码,判定本次请求是否成功!
-
状态码都是 3位 十进制组成 404 200 500等
-
-
状态码系列
-
1xx :101 102 中继状态,没有请求完毕,还在继续!
-
2xx : 本次请求直接成功状态 200 完整成功 完成的数据 202 部分成功 部分的数据 断点下载
-
3xx : 304 转发和重定向。变向的成功! 支付功能:重定向到支付宝!
-
4xx : 404 资源未找到 400 错误参数 405 请求方式错误 客户端异常
-
5xx : 500 服务器内部异常 ,Java代码抛异常了! 服务器代码问题
-