其他分享
首页 > 其他分享> > 图解HTTP读书笔记

图解HTTP读书笔记

作者:互联网

1.http的几个版本 2.TCP/IP协议族 我们要知道TCP和IP是两个不同的协议 通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集      TCP/IP协议族中的分层有以下四个层,从上到下分别是 应用层 传输层 网络层 数据链路层   应用层:最靠近用户的一层,决定了向用户提供应用服务时通信的活动 TCP/IP协议组内预存了很多应用服务。比如FTP(文件传输协议)和   DNS(域名系统) HTTP协议也属于该层   传输层:提供处于网络连接中的两台计算机之间的数据传输 协议:TCP和UDP TCP(传输控制协议) UDP(用户数据报协议) 这两个协议之间的最大的差别就是有连接和无连接,其中TCP是确保连接才发送数据,UDP是发送数据,不关心是否连接,类似广播   网络层:处理数据包层,规定了通过什么路径到达对方计算机,并把数据包传送给对方   链路层:处理连接网络的硬件部分   3.工作详解     发送端从应用层往下走  接收端从链路层往上走   栗子:
  1. 作为发送端的客户端在应用层(HTTP)发出一个HTTP请求(比如查看页面请求)
  2. 在传输层(TCP)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层
  3. 在网络层(IP) 增加作为通信目的地的MAC地址后转发给链路层
  4. 在链路层将数据发送给通过网络相连的两台计算机
  5. 接收端的计算机(服务器)在链路层接收到数据,按序往上层发送,一直到应用层,完成接受
封装:发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息,在接受端就会不断消去首部信息。   4.与HTTP关系密切的协议:TCP IP DNS    5.IP(Intetnet Protocol)网际协议,位于网络层,作用:把各种数据包传送给对方,而要保证传送成功了,则要满足各类条件,其中最重要的两个条件是IP地址和MAC地址   IP地址:指明了节点被分配到的地址 MAC地址:网卡所属的固定地址 IP地址和MAC地址进行配对,IP地址可变换,但MAC地址基本不会更改   ARP协议(Address Resolution Protocol):IP间的通信依赖MAC地址,在网络上一般通信的双方是不在同一局域网的,通常需要多个路由器的中转,在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时就会采用ARP协议,这是一种解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址   路由选择:在到达通信目标前的中转过程中,那些计算机和路由器只能获悉粗略的传输路线,而不知道具体的细节       TCP协议:确保可靠性,位于传输层,提供可靠的字节流服务,所谓字节流是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。可靠的服务是指,能够把数据准确可靠的传给对方,能够确认最终是否送达到对方。   TCP三次握手和四次挥手   三次握手: 7.DNS服务:和HTTP协议一样位于应用层;它提供域名到IP地址之间的解析服务   计算机既可以被赋予IP地址,也可以被赋予主机名和域名,用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问,因为与IP地址的一组纯数字相比,用字母配合数字的表示形式更符合人类的记忆习惯,但是计算机内部处理肯定是通过IP地址更加方便,于是DNS服务应运而生 DNS协议提供通过域名查找IP地址,或者逆向从IP地址反查域名的服务     8.各种协议与HTTP之间的关系,也就是整个浏览过程的详解
  1. 客户端想浏览某个页面,比如http://hackr.jp/xss/web
  2. 通过DNS协议获取该域名的IP地址
  3. 通过HTTP协议生成针对目标WEB服务器的HTTP请求报文
  4. 通过TCP协议将HTTP请求报文分割成多个报文段
  5. 通过IP协议搜索对方的地址,一边中转一边传送
  6. 找到对方服务器,成功传送后也通过同样的步骤把请求的处理结果进行回传
  9.URI和URL URL:统一资源定位符,也就是网页的地址  比如 http://www.iana.org/ URI:统一资源标识符    比如http://www.iana.org/assignments/uri-schemes   URI用字符串标识某一互联网资源,而URL标识资源的地点(在互联网上所处的位置),可见URL是URI的子集   10.URI格式,表示指定的URI,有绝对URI,绝对URL,相对URL等等 绝对URI的格式     11.RFC:一些用来制定HTTP协议技术标准的文档,被称为RFC(Request for Comments,征求修正意见书) 通常,应用程序会遵照由RFC确定的标准实现,可以说,RFC是互联网的设计文档,如果不按照RFC标准执行,就有可能导致无法通信的状况   12.HTTP请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成   HTTP响应报文:由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成     13.HTTP是一种无状态协议,即不对请求和响应之间的通信状态进行保存,哪怕一个客户端向一个服务端发起了10次请求,这个服务端可会把这十次请求当做从不同客户端发来的请求处理,也就是说在HTTP协议这个级别,协议对于发送过的请求或者相应都不作持久化处理(这也是我们为什么需要WS的原因)、 当然Cookie和Session能够解决这个问题   14.HTTP1.1中可使用的几种方法详解   GET:获取资源,用来请求访问被URI识别的资源,指定的资源经服务器解析后返回相应内容。 POST:传输实体主体,虽然GET方法也可以传输实体主体,但一般用POST PUT:传输文件 HEAD:获得报文首部,与GET一样,但不返回主体信息 DELETE:删除文件,与PUT是相反的方法 OPTIONS:询问支持的方法 TRACE:追踪路径,让WEB服务器端将之前的请求通信环回给客户端,但是容易引发XST攻击 CONNECT:要求使用隧道协议连接代理     15.持久连接:如果每次请求都要建立一次新的TCP连接,那么网页的打开速度会非常慢,比如一个网页里面可能有几张图片,不同的HTML文档等等,如果这些都需要单独的TCP连接之后再进行HTTP连接,可想而知多次通信势必会让网页打开速度变慢 为了解决上述TCP连接的问题,HTTP/1.1版本想出了持久连接的方法(http persistent Connections),持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态   16.管线化:持久连接使得多数请求以管线化方式发送称为可能,即可以同时并行发送多个请求,而不需要一个接一个的等待相应 17.HTTP报文:客户端的HTTP报文叫做请求报文,服务器端的叫做响应报文,HTTP报文本身是由多行数据构成的字符串文本 HTTP报文大致可以分为报文首部和报文主体,并不一定要有报文主体 具体结构如下 一般有四种):通用 请求 响应 和实体首部   18.编码提升传输速率 HTTP在传输数据时可以按照数据原貌直接传输,也可以在传输过程中通过编码提升传输速率,编码需要计算机来完成,因此会消耗更多的cpu资源 报文主体和实体主体   通常,报文主体和实体主体是一样的,只有在传输中进行编码时,实体主体的内容发生变化,才导致它和报文主体产生差异   常用的几种编码如下:   19.分块传输编码:在请求的HTTP编码实体资源尚未完全传输完成之前,浏览器无法显示请求页面,在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面   20.MIME(multipurpose Internet Mail Extensions,多用途因特网邮件扩展) 机制,它允许邮件处理文本 图片 视频等多个不同类型的数据,相应的,HTTP协议中也采用了这种机制,发送的一份报文主题内可含有多类型实体,通常是在图片或者文本文件等上传时使用   在HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type。   21.HTTP状态码:状态码的职责时当客户端向服务器发送请求时,描述返回的请求结果。 类别:   下面介绍具有代表性的14个HTTP状态码     22.虚拟主机与域名 HTTP/1.1规范允许一台HTTP服务器搭建多个WEB站点,这是利用了虚拟主机(虚拟服务器) 若www.tricorder.jp和www.hackr.jp同时部署在同一个服务器上(相同的IP地址),使用DNS服务解析域名后,两者的访问IP地址会相同   在相同的IP地址下,由于虚拟主机可以寄存在多个不同主机名和域名的WEB网站,因此在发送HTTP请求时,必须在Host首部内完整指顶主机名或域名的URI     23.通信数据转发程序:代理、网关、隧道 HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网关和隧道,他们可以配合服务器工作   代理:具有转发功能的应用程序,扮演了位于服务器和客户端“中间人”的角色 网关:转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,就像自己拥有资源的源服务器一样对请求进行处理 隧道:在相隔河源的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序   24.代理:代理有多种使用方法,按两种基准区分:是否使用缓存和是否会修改报文   25.网关: 利用网关可以由HTTP请求转化为其他协议通信  网关的工作机制和代理十分相似,而网关能使通信线路上的服务器提供非HTTP协议服务 利用网关能提高通信的安全性,因为可在客户端与网关之间的通信线路上加密以确保连接的安全。   26.隧道:建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信,隧道的目的时确保客户端能和服务器进行安全的通信   27.HTTP报文首部 HTTP首部字段传递的信息:无论是请求还是响应报文都会使用首部字段,它能提供给浏览器和服务器:报文主体大小、所使用的语言、认证信息等内容 首部字段结构:首部字段名+字段值,中间用冒号分隔 比如: Content-Type:text/html 前者为字段名 后者为字段值 另外,字段名可以有多个值 Keep-Alive:timeout=15,max=100    四种HTTP首部字段类型   28.HTTP和HTTPS HTTP的缺点: 这些问题不仅仅在http上出现,其他未加密的协议中也会有这类问题   HTTPS=HTTP+加密+认证+完整性保护 本质:HTTPS不是一种新型的协议,而是HTTP通信接口部分使用了SSL(Secure Socket Layer)和TLS(Transport Layer Security) 协议进行替代   SSL加密方式:公开密匙加密,近代的加密方法中加密算法是公开的,比如HS256等,而密匙确实保密的,通过这种方式得以保持加密方法的安全性,加密和解密都会使用密匙,没有密匙就无法解密   HTTPS采用的是共享密匙加密和公开密匙加密两者并用的混合加密机制。   要进行HTTPS通信,证书是必不可少的,而使用的证书必须向认证机构(CA)购买。   证书:由客户端和服务器双方都可依赖的第三方机构(数字证书认证机构)发放,认证服务器的公开密匙是真实有效的数字证书认证机构,且服务器的公开密匙是值得信赖的   既然HTTPS非常安全可靠,那么为什么不一致使用HTTPS而是要用HTTP呢     29.认证:判断客户端身份   HTTP使用的认证方式有以下几种   30.WebSocket:WEB浏览器和WEB服务器之间全双工通信标准。是一个建立在HTTP基础之上的协议,因此一旦建立连接,无论是服务器还是客户端都可以直接向对方发送报文。 为了实现WebSocket通信 ,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,达到握手的目的   31.HTTP 2.0 目标:改善用户在使用WEB时的速度体验,基本上都会先通过HTTP/1.1和TCP连接。     32.构建WEB页面          

标签:HTTP,请求,读书笔记,首部,报文,服务器,图解,客户端
来源: https://www.cnblogs.com/bokeofcxs/p/15743451.html