web基础
web基础
1、域名解析的作用
方便记忆,IP地址不容易记忆,但域名更加直观2、dns域名系统
(1)两大特点:分布性、层次性(2)域名空间结构:根域、顶级域、二级域
(3)完整域名结构:FQDN=主机名.dns后缀 eg : www.sohu.com
3、 网页概述
·网页:纯文本格式文件,其编写语言为html ,在用户的浏览器中被翻译成网页形式显示出来·网站:网站时由一个一个网页构成,是多个网页的集合体
·主页:打开网站后出现的第一个网页成为网站主页
·域名:浏览网页时输入的网址
·http(超文本传输协议,属于传输层):用来传输网页的通信协议
·URL(统一资源定位符,用于在网络中传播和访问互联网资源的一个地址,只有通过特定的地址才能够访问指定的资源或者网页,就是所说的网址):一种万维网寻址系统 http://www.baidu.com.:80/jpg/1.jpg
http协议名 https 对协议进行加密 协议 域名 资源名
URI :统一资源标识符(资源地址)
URN:统一资源名称
URL,URN是URI的子集
·html: 用来编写网页的超文本标记语言
·超链接: 将网站中不同网页连接起来的功能
·发布(上线):将制作好的网页上传到服务器供用户使用的过程
4、html(hyper text markup language)(超文本标记语言 )概述
html:网页的源码浏览器:解释和执行html 源码的工具
html文档的结构:头部部分 标题部分 主体部分 网页内容
5、网页的基本标签
头部部分<html></html>
·<title> 标题内容</title>
<head></head>
<body></body>
·<meta></meta> //标签 针对搜索引擎和更新频度的描述和关键词(设置网页的关键词)
eg <meta name="keywords" content="云计算,Linux,网络服务,IT技术"/>
主体部分
·标题标签 <h1></h1> <h2></h2> ...<h6></h6> ,h1字号最大 h6字号最小
·段落标签 <p> </p>
·拆行标签 <br/> 换行标签
·范围标签 <span style="color:red">网页</span>设置样式
·图像标签 <img src="图片路径" />
·超链接标签 <a href ="http://www.sohu.com" target="_self">打开搜狐</a>
target="_blank" //表示打开新的网页 target="_self" //表示打开默认网页
6、web概述
静态网页的访问速度比动态网页的访问速度快web内容储存在web服务器上
·web1.0以编辑为主
·web2.0以与用户交互为主
静态网页:纯粹的html格式,扩展名是html、.html ,可包含文本、图像、声音、flash动画、客户端脚本等
每一个静态网页都有一个固定的URL,且URL以.html、.htm、.shtml等常规格式为后缀
没有后台数据库、不含程序、不可交互、更新麻烦,但相对稳定,打开速度比动态网页快
动态网页:显示的内容会随时间、环境、数据库的改变而改变,扩展名是.aspx .asp .jsp .php .cgi 等
且动态网页中有一个标志性符合-----“?”,?后面是要提交的信息
动态网页是基本的html 与java php 等高级编程语言和数据库编程等多种技术的融合,可以大大降低网站维护的工作量
可以实现更多的内容
7、HTTP协议
版本·HTTP0.9已经过时,只接受get(安全应用的方式,比如输入密码,如果登录不成功,会在网址中显示)一种方法,速度慢,不安全
·HTTP1.0第一个在通讯中指定版本号,至今仍在广泛使用
·HTTP1.1当前版本,持久连续被默认采用,并能很好的配合代理服务器工作
·还支持以管道方式提示发送多个请求,一边降低线路负载,提高传输速度
HTTP1.1与HTTP1.0区别
·缓存处理
·宽带优化及网络连接使用
·错误通知的管理
·消息在网络中的发送
·互联网地址的维护
·安全性及完整性
7、HTTP方法
·GET从服务器向客户端发送命令源·PUT (上传文件)将来自客户端的数据存到以个命名的服务器资源中
·DELETE 从服务器中删除命名资源
·POST将客户端数据发送到一个服务器网关应用程序
·HEAD (请求头部)仅发送命名资源响应中的HTTP首部
8、get和post方法
GET POST从指定的服务器中获取数据,提交数据给指定的服务器处理
GET请求能被缓存 POST请求不能被缓存
GET 请求会保存在浏览器的浏览记录里 POST请求不会被保存在浏览器的浏览记录里
GET请求要有长度限制 POST 请求没有长度限制
主要用于获取数据 查询的字符串不会显示在URL中,比较安全 查询的字符串不会显示在URL中 ,不安全
9、HTTP状态码
通常正常的状态码为:2xx 3xx如果出现异常会返回:4xx 5xx
[1] 1xx消息
这一类型的状态码,代表请求已被接受,需要继续处理
这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx 响应
100 Continue:
客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。
客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应
服务器必须在请求完成后向客户端发送一个最终响应
101 Continue:
服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求
在发送完这个响应最后的空行后,服务器将会切换到Upgrade消息头中定义的那些协议
只有在切换新的协议更有好处的时候才应该采取类似措施
102Continue:
由webDAV(RFC 2518)扩展的状态码,代表处理将被继续执行
[2] 2xx成功
这一类型的状态码,代表请求已成功被服务器接受,理解、并接受。
200
请求已成功,请求所希望的响应头或数据体将随此响应返回。
201
请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其URL已经岁Location头信息返回。
202
服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。
返回202状态码的响应的目的是允许服务器接受其他过程的请求,而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。
[3]3xx
这类状态码代表需要客户端采取进一步的操作才能完成请求,通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明
当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求
客户端用当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗
按照HTTP/1.0版范围的建议,浏览器不应自动访问超过5次的重定向
301永久重定向
被请求的资源已永久移动到新位置,并且将来任何对资源的引用都应该使用本响应返回的若干个URL之一,如果可能,
拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
新的永久性的URL应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URL的超链接及简短说明。
如果这不是一个GET或者是HEAD请求,因此浏览器禁止自动进行重定向。除非得到用户的确认,因为请求的条件可能因此发生变化。
注意:对于某些使用HTTP/1.0协议的浏览器,当他们发送的POST请求得到了一个301响应的话,接下来的重定向请求将会变成GET方式
302临时重定向
请求的资源现在临时从不同的URL响应请求。
[4] 4xx请求错误
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,
以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。
如果错误发生时客户端正在传送数据,那么使用TCP的服务器实现应当仔细确保在关闭客户端与服务器之间的连接之前,客户端已经收到了包含错误信息的数据包。
如果客户端在收到错误信息后继续向服务器发送数据,服务器的TCP栈将向客户端发送一个重置数据包,以清除该客户端所有还未识别的输入缓冲,以免这些数据被服务器
上的应用程序读取并干扰后者。
400 错误请求
1、语义有误,当前请求无法被服务器理解,除非进行修改,否则客户端不应该重复提交这个请求。
2、请求参数有误
401 Unauthorized 验证用户不通过
当前请求需要用户验证
服务器已经理解请求,但是拒绝执行它
403 Forbidden
服务器已经理解请求,但是拒绝执行它
404
请求失败,请求所希望得到的资源未被在服务器上发现
405
请求行中指定的请求方法不能被用于请求相应的资源
鉴于PUT,DELETE方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误
407
与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个ProxyAuthenticate用于进行身份询问。客户端可以返回一个Proxy-Authorization信息头用以验证
408
请求超时。客户端没有在服务器预备等待时间的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改
[5]5xx服务器错误
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态的发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD请求,否则服务器应当包含一个解释当前
错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前的响应中被包含的实体。这个状态码适用于任何响应方法。
500
服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
502
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接受到无效的响应
503
由于临时的服务器维护或者过载,服务器当前无法处理请求,这个状况是临时的,并且将在一段时间以后恢复,如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息
那么客户端应当以处理500相应的方式处理它
注意:503状态码的存在并不意味着服务器过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接
504
作为网关或者作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、 LDAP)或者辅助服务器(例如DNS)收到响应。
注意:某些代理服务器在DNS查询超时时会返回400或者500错误
10、HTTP协议的请求过程
·1 对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址·2 根据这个IP,找到相应的服务器,发起TCP的三次握手
·3 建立TCP连接后发起HTTP请求
·4 服务器响应HTTP请求,浏览器得到html代码
·5 浏览器解析html 代码,并请求html代码中的资源(如js 、css图片等)(先得到html代码,才能去找这些资源)
·6 浏览器对页面进行渲染呈现给用户
11、HTTP报文格式
1) 请求报文GET http://www。baidu。com/ HTTP/1.1
方法 URL 协议版本
Host: www.enjoytoday.cn
请求的主机名
Connection: keep-alive
是否保持连接
Upgrade-Insecure-Requests: 1 //支持升级不安全请求,既是不适用http而是https
User-Agent // 客户端类型: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
Accept :text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.enjoytoday.cn/posts/326
Accept-Encoding: gzip, deflate, sdch //王页支持压缩
压缩格式
Accept-Language: zh-CN,zh;q=0.8 //语言类型
语言
Cookie: bdshare_firstime=1466032270994; UM_distinctid=15c4ef2ac4e2e4-0d13269271
2)响应报文
HTTP/1.1 200 OK
协议版本 状态码
Date: Sat, 01 Jul 2017 14:51:26 GMT
访问时间
Server: Apache/2.4.7 (Ubuntu)
服务器
Set-Cookie: JSESSIONID=84C993F5E433C4DE9BFBA57150FFC065.ajp13_worker;path=/;HttpOnly
Content-Language: zh-CN
Vary: Accept-Encoding
Content-Encoding: gzip //传输压缩
Content-Length: 7333
Keep-Alive: timeout=5, max=100 //长连接时间
Connection: Keep-Alive
长链接
Content-Type: text/html;charset=UTF-8
DNS解析流程
以客户端访问www.baidu.com.为例1、查找本地DNS缓存及hosts文件
2、查找LDNS(local dns)服务器(缓存)
3、查找根域服务器
4、查找.com顶级域服务器
5、LDNS请求.com服务器找到baidu.com服务器
6、LDNS请求baidu.com服务器
7、baidu.com服务器返回www.baidu.com域名的IP解析记录给LDNS
8、LDNS返回给客户机解析记录及缓存到本地