HTTP

什么是http协议

http是一个计算机世界里专门在两点之前传输文字、图片、音频、视频等超文本数据的约定和规范。

TCP/IP网络分层

http

application layer(应用层)

TCP

transport layer(传输层)

IP

internet layer(网际层)

MAC

link layer(连接层)

TCP和UDP区别

TCP

UDP

面向连接

无连接

面向字节流

面向数据报

有状态

无状态

保证可靠交付

不保证可靠交付

具备拥塞控制

不具备拥塞控制

点对点传播

广播、多播

有序

无序

TCP的三次握手和四次挥手

三次握手

1.客户端主动发送SYN

Client -> SYN -> Server

2.服务端收到并返回SYN以及ACK客户端的SYN

Server -> SYN/ACK -> Client

3.客户端收到服务端的SYN和ACK后,发送ACK的ACK给服务端,服务端收到后连接建立

Client -> ACK -> Server

四次挥手

1.客户端发送FIN给服务端

Client -> FIN -> Server

2.服务端收到后发送ACK给客户端你

Server -> ACK -> Client

3.服务端发送FIN给客户端

Server -> FIN -> Client

4.客户端收到后,发送ACK的ACK给服务端,服务端关闭,客户端等待2MSL后关闭

Client -> ACK -> Server -> CLOSEDClient -> 2MSL时间 -> CLOSED

HTTP的请求方法

  • GET 获取资源(幂等)
  • POST 新增资源
  • HEAD 获取HEAD元信息(幂等)
  • PUT 更新资源(带条件时幂等)
  • DELETE 删除资源(幂等)
  • CONNECT建立Tunnel隧道
  • OPTIONS 获取服务器支持访问资源的方法 (幂等)
  • TRACE 回显服务器收到的请求,可以定位问题(有安全风险)

HTTPS

HTTPS是在HTTP和TCP协议中间加入了SSL/TLS安全套接层。

结合非对称加密和对称加密的各自优点,配合证书。及保证了安全性,也保证了传输效率。

TLS1.2实现原理如下:

DNS

DNS(Domain Name System)是互联网中的重要基础设施,负责对域名的解析工作,为了保证高可用、高并发和分布式,他设计成了树状的层次结构。

由根DNS服务器、顶级域名DNS服务器、权威域名服务器组成

解析顺序:浏览器缓存、操作系统缓存、本地DNS缓存(/etc/hosts)逐级查找,然后从本地DNS服务器、根DNS、顶级DNS 、权威DNS层层递归查询。

CDN

CDN(Content Delivery Network)内容分发网络

为了突破显示生活中的光速、传输距离等物理限制,CDN投入大量资金,在全球范围内各大枢纽城市建立机房,部署大量高存储搞宽带的节点,构建跨运营商、跨地域的专用高速传输网络。

其中分为中心节点、区域节点、边缘节点等。在用户接入网络后,首先通过全局复杂均衡(Global Server Load Balance)简称GSLB算法负责调度,找到离用户最合适的节点。然后通过HTTP缓存代理技术进行缓存,缓存命中就返回给用户,否则回源站去取。CDN擅长缓存静态资源(图片、音频等),当然也支持动态内容缓存。

WebSocket

WebSocket是一种基于TCP的轻量级网络通信协议。WebSocket针对的是“请求-应答”的通信模式。

“请求-应答”是半双工的通信模式,不具备服务器推送能力,限制了HTTP在实时通信领域的发展。虽然可以用轮询来不停的向服务器发送HTTP请求,但是,反复的无效请求占用了大量的带宽和CPU资源。So,WebSocket应运而生。

WebSocket是一种双全工通信协议,具备服务端主动推动的功能。本质上是TCP做了一层包装,让他可以运行在浏览器环境中。

webpack的热更新就是利用了这个协议。

HTTP缓存策略

强缓存

协商缓存

expires(过期时间)

max-age(缓存时间)

last-modified(上次更改时间)

Etag(标识,需要预先在服务端的响应报文设置)

HTTP状态码

1XX 请求已经接收到,需要进一步处理才能完成,HTTP/1.0不支持

  • 100 Continue :上传文件前使用
  • 101 Switch Protocol :协议升级使用
  • 102 Processing :服务器正在处理,无响应可用

2XX 请求成功

  • 200 OK :成功返回响应
  • 201 Created :有新资源在服务端被成功创建
  • 202 Accepted :服务器接受并开始处理请求,但请求未处理完成
  • 206 Partial Content : 使用range协议时返回部分响应内容时的响应码

3XX 重定向

  • 301: 永久重定向、
  • 302:临时重定向
  • 300:是一个特殊的重定向状态码,会返回一个有多个链接选项的页面,由用户自行选择
  • 选择304:是一个特殊的重定向状态码,服务端验证过期缓存有效后,要求客户端使用该缓存

4XX 客户端发现错误

  • 400 Bad Request
  • 401 Unauthorized
  • 402 Payment Required
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowed

5XX 服务器端出现错误

  • 500 Internal Server Error:服务器内部错误,且不属于以下错误类型
  • 502 Bad Gateway:代理服务器无法获取到合法响应
  • 503 Service Unavailable:服务器资源尚未准备好处理当前请求
  • 505 HTTP Version Not Supported:请求使用的 HTTP 协议版本不支持

参考

https://httpstatuses.com/

https://mp.weixin.qq.com/s/Qhn4qhGYHybfSy22wJZGmQ

本文分享自微信公众号 - 女程序员的日常(gh_df41d619fb70),作者:凛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HTTP 0.9 HTTP 1.0 HTTP 1.1 HTTP 2.0区别

    HTTP协议 :Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文...

    武培轩
  • http| tengine-2.3.0 upstream http check

    https://tengine.taobao.org/document_cn/http_upstream_check_cn.html

    heidsoft
  • 【HTTP】HTTP基本知识

    ​写在前面的话,这篇文章是作者参考网上的帖子的一个整理,参考资料较多,作为Http的入门文章,以供学习使用~

    灰子学技术
  • 【HTTP】HTTP基本知识

    写在前面的话,这篇文章是作者参考网上的帖子的一个整理,参考资料较多,作为Http的入门文章,以供学习使用~

    灰子学技术
  • HTTP

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计...

    刘亦枫
  • HTTP状态码->HTTP Status Code

    https://www.cnblogs.com/DeasonGuan/articles/Hanami.html

    凯哥Java
  • HTTP系列之:HTTP缓存

    为了提高网站的访问速度和效率,我们需要设计各种各样的缓存,通过缓存可以避免不必要的额外数据传输和请求,从而提升网站的请求速度。对于HTTP协议来说,本身就自带有...

    程序那些事
  • HTTP系列之:HTTP缓存

    为了提高网站的访问速度和效率,我们需要设计各种各样的缓存,通过缓存可以避免不必要的额外数据传输和请求,从而提升网站的请求速度。对于HTTP协议来说,本身就自带有...

    程序那些事
  • 网络基础 HTTP协议之HTTP消息(HTTP Message)

    两种类型都包含一起始行(start-line),0或更多个header域, 一暗示header域结束的空行,可能还有一个消息主体

    授客
  • HTTP协议之HTTP的结构

    会使用电脑的人基本上都会使用IE/Firefox/Chrome等网页浏览器的地址栏输入url地址来访问一个网站,那么网站页面是怎么展现到用户面前的呢?当然web...

    哲洛不闹
  • HTTP系列之:HTTP中的cookies

    如果小伙伴最近有访问国外的一些标准网站的话,可能经常会弹出一个对话框,说是本网站为了更好的体验和跟踪,需要访问你的cookies,问你同意不同意,对于这种比较文...

    程序那些事
  • HTTP系列之:HTTP中的cookies

    如果小伙伴最近有访问国外的一些标准网站的话,可能经常会弹出一个对话框,说是本网站为了更好的体验和跟踪,需要访问你的cookies,问你同意不同意,对于这种比较文...

    程序那些事
  • HTTP 报文内的 HTTP信息

    李才哥
  • http digest

    HTTP digest 摘要访问认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法。它在密码发出前,先对其应用哈希函数,这相对于HTTP基本...

    若与
  • angular $http

    j_bleach
  • golang http

    <pre spellcheck="false" class="md-fences mock-cm md-end-block" lang="go" content...

    copy_left
  • HTTP cookies

    HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时...

    用户2202688
  • HTTP headers

    HTTP标头使客户端和服务器可以通过HTTP请求或响应传递其他信息。HTTP标头由不区分大小写的名称,后跟冒号(:)和值组成。 值之前的空格将被忽略。

    用户2202688
  • Android-Http

    HTTP 全称是 HyperText Transfer Protocal 即超文本传输协议。我们知道OSI模型把网络通信的工作分为7层,分别是:是物理层、数据链...

    android_薛之涛

扫码关注云+社区

领取腾讯云代金券