HTTP协议
HTTP协议组成
请求报文包含三部分:
- 请求行:包含请求方法、URI、HTTP版本信息
- 请求首部字段
- 请求内容实体
post和get区别
区别一:
- get重点在从服务器上获取资源。
- post重点在向服务器发送数据。
区别二:
- get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用”?”连接,多个请求数据间用”&”连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的。
- post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的。
区别三:
- Get传输的数据量小,因为受URL长度限制,但效率较高。
- Post可以传输大量数据,所以上传文件时只能用Post方式。
区别四:
- get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等。
- post较get安全性较高。
区别五:
- get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
- post支持标准字符集,可以正确传递中文字符。
为什么说HTTP协议是无状态协议?怎么解决无状态问题
无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
解决办法: 1、Cookie 2、通过Session会话保存。
说一下Http协议中302状态(阿里经常问)
http协议中,返回状态码302表示重定向。
这种情况下,服务器返回的头部信息中会包含一个 Location 字段,内容是重定向到的url。
在浏览器中输入url后的过程
1.DNS解析:会根据URL逐层查询DNS服务器缓存,直到找到目标IP地址
2.三次握手,TCP连接
3.发送HTTP请求报文
4.返回HTTP响应报文页面
5.根据HTTP页面内容请求页面中的js、xss等,进行页面渲染
6.断开TCP连接,四次挥手
SYN攻击:
在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.
Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
Cookie和Seesion
Cookie是服务器发给浏览器的特殊信息,并会以文本形式存在浏览器中,所以我们点击浏览器的清除记录,往往会问我们是否清理Cookie,当清理之后下次再访问网页就会需要我们重新登录。如果浏览器中存在Cookie,那么提交请求就会一起提交过去服务器在接收到后就会解析Cookie生成与客户端相对应的内容,实现自动登录,Cookie带有我们的比较重要信息,所以一般不要给被人获取
Session是在服务器上保存的信息,当服务器需要为客户创建Session的时候,就会解析客户端请求查看请求是否包含session id,如果包含那么就表明此前已经为客户端创建过session,不包含则创建一个对应的session id,而后回发给客户端,使得客户端下次能带有session id。然后按需保存状态
所以最终的区别总结起来就是:Cookie数据存放在客户浏览器上,Session数据存放在服务器上,Session相对应Cookie安全,而使用Cookie会给服务器减负
什么是HTTPS?和HTTP协议相比优势在哪里?
HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
1.通信内容不加密,内容可能被窃听
2.不验证通信对方的方式,可能遭到伪装
3.无法验证报文的完整性,可能被篡改
常见状态码
200 OK 客户端请求成功
400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthonzed 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
404 Not Found 请求的资源不存在,例如,输入了错误的URL。
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常
DNS协议
DNS协议功能:完成域名->IP的映射
端口:53
域名解析顺序
1.浏览器内部缓存
浏览器自身的DNS缓存,缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存
2.Chrome会搜索操作系统自身的DNS缓存
如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束
3.尝试读取host文件
如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件, 看看这里面有没有该域名对应的IP地址,如果有则解析成功。
4.先访问系统配置的首选DNS服务器
浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求
5.如果首DNS服务器不能解析,则由首选DNS服务器代替向各个DNS(迭代式)
(1)首先访问根域名服务器(DNS服务器内一般都会内置13台根域名服务器的地址),查询完整域名的ip地址(www.baidu.com),但是根域名会回答不知道完整域名的地址,但知道顶级域名(.com)的ip地址 (2)再去访问对应顶级域名的ip地址,尝试查询完整域名的ip地址,但是顶级域名服务器告诉运营商的DNS我不知道完整域名(www.baidu.com)这个域名的IP地址,但是我知道baidu.com这个域的DNS地址
(3)这样无限迭代,直到查到完整域名的ip地址
DNS劫持
DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。
解决办法:换用高可信的DNS服务器,比如GoogleDNS 8.8.8.8
DNS污染
DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。
DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。