http协议的部分知识总结

HTTP是Hyper Text Transfer Protocol(超文本传输协议)

HTTP的发展史

1989年World Wide Web诞生之后,HTTP和HTML迅速成为主导世界的应用层协议。

  • HTTP / 0.9
    1991年发布http的0.9版。端口默认使用:80
    设计的目的 这个协议被设计用于从服务器获取HTML文档
telnet example.com 80
GET /
<html>...
?

整个协议的请求只有一行:'GET’加上文档路径。(GET是HTTP至今都保留的"method"),是HTTP的动词。1991年的http只支持GET这唯一的动词。跟在GET之后的是路径,是文档在服务器的位置(逻辑位置),即实际要获取的内容。

  • HTTP / 1.0
    1996年5月,HTTP/1.0版本发布,内容大大增加。HTTP/1.0是一个更加完整,更加接近我们目前对HTTP认知的版本。
    HTTP响应状态码:在响应的第一行,首先返回状态码和说明文本。相当于在HTTP 0.9基础上增加了返回类型的支持。
    HTTP HEAD:除了首行的动词和路径之外,请求和响应都支持一系列的【头】,这些头以键值对的形式出现,为当时和后来的HTTP的各种周边设置提供了载体。
    HTTP方法:引入了HEAD和POST方法。
请求格式
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

返回格式
HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84

<html>
  <body>Hello World</body>
</html>

Content-Type 字段

出现的Content-type字段具体有以下一些:
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
  • HTTP / 1.1
    1997年,出现了现在最常见的HTTP / 1.1。从那以后,这个协议一直服务至今。在出生之后的一些年,这个协议不断地更新和细化,直到2014年形成6个比较牛逼的RFC。它们分别是:
    • RFC 7230 Message Syntax and Routing 协议框架和链接管理
    • RFC 7231 Senabtics and Content 动词、状态码和头定义
    • RFC 7233 Conditional Requests 条件请求
    • RFC 7234 Range Request 断点续传相关
    • RFC 7234 Caching 缓存相关
    • RFC 7235 Authentication 认证相关
      1.1版本的最大变化是引入持久化连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive
      客户端和服务器发现对对方一段事件没有活动,就可以主动关闭连接。不过,规范的做法是,客户端是最后一个请求是发送Connection: close
  • HTTP / 2
    2015年5月发表以RFC 7540正式发表。多数主流浏览器于2015年底支持了该协议。2019年6月,全球有36.5%的网站支持了HTTP/2。
减少网络延迟,提交浏览器的页面加载速度:
- 对HTTP头字段进行数据压缩(即HPACK算法)
- HTTP/2服务端推送(Server Push)
- 请求管道化
- 修复HTTP/1.0版本以来未修复的对头阻塞问题
- 对数据传输采用多路复用,让多个请求合并在同一TCP连接内
- 等等

TCP/IP协议三次握手

TCP/IP协议三次握手
为了准确无误地将数据送达某处,TCP协议采用了三次握手策略。用TCP协议把数据包发送出去之后
TCP不会对传送后的情况置之不理,
它一定会向对方确认是否成功送达。握手过程中使用了TCP的flag---SYN和ACK。
1、第一步,client会发送一个带SYN标志的数据包给server;
2、第二步,server接收到从client的数据包之后会回传一个带有SYN和ACK的数据包给client;
3、第三步,client再回传一个带ACK标志的数据包给server,代表握手结束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章