学习http第一天
学习http第一天
阅读书籍:《图解http》
参考连接:(4 封私信 / 33 条消息) http - 搜索结果 - 知乎 (zhihu.com)
带着问题学习更快呀
- web是建立在何种技术之上
- http是如何诞生并发展的
使用Http协议访问web
思考:在浏览器的地址栏中输入url时,web页面如何呈现?
在浏览器输入url之后,信息会被送往某处,从某处得到回复之后,内容就显示出来了。
什么是客户端:通过发送请求获取服务器资源的web浏览器。
web使用一种名为HTTP的协议作为规范,完成从客户端到服务器端等一系列运作流程。web是建立在HTTP协议上通信的
Http的诞生
为知识共享而规划web
XX博士提出一种能让远隔两地的研究者们共享知识的设想,
最初的理念是借助多文档之间的相互关联形成的超文本,连成可相互参阅的www(万维)
现在:HTML,页面的文本标记语言,HTTP:文档的传递协议,URL:文档所在的地址
网络基础
通常使用的网络是在tcp/ip协议的族的基础上运作的,而http是属于他内部的一个子集
tcp/Ip协议里重要的一点就是分层。应用层,传输层,网络层,数据链路层。分层之后各层的只需要考虑各层,需要替换的也只是替换各层的,互不影响。
通信传输流
发送端在层与层之间传输时,每经过一层必定会打上一个该层所属得首部信息,反之,接收端在层与层传输数据时,每经过一层时会把对应得首部消去
发送端从应用层往下走,接收端从数据链路层往上走。
与http关系密切的协议 IP,TCP,DNS
-
负责传输的IP协议
按层次分,位于网络层,作用是,把各种数据包传输给对方
-
确保可靠的tcp协议
位于传输层,提供可靠的字节流服务
-
负责域名解析的DNS服务
和http一样位于应用层,提供域名到IP地址之间的解析服务
个人理解:客户端找dns要IP地址,拿到IP地址,http协议生成HTTP请求报文,tcp负责将报文可靠的传输给对方,ip协议负责搜索对方的地址仅从中转和传送 (联想送快递)
URL/URI
简单得HTTP协议
http用于客户端和服务端之间的通信
应用HTTP协议时必定是一端担任客户端角色,另一端担任服务端角色。有时候按照实际情况,两台计算机作为客户端和服务端得角色有可能互换。
通过请求和响应得交互达成通信
请求必定是客户端发出,响应是服务端响应。换句话说,首先是从客户端简历通信,服务器端没有收到请求之前不会发送响应。
HTTP是不保存状态的协议
即无状态协议
使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息,这是为了更快的处理大量事务,确保协议的可伸缩性。但是随着web的不断发展,因无状态导致业务处理变得棘手的情况增多了
为了实现期望保存状态的功能引入了cookie技术,如保存登录的一些信息等。
get,post,put,delete...等就不写了,工作中遇到再说
持久连接
HTTP协议的初始版本中,没进行一次HTTP通信就要断开一次TCP连接,,在现在web的发展看来,每次的请求都会造成无谓的TCP连接建立和断开,增加通信量的开销,为了解决找个问题,HTTP/1.1想出了持久化连接connection:keep-alive。持久化连接特点是只要一端没有明确提出断开连接,则保持TCP来凝结状态。
管线化
除了服务器端,客户端也需要持久化连接
持久化使得多数请求以管线化方式发送成为可能,从前发送请求后需等待并收到响应,才能发送下一个请求,管线化技术出现后,不用等待响应就可之间发送到下一个请求。
这样就能够做到同时并行发送多个请求,而不需要一个接一个的等待响应了。
使用cookie的状态管理
保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入cookie技术。cookie技术通过在请求和响应中写入cookie信息来控制客户端的状态,
cookie会根据服务端发送的的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie,当下次客户端再往该服务器发送请求时,客户端会自动再请求报文中加入cookie值后发送出去。
服务器端发现客户发送过来的cookie后,回去检查究竟时从哪一个客户端发来的来连接请求,然后对比服务器上的记录,最后得到之前的状态信息。