万维网(www)是互联网中使用最广泛的一种应用,是一个超大规模线上信息储藏所,以链接的形式为用户提供信息检索服务。
万维网的核心作用:使得信息在网上自由传输。
万维网提供分布式的信息检索服务:
- 箭头代表以链接的形式跳转到其他页面,这种方式使得一个网站可以和多个网站连接在一起
- www以客户/服务器的方式工作,浏览器就是计算机上的万维网客户程序
- www文档所驻留的计算机的运行服务程序,也称为万维网服务器
- 客户端向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在客户程序主窗口上显示出的万维网文档称为页面。
万维网的核心技术:
通过浏览器我们可以访问到各式各样的页面大致流程如下:
- 浏览器中输入网址
- DNS服务器解析
- 获取内容(传输)
- 显示内容(显示)
- 筛选内容
万维网的4个核心技术:
1.统一资源定位(URL)
URL为互联网上的所有资源提供了一个位置定位和访问资源的方法,URL相当于指向每一个可访问资源的指针,这个指针指向的地址是唯一可区分和定位的。
URL格式如下:
- 端口号一般可以省略。
- 浏览器为了方便用户使用 协议:// 这部分也可以省略 但浏览器会自动补齐
- 一般来说路径也可以省略,一般都不会去记住路径(太麻烦)。
注意:URL中的字符步区分大小写,如果默认不是采用HTTP,则要写清楚协议类型
2.超文本传输协议(HTTP)
HTTP使用的是TCP作为传输协议,保证数据的可靠传输。端口为80端口
HTTP分为两部分:
大致过程为:客户端浏览器发送TCP连接请求,和服务器创建连接,然后客户浏览器发送HTTP请求报文,服务器收到后发送HTTP相应报文,最后释放TCP连接。
请求一个万维网文档的流程为:
HTTP访问万维网页面时所需时间:
TCP的连接需要“3次握手”才能成功连接,可以将HTTP请求作为第3次握手的内容,所以TCP连接需要RTT(万维网客户机和万维网服务器的往返时延),HTTP请求和HTTP相应报文到达客户时,需要RTT,文件传输需要时间T。
提高访问速度:
在DNS中使用到了高速缓存,在这里也可以使用高速缓存,把最近的请求和相应存放到本地磁盘中,当请求于本地磁盘中一致时,直接返回相应,节省了去互联网访问改资源的时间。为保证实时性,也需要及时更新万维网的高速缓存的内容。
HTTP的特点:
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
HTTP是一种面向对象的协议,允许传送任意类型的数据对象。
HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。
HTTP的运行方式:
HTTP是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。
中介有三种 :
HTTP报文格式:
- 请求报文格式:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
- 应答报文格式:状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
方法字段关键词:
- GET:请求获取Request-URI
- POST:在Request-URI所标识的资源后附加新的数据
- HEAD:请求Request-URI所标识的资源响应消息报头,HEAD方法可以在响应时不返回消息体。
- PUT:与GET相反,请求服务器存储一个资源,并用Request-URI做为其标识
- DELETE:请求删除URL指向的资源
- OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项
- TRACE:跟踪请求要经过的防火墙、代理或网关等,主要用于测试或诊断
- CONNECT保留将来使用
请求字段的关键词:
- Connetion 连接管理
- Host 指定请求资源的主机
- Range 请求实体的字节范围
- User-Agent 发送请求的应用程序名称
- Content-Type 表单的数据类型
请求正文:
可选部分,比如GET请求就没有请求正文
HTTP版本区别:
HTTP1.0:使用无连接、无状态,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接,不会记录过去的请求。
HTTP1.1:使用长连接,通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。
- 长连接的优点:没有明确提出断开连接,则保存TCP连接状态。减少连接断开的开销
- 引入了管道机制(pipelining),即在同一个TCP连接中,客户端可以同时发送多个请求
HTTP2.0:
-
二进制传输:头信息和数据体都是二进制,统称为“帧”:头信息帧和数据帧
-
Header压缩:使用了专门为首部压缩而设计的 HPACK 算法
-
多路复用:双工通信,在一个连接里,客户端和浏览器都可以同时发送多个请求和响应,而不用按照顺序一一对应,这样避免了“队头堵塞”
-
服务端推送:新建“流”主动向客户端发送消息,这叫做服务器推送(server push)。
HTTPS:
HTTPS基于安全SSL/TLS(安全套接层Secure Sockets Layer/安全传输层Transport Layer Security)层,HTTPS默认使用443端口。
不使用SSL/TLS的风险:
SSL/TLS的基本思路是公钥加密法:客户端先向服务器索要并验证公钥,然后用公钥加密传输来协商生成“对话秘钥”(非对称加密),双方采用“对话秘钥”进行加密通信(对称加密)。
HTTP的状态码:
- 1xx(切换协议)表示临时响应并需要请求者继续执行操作的状态码
- 2xx(成功)表示成功处理了请求的状态代码。
- 3xx(重定向)表示要完成请求,需要进一步的操作。通常,这些状态码用来重定向
- 4xx(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理。
- 5xx(服务器错误)这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
1xx(切换协议)表示临时响应并需要请求者继续执行操作的状态码
消息 |
描述 |
100 Continue |
服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。 |
101 Switching Protocols |
服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。 |
2xx(成功)表示成功处理了请求的状态代码。
消息 |
描述 |
200 OK |
请求成功(其后是对GET和POST请求的应答文档。) |
201 Created |
请求被创建完成,同时新的资源被创建。 |
202 Accepted |
供处理的请求已被接受,但是处理未完成。 |
203 Non-authoritative Information |
文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。 |
204 No Content |
没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。 |
205 Reset Content |
没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。 |
206 Partial Content |
客户发送了一个带有Range头的GET请求,服务器完成了它。 |
3xx(重定向)表示要完成请求,需要进一步的操作。通常,这些状态码用来重定向
消息 |
描述 |
300 Multiple Choices |
多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。 |
301 Moved Permanently |
所请求的页面已经转移至新的url。 |
302 Found |
所请求的页面已经临时转移至新的url。 |
303 See Other |
所请求的页面可在别的url下被找到。 |
304 Not Modified |
未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。 |
305 Use Proxy |
客户请求的文档应该通过Location头所指明的代理服务器提取。 |
306 Unused |
此代码被用于前一版本。目前已不再使用,但是代码依然被保留。 |
307 Temporary Redirect |
被请求的页面已经临时移至新的url。 |
4xx(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理。
消息 |
描述 |
400 Bad Request |
服务器未能理解请求。 |
401 Unauthorized |
被请求的页面需要用户名和密码。 |
402 Payment Required |
此代码尚无法使用。 |
403 Forbidden |
对被请求页面的访问被禁止。 |
404 Not Found |
服务器无法找到被请求的页面。 |
405 Method Not Allowed |
请求中指定的方法不被允许。 |
406 Not Acceptable |
服务器生成的响应无法被客户端所接受。 |
407 Proxy Authentication Required |
用户必须首先使用代理服务器进行验证,这样请求才会被处理。 |
408 Request Timeout |
请求超出了服务器的等待时间。 |
409 Conflict |
由于冲突,请求无法被完成。 |
410 Gone |
被请求的页面不可用。 |
5xx(服务器错误)这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
消息 |
描述 |
500 Internal Server Error |
请求未完成。服务器遇到不可预知的情况。 |
501 Not Implemented |
请求未完成。服务器不支持所请求的功能。 |
502 Bad Gateway |
请求未完成。服务器从上游服务器收到一个无效的响应。 |
503 Service Unavailable |
请求未完成。服务器临时过载或宕机。 |
504 Gateway Timeout |
网关超时。 |
505 HTTP Version Not Supported |
服务器不支持请求中指明的HTTP版本。 |
HTML(超文本标记语言)
是一种专门制作万维网的一种语言,一般和CSS一起配套使用。CSS(层叠样式表)
搜索引擎:
由于互联网中的内容多,想要找到自己所需的内容时,需要使用搜索引擎
搜索引擎分为:
1.全文搜索引擎:
通过建立一个大的在线数据库供用户查询。刚开始数据库内的网站为空,然后通过搜索软件在互联网上的各网站收集信息,找到的网站把他放到数据库中,并将相关的网站也添加到数据库中,这些在线数据库按照一定的规则建立索引。(Goolge和百度)
2.分类目录搜索引擎:
不采集网站信息,而是利用各网站向搜索引擎提交网站信息时所填写的关键词和网站描述等信息,经过审核后,符合网站登录的条件,则输入到分类目录的数据库中,供用户使用。
(新浪,搜狐,网易等)
这两种引擎的区别:
|
全文搜索引擎 |
分类目录搜索引擎 |
内容 |
所有页面链接 |
所有分类网站的主页 |
是否需要关键词 |
需要 |
不需要 |
搜索的条理 |
较弱 |
较强 |
参考资料:
HTTP_百度百科 (baidu.com)
详解HTTP/1.0、HTTP/1.1、HTTP/2、HTTPS - 腾讯云开发者社区-腾讯云 (tencent.com)