关于Http协议你了解多少,有多少说多少

Http协议

超文本传输协议,构建与TCP/IP协议之上,默认端口号为80,处于网络体系结构的最顶层应用层上,Http协议采用的是请求/响应的工做方式。Http是无链接无状态的。web

Q1:怎么理解Http是无链接无状态的chrome

无链接是指限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。json

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即咱们给服务器发送 HTTP 请求以后,服务器根据请求,会给咱们发送数据过来,可是,发送完,不会记录任何信息。这就代表每一个请求都是独立的。浏览器

Http的这两个特性的优缺点:缓存

优势在于解放了服务器,每一次请求“点到为止”不会形成没必要要链接占用。安全

缺点在于每次请求会传输大量重复的内容信息。服务器

CookieSession是用来保持Http链接的两种技术。网络

Http报文

Http在应用层经过报文的方式来交换数据,分为请求报文响应报文svg

请求报文

Http的请求报文由请求行,请求头,请求体组成加密

  • 请求行:声明了请求方法,主机域名,资源路径和协议版本

  • 请求头:包括一些访问的域名、用户代理、Cookie等信息

  • 请求体:Http请求的数据

请求行详解

请求方法

  • Get:从服务器读取数据

  • Post:为服务器添加信息

  • Put:为指定的URL下添加一个文档

  • Delete:删除指定URL所标志的信息

Q2:Http的Get和Post请求方式有什么区别

  1. Get可提交的数据量收到URL长度的限制,URL的长度最可能是2048个字符。Post请求是没有长度的限制的。

  2. Get请求的数据类型只容许Ascll字符,Post能够是任何类型

  3. Get请求的安全性较差,由于数据参数是直接拼接在URL后面的,可见。Post数据封装在Http的请求体中,浏览器中没有缓存。

  4. Get请求适用于数据量较小,而且数据不敏感的状况。Post正好相反

请求头详解

采用heade : value的方式

请求体详解

存放须要发送给服务器的数据信息

请求体有三种使用方式:

  1. 数据交换:请求体能够任意类型,好比json串,不过服务器须要解析

  2. 键值对:Get请求数据每一个键值对经过&拼接在URL后面,键与值之间用=链接

  3. 分部分形式:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

请求体被分为多个部分,boundary 用于分割不一样的字段,为了不与正文内容重复。而后接着一个空行 接 内容,最后以

–boundary-- 结束

boundary:分割线

响应报文

包括状态行,响应头和响应体

  • 状态行:包括协议版本Version、状态码Status Code、状态码描述

  • 响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息

  • 响应体:响应的具体数据

常见的响应码
200 OK 客户端请求成功
301 Moved Permanently 请求永久重定向
302 Moved Temporarily 请求临时重定向
304 Not Modified 文件未修改,能够直接使用缓存的文件。
400 Bad Request 因为客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized 请求未经受权。这个状态代码必须和WWW-Authenticate报头域一块儿使用
403 Forbidden 服务器收到请求,可是拒绝提供服务。服务器一般会在响应正文中给出不提供服务的缘由
404 Not Found 请求的资源不存在,例如,输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误,致使没法完成客户端的请求。
503 Service Unavailable 服务器当前不可以处理客户端的请求,在一段时间以后,服务器可能会恢复正常。

相关知识

Q3:Http1.0和Http1.1的区别有哪些

Http1.1比Http1.0升级了以下地方

  1. 引入了持久链接,意思就是在一个TCP链接中能够传送多个Http的请求和响应。在请求头中添加Connection: Keep-Alive开启

  2. 多个请求和响应能够同时进行

  3. 引入更加多的请求头和响应头

Q4:Http和Https的区别

  1. Http处在应用层,Https处在传输层

  2. Http明文传输,Https经过ssl加密和身份认证

  3. Http默认80端口,Https默认443端口