详解HTTP

HTTP

详解HTTP_第1张图片

网络协议分层

  • 经典五层模型


    详解HTTP_第2张图片
  • 物理层主要作用是定义物理设备如何传输数据(硬件设备相关——网卡端口、网线、光缆)

  • 数据链路层在通信的实体间建立数据链路连接(创建链路连接0101)

  • 网络层为数据在节点之间传输创建逻辑链路(寻找服务器网络地址)

  • 传输层向用户提供可靠的端到端(End-to-End)服务,向高层屏蔽了下层数据通信的细节

    • TCP/IP协议
    • UDP协议
  • 应用层为应用软件提供服务,构建于TCP协议之上,屏蔽网络传输相关细节

HTTP发展历史

  • HTTP/0.9
    • 只有一个命令GET
    • 没有header等描述数据的信息
    • 服务器发送完毕,就关闭TCP连接
  • HTTP/1.0
    • 增加了POST等命令
    • 增加status code和header
    • 多字符集支持、多部分发送、权限、缓存等
  • HTTP/1.1
    • 持久连接
    • pipeline
    • 增加host和其他一些命令
  • HTTP2
    • 所有数据以二进制传输
    • 同一个连接里面发送多个请求不再需要按照顺序来
    • 头信息压缩以及推送等提高效率的功能

HTTP三次握手

  • 规避网络延迟导致的数据开销浪费

URI/URL/URN

  • URI(Uniform Resource Identifier)统一资源标志符,用来唯一表示互联网上的信息资源,包括url和urn
  • URL(Uniform Resource Locator)统一资源定位器
    • http://host.com:80/path?query=string#hash
    • http:skema 协议,https/ftp等
    • host.com:定位资源服务器所在位置,可以是ip也可以是域名
    • 80:端口,一个服务器可以起多个web服务,通过端口区分,默认为80
    • path:路由
    • query=string:传参
    • hash:哈希作为锚点
  • URN 永久统一资源定位符,在资源移动之后还能被找到

HTTP报文

  • 请求报文
//起始行
GET /test/hi-there.txt HTTP/1.0
/* 
GET:方法
/test/hi-there.txt:请求资源地址
HTTP/1.0:协议版本
*/
//头部
Accept:text/*
Accept-Language:en,fr

  • 响应报文
//起始行
HTTP/1.0 200 OK
/*
HTTP/1.0:协议版本
200:Status Code
OK:Status Message
*/
// 头部
Content-type:text/plain
Content-length:19

// 主体
Hi!I am a message!

HTTP方法

  • HTTP方法:用来定义对资源的操作
  • 常用有GET/POST等
  • HTTP Code
    • 定义服务器对请求的处理结果
    • 各个区间的CODE有各自的语义

HTTP特性

  • curl -v url

  • 跨域

    • 允许方法:GET/HEAD/POST

    • 允许Conent-Type

      • text/plain
      • multipart/form-data
      • application/x-www-form-urlencoded
    • 其他限制

      • 请求头限制
      • XMLHttpRequstUpload对象均没有注册任何事件监听器
      • 请求中没有使用ReadableStream对象
    • 突破浏览器跨域限制的方法

      • jsonp

你可能感兴趣的:(详解HTTP)