一、web基础
域名和DNS
1、域名的概念
(1)域名空间结构
- 根域
- 顶级域
- 国家/地区域名
- 组织域
- 二级域名
- FQDN=主机名.DNS后缀
2、Host文件
根据系统规定,在进行 DNS请求以前,系统会先检查自己的Hosts 文件中是否有这个网络域名映射关系。如果有则调用这个!P地址映射,如果没有,再向已知的 DNS服务器提出域名解析,即 Hosts 的请求级别比 DNS 高
//Windows 系统中 Hosts 文件存储在目录 c:windowslsystem32\drivers\etc\下面,用笔记本即可修改
//修改Linux Host文件
vim /etc/hosts
127.0.0.1 www.baidu.com
//当访问 www.baidu.com 时,发现本机 hosts 文件中有映射的 IP 地址,则访问这个IP 地址
3、DNS(域名解析系统)
主机名到IP地址的映射有两种:
- 静态映射:每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用
- 动态映射:建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到 IP 地址的映射,网络上需要使用主机名通信的设备,首先需要到 DNS 服务器查询主机所对应的 IP 地址。
网页与HTML
- 网页
- 纯文本格式文件
- 编写语言为HTML
- 在用户的浏览器被“翻译”成网页形式显示出来
- HTML超文本标记语言
- 用来编写网页的超文本标记语言
- Hyper Text Markup Language
- 网页的“源码”
- 浏览器:“解释和执行”HTML源码工具
- 网站
- 由一个一个页面构成的,是多个网页的结合体
- 主页
- 打开网站后出现的第一个网页成网站的主页(首页)
- 域名
- 浏览网页时输入的网址
- HTTP
- 用来传输网页的通信协议
- URL
- 统一资源定位符,是一种万维网寻址系统
- URI(URI=URL+URN)
- 全球资源标志符
- 超链接
- 超链接是将网站中不同网页链接起来
- 发布
- 将制作好的网站上传到服务器供用户访问的过程
1、web1.0和web2.0
(1)web1.0
- Web1.0是指早期互联网模式,以门户网站为主,内容由网站运营商提供,以巨大的点击量和增值服务为主盈利手段
- Web1.0基本采用的是技术创新主导模式,信息技术的变革和使用对于网站的新生与发展起到了关键性的作用
- Web1.0的盈利都基于一个共通点,即巨大的点击流量
(2)web2.0
- 指的是一个利用 Web 的平台,由用户主导而生成的内容互联网产品模式,如博客、社交网站等
- 用户分享。在 Web2.0模式下,可以不受时间和地域的限制分享各种观点
- 以兴趣为聚合点的社群。在 Web2.0模式下,聚集的是对某个或者某些问题感兴趣的群体
- 开放的平台,活跃的用户
静态网页与动态网页
(1)静态网页
- 在网站设计中,纯粹 HTML 格式的网页通常被称为“静态网页”,静态网页是标准的HTML 文件,它的文件扩展名是.htm、.html,。静态网页也可以出现各种动态的效果,如.GIF 格式的动画、FLASH、滚动字幕等
(2)动态网页
- 所谓的动态网页,是指跟静态网页相对的一种网页编程技术,以.aspx、.asp、jsp、.php、.perl、.cgi等形式为后缀,动态网页是基本的 html 语法规范与 Java、PHP、C#等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理
(3)动态网页语言
- PHP:Hypertext Preprocessor(超文本预处理器)
- JSP:Java Server Pages(Java 服务器页面)
- Python:面向对象、跨平台的动态类计算机程序设计语言
- Rudy:一种简单快捷的面向对象(面向对象程序设计)脚本语言
二、HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议。所有的网页文件都必须遵守这个标准
- HTTP版本
- HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度
- HTTP/1.0 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中
- HTTP10.9 已过时,只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头,由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息
1.HTTP方法
- HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method),每条 HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等
HTTP方法 | 描述 |
GET | 请求获取 Request-URl所标识的资源 |
PUT | 请求服务器存储一个资源,并用 Request-URI作为其标识 |
DELETE | 请求服务器删除 Request-URl所标识的资源 |
POST | 在 Request-URl所标识的资源后附加新的数据 |
HEAD | 请求获取由 Request-URl所标识的资源的响应消息报头 |
- GET方法采用的是 URL 后缀的形式,比如 http://www.test.com/a.php?ld=123 就是一个 GET 请求,服务器接收后可以解析出 |d=123
- POST 方法不需要在 URL 中显示”?Id=123”,参数作为内容进行了隐藏的提交
- GET 方法在 URL 上显示参数,而 URL 是有长度限制,故不适合提交过大的数据。GET方法可以被浏览器缓存,当请求已经被请求过一次的 URL时,浏览器不需要向服务器再次发出请求,直接在本地缓存中获得页面
GET方法 | POST方法 | |
对数据长度的限制 | URL 的长度是受限制的(URL 的最大长度是 2048 个字符) | 无限制 |
缓存 | 能被缓存 | 不能缓存 |
安全性 | 与POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用GET | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 Web 服务器日志中 |
历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中 |
后退按钮/刷新 | 无害 | 数据会被重新提交,浏览器应该告知用户数据会被重新提交 |
书签 | 可收藏为书签 | 不可收藏为书签 |
2.HTTP状态码
HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态HTTP 状态码可以分为五大类
状态码首位 | 已定义范围 | 分类 |
1xx | 100-101 | 信息提示 |
2xx | 200-206 | 成功 |
3xx | 300-305 | 重定向 |
4xx | 400-415 | 客户端错误 |
5xx | 500-505 | 服务器错误 |
生产环境常见的HTTP状态码
消息 | 描述 |
200 OK | 请求成功(其后是对 GET和 POST请求的应答文档) |
301 Moved Permanently | 请求的永久页面跳转 |
403 Forbidden | 禁止访问该页面 |
404 Not Found | 服务器无法找到被请求的页面 |
500 Internal Server Error | 内部服务器错误 |
502 Bad Gateway | 无效网关 |
503 Service Unavailable | 当前服务不可用 |
504 Gateway Timeout | 网关请求超时 |
3.HTTP请求流程分析
用户在浏览器输入 URL 访问时,发起 HTTP 请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体
(1)请求报文
- 请求行:请求行由请求方法、URL以及协议版本三部分组成
- 请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔
请求头 | 描述 |
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
User-Agent | 发送请求的应用程序名称 |
Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
- 空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这行非常重要,必不可少
- 请求体:请求体是请求提交的参数,GET方法已经在 URL中指明了参数,所以提交时没有数据。POST方法提交的参数在请求体中
(2)响应报文
- 状态行:状态行由协议版本,状态码,状态码描述三部分组成
- 响应头:响应头与请求头部类似,为响应报文添加了一些附加信息
响应头 | 描述 |
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |
- 空行:响应头部的最后会有一个空行,表示响应头部结束
- 响应体:服务器返回的相应 HTML数据,浏览器对其解析后显示页面