美文网首页
超文本传输协议HTTP

超文本传输协议HTTP

作者: Cubery | 来源:发表于2019-12-08 23:15 被阅读0次

 超文本传输协议HTTP是一个请求响应模式的无连接无状态的应用层协议,基于TCP连接。HTTP协议目前处于多个版本共存的状态,HTTP1.0、HTTP1.1和HTTP2.0。HTTP1.1主要是在1.0版本的基础上增加了一个长连接(keep-alive)特性,是目前使用最广泛的版本。

特点

 HTTP协议的主要特点如下:

  • 支持C/S模式:客户端浏览器通过URL向服务端Web服务器发送请求,服务端解析处理之后返回响应给客户端。
  • 简单快速:请求只需要给出请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,通信很快。
  • 灵活:HTTP允许传输任意类型的数据对象,正在传输的数据类型由Content-Type加以标记。
  • 无连接:限制每次连接只处理一个请求,服务器处理完客户端的请求并收到客户端的应答之后即断开连接,采用这种方式可以节省传输时间。从HTTP1.1开始,默认使用了长连接,即服务器需要等待一段时间后才断开连接,以保证连接特性,优化效率,但这个优化属于HTTP协议之外的内容。
  • 无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要之前的信息,则必须被重传。

HTTP请求结构

HTTP请求格式.jpg

HTTP响应结构

HTTP响应格式.png

请求/响应的步骤

  • 客户端连接到Web服务器
  • 发送HTTP请求
  • 服务器接收请求并返回HTTP响应
  • 释放TCP连接
  • 客户端浏览器解析HTML内容

响应状态码

  • 1xx:指示信息,表示请求已接收,继续处理
  • 2xx:成功,表示请求已被成功接收、理解、接受
  • 3xx:重定向,要完成请求必须进行更进一步的操作
  • 4xx:客户端错误,请求有语法错误或请求无法实现
  • 5xx:服务端错误,服务器未能实现合法的请求
状态码 信息 解释
200 OK 正常返回信息
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

GET请求和POST请求的区别

  • HTTP报文层面:GET请求信息放在URL,POST放在报文体中(安全性区别不大,URL有长度限制)
  • 数据库层面:GET符合幂等性(一次操作和多次操作结果一样)和安全性(对数据库的操作没有改变数据库中的数据),POST不符合。
  • 其他层面:GET请求可以被缓存、被存储,而POST不行。

 从HTTP标准来说,以上区别是存在的,但是从报文的角度来说,GET请求和POST请求没有本质区别,只要服务器支持,参数怎么传都无所谓。

  1. GET参数的写法并不固定。
  2. POST方法几乎不比GET安全多少(明文传输)。
  3. HTTP本身没有限制URL的长度,是浏览器和服务器基于性能和安全考虑限制的。
  4. POST报文不一定会发送两个TCP报文,这是部分浏览器和框架的行为。

Cookie和Session的区别

 HTTP是无状态的,Cookie和Session让HTTP具备了状态。

Cookie

 Cookie是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端。例如,客户端向一个支持Cookie的服务器发送用户名和密码后,服务器在响应的同时,会把这些信息放在Response header(Set-Cookie)中返回给客户端,客户端会把这些信息存放在统一的位置。当客户端再次请求时,会在Request header(Cookie)中把Cookie回发。服务器接收到后,会解析Cookie生成与客户端相对应的内容。

Session

 Session是服务器端的一种机制,在服务器上保存的信息(类似于hash的结构)。服务器解析客户端的请求中是否包含session id,如果存在session id,说明服务器以前已经为客户端创建过session,把这个session检索出来使用,如果检索不到,就新建一个session。如果客户端请求不包含session id,则为此客户端新建一个session,并生成一个对应的session id,在响应中会发给客户端进行保存。
 Session可以通过Cookie实现,即通过Cookie保存JSESSIONID。也可以通过URL回写来实现,服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,客户端点击任何一个链接都可以把JSESSIONID会发给服务器,但如果不是点击的而是输入的URL,Session是匹配不到的。

区别

  • 存放位置
  • Session相对更安全
  • 考虑到服务器性能开销,应使用Cookie

HTTPS

 HTTPS在HTTP协议和TCP协议之间增加了一个SSL(安全套接字层)或TLS(安全传输层),从而提供了保证交换数据隐私和数据完整性,以及网站服务器身份认证的功能。

SSL

 Security Sockets Layer,安全套接字层

  • 为网络通信提供安全及数据完整性的一种安全协议
  • 是操作系统对外的API,SSL3.0以后更名为TLS
  • 采用身份验证和数据加密保证网络通信的安全和数据的完整性

加密的方式

  • 对称加密,性能较高,安全性较低
  • 非对称加密,性能较低,安全性较高,能加密的长度有限
  • 哈希算法(摘要算法),将任意长度的信息转化为固定长度的值,算法不可逆
  • 数字签名:证明某个消息或者文件是某人发出/认同的
数字签名过程.png

HTTPS数据传输流程

 HTTPS采用了证书和加密结合的方式。


HTTPS数据传输过程.png

HTTP和HTTPS的区别

  • HTTPS需要到CA申请证书,HTTP不需要
  • HTTPS密文传输,HTTP明文传输
  • 连接方式不同,HTTPS默认采用443端口,HTTP使用80端口
  • HTTPS = HTTP + 认证 + 加密 + 完整性保护,较HTTP安全(SSL是有状态的)

HTTPS真的很安全吗

  • 浏览器默认填充http://,请求需要进行跳转,有被劫持的风险;
  • 可以使用HSTS (HTTP Strict Transport Security)优化。

Socket

 本地进程可以用进程号PID唯一标识,网络进行需要IP + 协议 + 端口号来唯一标识。Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口。Socket通信流程如下:


socket通信流程.jpg

相关文章

  • HTTP简单学习笔记

    HTTP:超文本传输协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联...

  • 计算机网络相关知识

    超文本传输协议 HTTP HTTP--Hyper Text Transfer Protocol,超文本传输协议,是...

  • HTTP请求和数据安全

    HTTP请求 1.超文本传输协议.2.http请求过程. 1> http协议: 超文本传输协议(Hypertext...

  • HTTP 基础

    协议理论基础 HTTP(HyperText Transfer Protocol:超文本传输协议) 超文本传输协议,...

  • 24 - HTTPS

    HTTP : (Hypertext Transfer Protocol) : 超文本传输协议 超文本传输协议HTT...

  • HTTP笔记

    HTTP协议(超文本传输协议) 简介 1.http协议是用于web服务器传输超文本到浏览器的传输协议2.http协...

  • HTTP协议的理解

    重点:1.超文本传输协议. 2.http请求过程. 1> http协议: 超文本传输协议(Hypertext Tr...

  • 接口测试(三)

    常见协议 http 超文本传输协议https 安全超文本传输协议ftp 文件传输协议tcp 网络控制协议ip 互联...

  • 网络请求

    常见的协议1:ftp://(文件传输协议)2:http://(超文本传输协议)3:https://(安全超文本传输...

  • HTTP请求简单总结

    HTTP协议 HTTP协议:超文本传输协议(Hypertext Transfer Protocol) http协议...

网友评论

      本文标题:超文本传输协议HTTP

      本文链接:https://www.haomeiwen.com/subject/seumgctx.html