一、HTTP

references:

HTTP


【HTTP协议】---HTTP协议详解

1、概述、特点

HTTP(超文本传输协议)是一种规定了浏览器和万维网服务器通信规则的协议。客户端和服务端的指定接口(默认80)建立TCP连接,然后进行请求、响应和数据交换。

HTTP通常使用有两个版本。HTTP1.0使用非持续连接(短连接),每次连接只处理一个请求,服务端收到客户请求并收到应答后就断开连接(WWW服务器面对大量用户,只能提供有限连接,不让一个连接处与等待状态)。HTTP1.1开始使用持续连接(长连接),一个TCP连接可以传输多个对象。

特点:

  1. 简单快捷:客户端向服务器请求服务时,只要传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器规模小,所以通信较快。
  2. 灵活:能传输任意类型的数据对象,正在传输的内容类型用Content-Type标记。
  3. 无连接:每次连接只能处理一次请求。优点是节省传输时间,实现简单。如果Connection是close则是短连接,每次只能处理一个请求;Connection是keep-alive则是长连接,一次连接能处理多个请求,可以通过timeout断开。
  4. 无状态:无状态指协议对于事务处理没有记忆能力。所以有了Cookie和Session。
  5. 支持C/S模式。

2、工作原理

  1. 客户端连接到Web服务器:客户端和Web服务器的80端口建立TCP套接字连接。
  2. 发送HTTP请求:客户端向服务器发送请求报文。
  3. 服务器接收请求报文并返回HTTP响应:Web服务器解析请求,定位请求资源,然后将资源复本写入TCP套接字发回。
  4. 释放TCP连接。
  5. 客户端浏览器解析HTML内容。

3、请求

格式:请求行、请求头部、空行、请求数据(主体)

请求行:包括请求类型、请求资源、使用的HTTP版本。

请求头部:服务端要使用的其他附加信息(host指出请求的目的地)。

空行:必须有一个空行。

请求数据:数据。

4、响应

格式:状态行、消息报头、空行、响应正文

状态行:包括HTTP版本、状态码、状态消息

消息报头:客户端要使用的附加信息(编码类型等)。

空行:必须有空行。

响应正文:HTML,返回给客户端的文本信息。

5、状态码

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

常见状态码

200 OK //客户端请求成功

400 Bad Request //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

6、GET请求和POST请求

  1. GET请求可以被缓存,POST不行。
  2. GET请求会保存在浏览器历史记录中,POST不会。
  3. GET请求的数据放在URL后,以?分割URL和数据,参数用&相连(例如http://weibo.com/signup/signup.php?inviteCode=2388493434)因此绝不能用 GET请求传输敏感数据;POST请求数据写在HTTP的主体中,所以POST比GET略安全一点点。
  4. GET请求的长度有限制(因为浏览器对URL长度有限制),POST的数据放在请求的主体中,理论上没限制,实际上服务器可能会限制。

7、Cookie和Session

HTTP用的是无状态的连接,所以需要Cookie和Session来保存一些信息。

当服务器接收到Cookie后,会根据Cookie中的SessionID来找这个客户的Session,如果没有就会生成一个新的SessionID发给客户端。

根本区别:Cookie保存在客户端,Session保存在服务器。

其他区别:

  1. Cookie保存在客户端,可以使用Cookie欺骗,相对不安全。Session保存在服务器,相对安全。
  2. Session可以设置超时时间,超过一定时间后失效,避免长期占用服务器内存。
  3. 单个Cookie的大小有限制(4KB)。
  4. 客户端每次都会把Cookie发送到服务端,所以服务端直到Cookie,但是客户端不知道Session。

二、HTTPS

references:HTTPS详解

HTTP协议中的内容都是明文,HTTPS是将他们加密,S指SSL/TLS协议。

HTTP的三个不安全:

  1. 窃听风险
  2. 篡改风险:攻击者篡改内容,但是双方都不知道。
  3. 冒充风险:中间人攻击,攻击者在链路上伪装自己,与通讯双方分别建立联系,并交换其所收到的数据。

使用非对称加密+对称加密解决,在TCP和HTTP之间新增了一个TLS/SSL加密层。

1、一些概念

  1. 数字证书:是由权威的数字证书认证机构(CA)颁发的证书,提供公钥和私钥,CA机构和浏览器、操作系统厂家合作,将公钥内置在浏览器、操作系统中,以保证公钥的安全。
  2. 数字签名:为了防止信息来自中间人,发送者会把发送的信息进行摘要(摘要算法),这个摘要就是数字签名。当客户端收到后,对信息重新进行摘要,对比数字签名是否一致就可以知道是否被篡改、来自中间人等等(中间人无法获得私钥)。
  3. 摘要算法:类似哈希,将消息经过算法变为固定长度的串,称为摘要。
  4. 对称加密:使用同一个密钥进行加密解密,速度快。AES。
  5. 非对称加密:私钥加密只能公钥解密,公钥加密只能私钥解密。私钥在服务器手中。RSA,基于大整数因子分解。

2、HTTPS的SSL/TLS握手过程

  1. 客户端发起HTTP请求:客户端告知自己支持的加密算法、摘要算法、安全层协议版本、随机数random-Secret-C。
  2. 服务端配置:服务端要有一套数字证书,以获得一对公钥和私钥。
  3. 服务端返回协商结果:包括使用的加密算法、摘要算法、协议版本、随机数random-Secret-S和证书(公钥)。
  4. 客户端验证证书:验证证书是否信任、有没有过期等。取出摘要,验证内容是否被篡改。获得公钥。证书没问题,生成一个随机数pre-Master-Secret,用公钥加密。
  5. 传送加密信息:把加密后的随机数发给服务端。
  6. 服务端解析:服务端用私钥打开后,用random-Secret-C、random-Secret-S、pre-Master-Secret生成最终的对称加密的私钥Master-Secret。以后就都用对称加密的私钥进行加密解密了。
  7. 验证加密结果:服务端用Master-Secret加密一段握手信息发送给客户端,客户端验证完毕则握手结束。

Q:为什么用3个随机数而不是只用第3个?

A:为了使每次的私钥生成都是随机数,如果不随机可能会被猜出来。

三、HTTP和HTTPS对比

区别:

  1. HTTP是以明文方式传输数据的,HTTPS是经过SSL\TLS加密的,更安全。
  2. HTTP默认端口80,HTTPS默认端口443。
  3. HTTPS在建立TCP连接后还要协商对称加密的密钥。
  4. HTTPS需要服务端申请证书,客户端安装对应的根证书(通过根证书表示对改证书信任)。

HTTPS优点:

  1. 安全性更高,防止数据被窃听、篡改。
  2. HTTPS可以认证(SSL证书)用户和服务器,确保数据发送到正确的地方。

HTTPS缺点:

  1. 进行HTTP会话之前,进行SSL/TLS握手 ,时延增加。
  2. 成本高。购买证书需要钱,而且有些证书不安全;加密计算也需要耗费时间。

计算机网络 part3 HTTP&HTTPS的更多相关文章

  1. 计算机网络 - HTTP和HTTPS的区别

    计算机网络 - HTTP和HTTPS的区别 http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份. https具有安全性的ssl加密传输协议,加密采用对称加密. https协议需要 ...

  2. 秋招C++面试相关总结索引

    C++相关 C++ part1 C++ part2 C++ part3 C++ part4 C++ part5 C++ part6 C++ part6.5 C++ part7 C++ part8 C+ ...

  3. 对https的研究

    HTTPS简介 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP ...

  4. ENode简介与各种教学视频资源汇总(要进群这篇文章必看)

    ENode是什么 ENode是一个.NET平台开源的应用开发框架,为开发人员提供了一套完整的基于DDD+CQRS+ES+(in-memory)+EDA架构风格的解决方案. ENode的特色是什么 解决 ...

  5. [转载] Android逃逸技术汇编

    本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉 ...

  6. 剑指Offer——知识点储备-网络基础

    剑指Offer--知识点储备-网络基础 计算机网络 http和https的区别 (1)http是http协议运行在tcp之上,所传输的内容都是明文,客户端和服务器端都无法验证对方的身份. (2)htt ...

  7. 500G !!史上最全的JAVA全套教学视频网盘分享 (JEECG开源社区)

    500 G JAVA视频网盘分享(JEECG开源社区) [涵盖从java入门到深入架构,Linux.云计算.分布式.大数据Hadoop.ios.Android.互联网技术应有尽有] JEECG开源社区 ...

  8. 500G JAVA视频网盘分享 (JEECG开源社区)

    500 G JAVA视频网盘分享(JEECG开源社区)   [涵盖从java入门到深入架构,Linux.云计算.分布式.大数据Hadoop.ios.Android.互联网技术应有尽有]       J ...

  9. TCP为什么要三次握手和四次挥手

    http://www.jellythink.com/archives/705 简析TCP的三次握手与四次分手 https://zhuanlan.zhihu.com/p/24001696 计算机网络面试 ...

随机推荐

  1. Springmvc中参数的绑定

    .处理器适配器在执行Handler之前需要把http请求的key/value数据绑定到Handler方法形参数上. 1.默认支持的参数类型: HttpServletRequest,HttpServle ...

  2. 【.NET 与树莓派】矩阵按键

    欢迎收看火星卫视,本期节目咱们严重探讨一下矩阵按键. 所谓矩阵按键,就是一个小键盘(其实一块PCB板),上面有几个 Key(开关),你不按下去的时候,电路是断开的,你按下去电路就会接通.至于说有多少个 ...

  3. 从零搭建一个IdentityServer——项目搭建

    本篇文章是基于ASP.NET CORE 5.0以及IdentityServer4的IdentityServer搭建,为什么要从零搭建呢?IdentityServer4本身就有很多模板可以直接生成一个可 ...

  4. 向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾。

    1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.text.SimpleDateFormat; ...

  5. Jenkins部署web项目到Tomcat(热部署)

    使用这个方式的话需要tomcat中有初始时Manage这个项目,本质上是通过http://ip:port/manager/html这个地址的上传接口进行上传,进行热部署(需要远程tomcat 必须开启 ...

  6. 3分钟搞懂什么是WPF。

    先推荐下猛哥(刘铁猛)的书籍  <深入浅出WPF>. 一直以来,完美的用户体验是桌面应用程序和Web应用程序中的一大障碍.许多开发人员绞尽脑汁将界面设计得美观炫丽些.互 动感强些,但费了九 ...

  7. XCTF-phoenix100

    前期工作 查壳无壳,界面是普通的输入flag点击验证 逆向分析 文件结构只有一个MainActively,查看MainActively代码 public class MainActivity exte ...

  8. 安装Archlinux+UEFI启动

    为了安装Arch自己也走了很多弯路,找了很多教程,最后探索出了这样一个安装方法,不一定适用于每个人. ArchWiki官方安装手册 本方法全程插上网线. 准备 获取镜像 镜像可以从官网获取,访问官方下 ...

  9. 五:Spring Security 中的角色继承问题

    Spring Security 中的角色继承问题 以前的写法 现在的写法 源码分析 SpringSecurity 在角色继承上有两种不同的写法,在 Spring Boot2.0.8(对应 Spring ...

  10. Phoenix踩坑填坑记录

    Phoenix踩坑填坑记录 Phoenix建表语句 如何添加二级索引 判断某表是否存在 判断索引是否存在 Date类型日期,条件判断 杂项 记录Phoenix开发过程中的填坑记录. 部分原文地址:ph ...