目录
TCP/IP
URI / URL
HTTPS
总结时间:
TCP/IP协议簇
对TCP的理解
对UDP的理解
HTTP(超文本传输协议)是什么?
HTTPS(安全超文本传输协议)是什么?
HTTPS的特点:
HTTPS协议对称加密的过程?
HTTP协议的缓存策略有哪些?
强制缓存:
协商缓存:
哪些问题是HTTPS无法解决的?
如何让UDP协议变得可靠?
名词解释来源:http://t.csdn.cn/Znh1f
TCP/IP 协议你一定听过,TCP/IP 我们一般称之为协议簇,什么意思呢?就是 TCP/IP 协议簇中不仅仅只有 TCP 协议和 IP 协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是 TCP / IP 协议,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。
TCP 协议的全称是 Transmission Control Protocol 的缩写,意思是传输控制协议,HTTP 使用 TCP 作为通信协议,这是因为 TCP 是一种可靠的协议,而可靠能保证数据不丢失。
IP 协议的全称是 Internet Protocol 的缩写,它主要解决的是通信双方寻址的问题。IP 协议使用 IP 地址 来标识互联网上的每一台计算机,可以把 IP 地址想象成为你手机的电话号码,你要与他人通话必须先要知道他人的手机号码,计算机网络中信息交换必须先要知道对方的 IP 地址。
我们可以通过输入 www.baidu.com 地址来访问百度的官网,那么这个地址有什么规定吗?我怎么输都可以?AAA.BBB.CCC 是不是也行?当然不是的,你输入的地址格式必须要满足 URI 的规范。
URI的全称是(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
URL的全称是(Uniform Resource Locator),中文名称是统一资源定位符,也就是我们俗称的网址,它实际上是 URI 的一个子集。
URI 不仅包括 URL,还包括 URN(统一资源名称),它们之间的关系如下
HTTP 一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS 应运而生。HTTPS 的全称为 (Hyper Text Transfer Protocol over SecureSocket Layer),全称有点长,HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL。
TCP(Transmission Control Protocol)是一种面向连接的传输协议,它提供可靠性、流量控制和拥塞控制等服务,确保数据传输的可靠性和有序性。TCP将数据分成数据段进行传输,每个数据段都有序号和确认号,以确保数据的可靠传输。TCP还通过滑动窗口机制来进行流量控制和拥塞控制,以避免网络拥塞和数据丢失。TCP适用于对可靠性要求较高的应用场景,例如文件传输、电子邮件等。但是,由于TCP需要维护连接状态和进行数据确认等操作,因此相对于UDP来说,TCP的开销更大,传输速度也会稍慢一些。
UDP(User Datagram Protocol)是一种无连接的传输协议,它不提供可靠性、流量控制和拥塞控制等服务,但它具有简单、快速、低开销、无状态等特点。UDP将数据分成数据包进行传输,每个数据包都是独立的,它们可以按照任意顺序到达目的地。UDP适用于一些对可靠性要求不高,但要求传输速度快的应用场景,例如视频、音频等实时传输数据。但是,由于UDP不提供可靠性保障,因此在传输过程中可能会出现数据包的丢失或重复等问题。
Http是超文本传输协议,它是应用层的面向对象的协议,它是基于TCP/IP的高级协议,默认端口号是80。它是基于请求响应模型的,即一次请求对应一次响应。它是无状态的,每次请求之间相互独立。HTTP协议请求消息的数据格式为请求行,请求头,请求空行和请求体。请求行中主要包括请求方式,请求url,请求协议和版本等。请求方式在HTTP协议中有7种,最常用的有2种,get和post。如果是get请求,则还会把请求参数拼接到url后;请求头是客户端浏览器想要告诉浏览器的一些信息,如user-Agent(浏览器信息),host(主机地址),reference(请求来源)等。请求空行是用来分割请求头和请求体的;请求体是post请求下封装请求参数的。
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP通道,在HTTP的基础上通过身份认证和传输加密阶段保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入TLS(Transport Layer Security 安全传输层协议)/SSL(Secure Sockets Layer 安全套接层协议),HTTPS 的安全基础是 TLS/SSL,因此加密就需要TLS/ SSL。
SSL的全称为Secure Sockets Layer,安全套接层协议。是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL。
TLS的全称是Transport Layer Security,安全传输层协议。是SSL3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。虽然TLS与SSL3.0在加密算法上不同,但是在我们理解HTTPS的过程中,我们可以把SSL和TLS看做是同一个协议。
在HTTPS数据传输的过程中,需要用TLS/SSL对数据进行加密,然后通过HTTP对加密后的密文进行传输,可以看出HTTPS的通信是由HTTP和TLS/SSL配合完成的。
HTTPS数据加解密过程中数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。HTTPS协议加密的过程可以分为两个阶段,分别是:
扩展:
HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。
在整个HTTPS数据传输的过程中一共会涉及到四个密钥:
一个HTTPS请求可以分为两个阶段,证书认证阶段和数据传送阶段。又可以细分为六个步骤:
HTTP协议的缓存策略有两种,分别是强制缓存和协商缓存,强制缓存的优先级大于协商缓存。强制缓存是服务器告诉浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行协商缓存策略。协商缓存是让客户端与服务器之间能实现缓存文件是否更新的验证、提升缓存的复用率,将缓存信息中的Etag和Last-Modified字段通过请求发送给服务器,由服务器校验。如果文件没有改变,那么直接返回304状态,继续使用浏览器缓存。
HTTP协议的缓存策略是浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存,否则,则向服务器发起请求并携带缓存标识。HTTP协议的缓存策略分两种:强制缓存和协商缓存,而强制缓存优先级大于协商缓存。
通过请求发送给服务器,由服务器校验。如果文件没有改变,那么直接返回304状态,继续使用浏览器缓存。
HTTP缓存都是从第二次请求开始的:
延伸阅读
1.Http是基于TCP协议的,在网络层的传输耗时比较长,https没有解决这个问题;
2.http头是不能压缩的,每次要传递很大的数据包,每个连接也只能支持一个请求。
3.同时https应用了很多加密算法,这些算法的执行也是会影响速度的。
UDP协议是一种无连接的、不可靠的协议,因此它无法保证数据传输的可靠性。但是,可以通过以下方式来增加UDP协议的可靠性:
1. 应用层协议:在应用层实现一些机制,如数据包确认、重传等,来保证数据传输的可靠性。
2. FEC纠错:使用前向纠错(Forward Error Correction,FEC)技术,将冗余数据添加到数据包中,以便在数据包丢失时进行恢复。
3. NACK/ACK反馈:使用NACK/ACK反馈机制,当接收方收到数据包时,发送ACK确认包,如果发送方未收到ACK包,则发送NACK包,以便接收方重传丢失的数据包。
4. 超时重传:当发送方发送数据包后,等待一段时间后如果未收到ACK包,则认为数据包丢失,发送方将重新发送数据包。
5. 流量控制:通过限制发送方的数据传输速率,以避免网络拥塞和丢包。
需要注意的是,这些技术可以提高UDP协议的可靠性,但也会增加网络开销和延迟。在实际应用中,需要根据具体情况选择合适的技术来保证数据传输的可靠性和效率。