2018-09-17

http协议

五层模型介绍

2018-09-17_第1张图片
  • 物理层:主要作用是定义物理设备如何传输数据,网线,光纤
  • 数据链路层:在通信实体间建立数据链路链接
  • 网络层:为数据在节点之间传输创建逻辑链路
  • 传输层:主要有两个协议 TCPIP 和 UDP ,它向用户提供了可靠的端到端的服务。
  • 建立起了自己电脑到百度服务器的链接,它们两端如何去传输数据,它的传输数据的方式 ,都是在这层定义,传输层向高层屏蔽了下层数据通信的细节
  • 应用层: 为应用软件提供了服务 http / ftp 是构建于TCP 协议之上,屏蔽了网络传输相关细节

解析:

  • 经典五层模型:
  • 1.物理层:一些硬件之类
  • 2.数据链路层:0101之类的
  • 3.网络层:
  • 4.传输层:为用户提供end-to-end服务,向高层屏蔽了下层数据通信的细节
  • 5.应用层(http):构建于TCP之上

HTTP协议的发展历史

第一个版本 HTTP / 0.9

  • 只有一个命令 GET
  • 没有HEADER 等描述数据的信息
  • 服务器发送完毕就关闭

第二个版本 HTTP / 1.0

  • 增加了很多命令
  • 增加了status code 和 header
  • 多字符集支持、多部分发送、权限、缓存 等等
    • 1,增加命令比如POST、PUT、Header
    • 2,增加status code和header内容,
      • (1)status code用来描述服务端处理某一个请求之后,它的一个状态,
      • (2)header,对应的是,不管是发送还是请求的相关的一些数据,它的描述以及我们对这部分数据如何进行操作的一个方法。

第三个版本 HTTP / 1.1

  • 持久链接
  • pipleine
  • 增加了 host 和其他一些命令 (在同一个物理服务器可以同时跑很多服务)

第四个版本 HTTP / 2.0

  • 所以数据都是以二进制传输
  • 同一个链接里面发送多个请求不在需要按照顺序来
  • 头信息压缩以及推送等提高效率的功能

  • 1,弄清楚一个概念,HTTP请求与TCP请求不是一个概念,在同一个TCP请求可以发送多个HTTP请求,以前的协议版本不能这么做,但是现在HTTP1.1.1里面可以这么做,而且在HTTP2里面是会更大的去优化相关的一些东西,来提高HTTP传输效率以及服务器的性能。
  • 2,这边TCP连接对应多个HTTP请求,而一个HTTP请求肯定在某一个TCP连接里面去定义发送的。

HTTP三次握手

2018-09-17_第2张图片
  • 为了防止服务端开始无用的链接,网络传输是有延时的,传输过程中防止丢包,造成重复创建链接,资源浪费,所以设置三次握手。为了规避网络传输延时。

  • 1.客户端发起一个我要连接的数据包请求给服务器,里面会有一个SYN的标志位,标志这是一个创建请求的数据包

  • 2.服务端接收到数据包后知道有一个客户要和它建立链接了,然后会开启一个TCP socket 端口,开启之后返回数据给客户端,数据包含 SYN标志位,ACK= X+1,Seq=Y

  • 3.客户端拿到数据包后意味着服务器端允许创建TCP连接,然后发送数据包 ACK = Y+1,Seq=Z

  • http只有请求和响应这个概念,没有链接这个概念

  • 在http1.0的时候,在http request的时候,在里面发起三次握手,创建TCP链接,然后再发起请求,请求结束后则关闭TCP链接

  • 在http1.1的时候,可以通过申明这个链接,可以保持在那里,后面就不需要三次握手开销

  • 在http2.0可以请求并发,只需要一个TCP链接

  • 第一次握手,用户向服务端发送请求,SYN=标志位=创建请求的数据包,Seq=X为数字,一般为1。

  • 第二次握手,服务端返回请求

  • 第三次握手,客户端再次传回服务端

URI,URL和URN

  • URI:统一资源标志符,用来标识互联网上的信息资源,包括URL和URN
  • URL:统一资源定位器
  • URN:永久统一资源定位符,在资源移动后还能被找到

urn作用在于搬动了资源后仍然可以直接找到,相当于面向对象命名。
框架一般都会出现这个概念,方便多次调用的东西都可以理解为urn,-。
个人理解

完整的URL地址:http://user:[email protected]:80/path?query=string#hash

  • http:// 协议
  • user:pass@ 代表访问资源的身份使用用户名和密码
  • host.com 用来定位资源的服务器在互联网中的位置(可以是IP 也可以是 域名)
  • :80 端口,每台物理服务器可以跑很多软件的web服务,端口就是监听物理服务器上面某个具体的web服务
  • /path 路由,web 服务器里面的内容可以通过路由进行定位
  • ?query=string 搜索参数
  • hash 查找文档的某个片段

HTTP报文格式

HTTP方法

 用来定义对于资源的操作
 常用有GET、POST
 从定义上讲有各自的语义

HTTP CODE

定义服务器对请求的处理结果
各个区间的CODE有各自的语义 
好的HTTP服务可以通过CODE判断结果

method :

GET:获取数据
POST:创建数据
PUT:更新数据
DELETE : 删除数据
  • http方法:用来定义对于资源的操作
  • http code :定义服务器对请求的处理结果
  • 100-199代表操作要持续进行
  • 200-299代表成功
  • 300-399需要重定向
  • 400-499代表请求有问题
  • 500-599服务器错误

CORS跨域请求的限制和解决

  • jsonp实现的原理:浏览器允许在某些标签里面写路径加载,是允许跨域的。
  • JSONP是服务器与客户端跨源通信的常用方法,它的基本思想是,网页通过添加一个

你可能感兴趣的:(2018-09-17)