Web站点搭建前奏

一、Web介绍

1.web通信流程
1.输入www.baidu.com
2.解析成IP地址:192.168.0.1
3.浏览器通过该IP访问web服务器获取web资源
4.再返回给客户端
5.最后呈现在用户面前

二、Http请求类型

1.介绍

HTTP 协议*定义了八种方法或者叫“动作”来表明对 Request-URI 指定的资源的
不同操作方式,以下为常用的6种:
1.OPTIONS:返回服务器所支持的HTTP请求方法。
2.HEAD:与GET请求相一致的响应,但只返回头部信息,响应体将不会被返回。
3.GET:向特定的资源发出请求。
4.POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。
5.PUT:向指定资源位置上传其最新内容。
6.DELETE:请求服务器删除指定资源。
7.TRACE
8.CONNECT

2.GET与POST请求区别

1.url可见性
Get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,get把请求的数据在URL后通过?连接,通过&进行参数分割。
Post传参方式参数URL不可见,post将从参数存放在HTTP的包体内。
2.传输数据大小
Get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。
Post没有长度限制。
3.后退页面
Get后退不会有影响,Post后退会重新进行提交
4.缓存
Get 请求可以被缓存,请求的记录会留在历史记录中。
Post 不可以被缓存,请求不会留在历史记录。
5.编码方式
Get 请求只URL编码。
Post 支持多种编码方式。
6.字符类型
Get 只支持ASCII字符。
Post 没有字符类型限制。

3.Http请求响应过程

1.域名解析
① 浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有该域名对应的条目,而且没有过期,如果有且没有过期则解析到此结束;
② 如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束;
③ 如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功;
④ 如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。如果没有找到对应的条目,则有运营商的DNS代我们的浏览器发起迭代DNS解析请求,它首先是会找根域的DNS的IP地址(这个DNS服务器都内置13台根域的DNS的IP地址),然后进一步请求;
正常情况下通过这四步基本就能解析域名获得IP了。

2、发起TCP3次握手
拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024 < 端口 < 65535)向服务器的WEB程序的80端口发起TCP的连接请求。这个连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后(这中间通过各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程

3.建立TCP连接后发起HTTP请求

4、服务器端响应http请求,浏览器得到html代码

5、浏览器解析html代码,并请求html代码中的资源

6、浏览器对页面进行渲染呈现给用户

4.Http请求/响应正文

1、组成
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。

HTTP请求报文格式如图所示

Web站点搭建前奏

POST请求
Web站点搭建前奏

5.Http状态码

100 Continue 继续。 客户端应继续其请求
200 OK 请求成功。一般用于GET与POST请求
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会 包括新的URI,浏览器会自动定向到新URI。今后任何新的请 求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继 续使用原有URI
400 Bad Request 客户端请求的语法错误,服务器无法理解
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请 求的资源无法找到"的个性页面
500 Internal Server Error 服务器内部错误,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求

DNS(Domain name server)域名服务,域名解析
正向解析:域名=》IP
反向解析:IP=》域名
*.baidu.com 泛域名解析
C:\Windows\System32\drivers\etc\hosts DNS解析文件
ETTERNET -G
nikto
HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开
HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开