《图解HTTP》笔记

《图解HTTP》笔记

https://notwiner.top

基本协议框架

TCP/IP协议族的分层:应用层(通信活动)、传输层、网络层(流动数据包)和数据链路层(连接网络的硬件)
HTTP协议():生成针对目标web服务的HTTP请求报文。

IP协议(Internet Protocol):将各种数据传送到对方并且确保传送到,重要条件是IP地址(节点被分配到的地址)与MAC地址(网卡所属的固定地址)MAC不会更改,两者相配对。搜索对方地址,一边中转一边传送。

ARP协议(Address Resolution Protocol):解析地址的协议,通过通信的IP地址可反查对应的MAC地址。

TCP协议(Transmission Control Protocol,传输控制协议):位于传输层,提供可靠的字节流服务。字节流服务(Byte Stream Service)将大块数据分隔成报文段(segment)为单位的数据表管理,简单来说,TCP将大块的数据分隔使之更容易进行传送。采用的三次握手(three-way handshanking),内有其标志有SYN和ACK,

三次握手:发送端发送一个带SYN标志的数据包给对方,接收端收到后回传一个带SYN/ACK标志的数据表确认接收消息,最后发送端再发送一个带ACK标志的数据表,表示“握手”结束。

DNS服务(Domain Name System):应用层,提供域名到IP地址的解析以及相反。

URI(Uniform Resource Identifier,统一资源标识符):字符串标识某一葫芦娃资源、URL(Uniform Resource Locator,统一资源定位符):表示资源的地点。URL实际上是URI的子集。

URL格式,当然由于客户端与服务端不同,有些可能会不一样。

在这里插入图片描述

HTTP基础

报文

请求报文:请求方法(GET、POST、PUT、HEAD、DELETE等)、请求URI、协议版本(HTPP/xx)、可选请求首部字段和内容实体(内容)构成。

响应报文:协议版本、状态码(status code)与原因短语(reason-phrase)、响应首部字段(时间、长度、类型等等)和主体内容

请求行包括请求方法、请求URI和HTTP版本,状态行包括状态码、原因状语和HTTP版本,首部字段一般包括请求和响应的各种条件和属性的各类首部(通用首部、请求首部、响应首部和实体首部)。

报文主体与实体主体:报文为HTTP通信内单位,8位组字节流组成,实体由实体首部和实体主体组成,通常相等,但编码时不同。

HTTP为无状态(stateless)协议,后来cookie的引入管理状态。持久连接(keep-live或connection reuse)减少了TCP连接的重复建立与断开的额外开销,只要未提出断开就一直保存连接,也使管线化(pipelining)变为可能。

Cookie:在请求和响应报文里面的Set-Cookie首部字段写入信息来维持状态。在接受Cookie后会检查客户端且对比记录,如下图。

在这里插入图片描述

编码与传输

内容编码:在实体内容上的编码格式,并保存信息原样的压缩。客户端接受后解码。gzip、compress(unix文件压缩程序compress生产的Lempel-Ziv-Welch算法)、deflate(zlib格式和deflate压缩算法)、identity(不编码或默认编码)。

分块传输编码(CHunked Transfer Coding)将内容实体分成各块,每一块用十六进制标记块大小,最后一块用0(CR+LF)标记。

邮件的MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)机制,使用多部分对象集合(Multipart)方法容纳数据。首部字段一般有Content-type。RFC2046

范围请求(Range Request)可指定下载的实体范围。返回为206 Partial Content的响应报文,多重范围请求则会在首字段Conten-Type标明multipart/byteranges返回报文。

内容协商(Content Negotiation):客户端与服务端就响应内容交涉,然后提供客户端合适的资源。

包括Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。

状态码

  • 1XX(Informational,信息性状态码)接受的请求正在处理。
  • 2XX(Success,成功状态码)请求正常处理完毕。
    • 200 OK,204 No Content浏览器界面不会更新,
    • 206 Partial Content范围请求,服务器成功处理。
  • 3XX(Redirection,重定向状态码)需要进行附加操作以完成请求。
    • 301 Moved Permanently永久性重定向
    • 302 Found临时性重定向
    • 303 See Other资源存在另一个URI,使用GET定向获取请求。
    • 304 Not Modified带有条件的请求未符合条件
  • 4XX(Client Error,客户端错误状态码)服务器无法处理请求。
    • 400 Bad Request 请求报文存在语法错误
    • 401 Unauthorized 请求需要有通过认证的信息,
    • 403 Forbidden 请求资源的访问被拒绝,
    • 404 Not Found 无法找到资源或是服务端拒绝请求且不想说明理由情况下用
  • 5XX(Serve Error,服务器错误状态码)服务器处理请求出错。
    • 500 Internal Server Error服务端执行请求时发生了错误,
    • 503 Service Unavailable服务器在超载负荷或停机维护。

当然,有时候返回的状态码并不正确。

协作的web服务

  • 代理:有Via首部信息
  • 网关:转发其他服务器数据的服务器
  • 隧道:相隔甚远的客户端与服务端进行中转保存通信的应用程序
  • 缓存:代理服务端和客户端本地磁盘保存的资源副本,利用缓存可减少对源服务器的访问,有一定有效期,客户端缓存称为临时网络文件(Temporary Internet File)

HTTPS=HTTP+加密+认证+完整性保护,在HTTP基础上增加SSL协议,会慢上2-100倍

认证机制

  • BASIC认证(基本认证):base编码。。。格式为:用户ID:密码,然后base编码处理
  • DIGEST认证(摘要认证):质询/响应方式(challenge/reponse),发给对方的只有摘要和质询码计算的结果
  • SSL客户端认证:客户端证书,双因素认证(Two-factor authentication)
  • FormBase认证(基于表单认证):账户密码等组成的表单
  • 等等

Ajax(Asynchronous JavaScript and XML)有效利用JavaScript和DOM达到web替换加载的异步通信手段,只需要更新局部页面,但实时获取还是会大量请求产生。

Comet,在服务器内容更新后发给客户端响应,延迟应答,连接时间变长,还是没有解决。。。

SPDY(SPeeDY):在应用层和运输层加入新会话层进行运作。多路复用流、赋予请求优先级、压缩HTTP首部、推送功能、服务器提示功能。但是web本身网站由于编写方式等依旧受限。

WebSocket协议

《图解HTTP》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值