Http协议的快速理解。

最重要的部分背景用颜色衬托出来,注意看背景彩色部分,一定要看时序!!!,

http常见的请求方式有两种  GET和POST都是请求方式!!!是请求体里的!

相信在面试的过程中,面试题里关于http协议是基本是所有公司都会问到的,这是一项必备的知识点,WEB程序分为客户端和服务端,由两部分组成,他们之间利用【网络】进行通信,

网络中通信就是利用网络进行数据传递,网络中数据传递必须指定网络协议

WEB程序的客户端和服务端传递的数据使用的网络协议是HTTP协议【作用 客户端和服务端进行通信】

HTTP 超文本传输协议,属于应用层协议,底层基于TCP协议!

网络通信TCP/IP四层

1.应用层:用户可以直接发起操作的部分!HTTP-->浏览器 输入一个网站

2.传输层:TCP UDP

3.网络层:IP

扫描二维码关注公众号,回复: 15549149 查看本文章

4.物理层:数据进行比特流转化等等

  1. HTTP协议因为基于TCP协议,所以HTTP协议也属于安全协议,会进行确定以后进行数据通信【三次握手】

  2. HTTP协议超文本传输协议,他可以传递任何数据格式 【字符 | 字节】,客户端和服务端传递的数据的时候可以是任何格式

  3. 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的请求数据包 【请求数据包:客户端向服务端传递的数据】

  1. 服务端向客户端响应HTTP的响应数据包 【响应包,只有请求的时候,才会反馈,装服务端给客户端数据】

  1. 进行TCP的四次挥手,断开之前的两个TCP连接

    1. 客户端 -- FIN [断开连接] --> 服务端 客户端申请和服务端断开连接

    2. 服务端 --> ACK --> 客户端 确认断开和客户端的连接 [一条连接]

    3. 服务端 --> FIN --> 客户端 服务端申请断开和客户端的另一条连接

    4. 客户端 --> ACK --> 服务端 客户端确定断开和服务端的连接 [另一条连接]

HTTP的请求方式:

最常见的有两种:GET【获取】| POST【推 上传】

请求的数据最多有四部分:请求行 请求头 请求空行 请求体

其中GET请求方式只有: 请求行 请求头

而POST的请求方式有:请求行 请求头 请求空行 请求体

  1. 两种请求方式的优缺点

    1. GET

      1. 请求有两部分数据 请求行和请求头

      2. GET方式的传递效率高于POST方式   (害,毕竟因为请求格式少嘛)

      3. GET方式也可以传递参数,利用请求行中请求路径部分 url?key=value&key=value   (只可以传字符类型,字节类型不可以传)

      4. GET方式传递参数的限制

        1. 大小为2kb! 浏览器对路径的大小限制

        2. 请求数据类型只能是字符

        3. 请求路径不推荐传递隐私数据,会在浏览器路径部分直接显示

    2. POST

      1. 请求有四部分数据,请求行,请求头和请求空行,请求体

      2. POST方式因为数据部分较多,传递效率低于GET

      3. POST方式可以利用请求体传递任何数据类型,并且也没有限制

  2. 总结对比

    1. 当是二进制文件的时候使用 POST

    2. 传递参数大小大于2KB POST

    3. 隐私的数据账号和密码等 POST

HTTP状态码的介绍

  1. 介绍

    1. 状态码是包含到响应的状态行中!

    2. 状态码是代表本次响应的数据的状态!

    3. 客户端浏览器不会直接展示数据,会先读取状态码,判定本次请求是否成功!

    4. 状态码都是 3位 十进制组成 404 200 500等

  2. 状态码系列

    1. 1xx :101 102 中继状态,没有请求完毕,还在继续! 

    2. 2xx : 本次请求直接成功状态 200 完整成功 完成的数据 202 部分成功 部分的数据 断点下载 

    3. 3xx : 304 转发和重定向。变向的成功! 支付功能:重定向到支付宝!

    4. 4xx : 404 资源未找到 400 错误参数 405 请求方式错误 客户端异常 

    5. 5xx : 500 服务器内部异常 ,Java代码抛异常了! 服务器代码问题 

猜你喜欢

转载自blog.csdn.net/sslovly/article/details/125507890