Web服务基础
用户访问网站的基本流程
咱们天天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等。 当咱们输入www.oldboyedu.com/时候,很快就能看到老男孩教育的官网了,这一切看起来很平淡无奇,背后又是什么道理呢?
普通人能够不知道,可是我们做为it开发人员,必须得掌握清楚背后的技术。
下面超哥为你揭晓用户访问网站的基本流程php
- 老男孩教育某python总监,讲了一天课感受很累,下了班躺床上打开他的macbook pro,双击浏览器,输入www.pornhub.com网址后,系统首先会查找本地的DNS缓存以及hosts文件信息,肯定是否存在www.pornhub.com域名对应的ip解析记录,若是有就直接获取ip进行访问服务器,第一次请求时,dns缓存是没有解析记录的,hosts文件多数是开发临时测试用
- 若是本地dns缓存和hosts文件都没有域名解析记录,系统就会把某python总监访问的网址解析请求发送给客户端设置的DNS服务器去解析,也叫作Local DNS,若是LDNS服务器的本地缓存有对应的解析记录就会直接返回给客户端IP地址,若是没有LDNS就会继续请求其余的DNS服务器
- LDNS继续从DNS系统的"."(根)开始请求www.pornhub.com域名的解析,而且根据每一个层级的DNS服务器系统进行系列的查找,最终在DNS网络上找到www.pornhub.com域名对应的受权DNS服务器。这个受权DNS服务器就是企业(我的)购买域名时用于管理域名解析的服务器,服务器上有对应的域名(IP)解析。
- 此时受权的DNS服务器就会把www.pornhub.com对应的IP解析记录,例如(1.1.1.1)发送给LDNS
- 此时LDNS会把解析记录发给浏览器,而且缓存域名和IP的解析记录,便于下一次更快的返回请求
- 浏览器得到ip,请求对应的服务器,网站服务器接收到客户端的请求开始响应处理,将内容返回给浏览器,而后某python总监拿出了一盒清风牌抽纸。。。。
图解dns解析
HTTP协议
Http协议,全称是HyperText Tansfer Protocol,中文叫超文本传输协议,是互联网最多见的协议。Http最重要的是www(World Wide Web)服务,也叫web服务器,中文叫“万维网”。 web服务端口默认是80,另一个加密的www服务应用https默认端口是443,主要用于支付,网银相关业务
版本css
http协议诞生以来有若干个版本,主要是http/1.0 http/1.1 http/1.0规定浏览器和服务器只能保持短暂的链接,浏览器的每次请求都须要和服务器创建一个TCP链接,服务器完成请求后即断开TCP链接,服务器不跟踪每一个连接,也不记录请求 http/1.1是对HTTP的缺陷进行重点修复,从可扩展性,缓存,带宽优化,持久链接,host头,错误通知等访问改进。 http/1.1支持长链接,增长了更多的请求头和响应头信息,例如配置请求头的Connection的值为keep-alive,表示请求结果返回后保持链接
Http请求方法html
在HTTP通讯中,每一个请求报文都包含一个方法,以告诉web服务器端须要执行哪些操做,这些动做被称为HTTP的请求方法
1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 相似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会致使新的资源的创建和/或已有资源的修改。 4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 5 DELETE 请求服务器删除指定的页面。 6 CONNECT HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器。 7 OPTIONS 容许客户端查看服务器的性能。 8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
HTTP状态码java
HTTp状态码表示web服务器响应http请求状态的数字代码 常见状态码以及做用是 1** 信息,服务器收到请求,须要请求者继续执行操做 2** 成功,操做被成功接收并处理 3** 重定向,须要进一步的操做以完成请求 4** 客户端错误,请求包含语法错误或没法完成请求 5** 服务器错误,服务器在处理请求的过程当中发生了错误
HTTP状态码的命令查看python
curl -I www.oldboyedu.com
Server: OES Date: Sun, 12 Aug 2018 04:18:24 GMT Content-Type: text/html Content-Length: 152 Connection: keep-alive Location: https://www.oldboyedu.com/
Http报文
什么是HTTP请求报文
HTTP请求由请求行,请求头部,空行,请求报文主体几个部分组成
HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。nginx
请求报文的格式: 起始行: <method> <request-URL> <version> 头部: <headers> 主体: <entity-body>