一 协议的表达方式
1.什么是协议?
通信双方预先定义好的通信规范或规则
2.协议一般都包括哪些内容?
网络协议是由三个要素组成:
语义:语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
时序:时序是对事件发生顺序的详细说明。(也可称为“同步”)。
3.如何创建一个协议?
二 HTTP协议的作用
1.我们可以利用HTTP协议做什么事情?
超文本传输协议,
HTTP协议允许用户在统一的界面下,采用不同的协议访问不同的服务
三 HTTP协议包括的内容
1.HTTP协议的执行流程是什么?
1.输入域名,回车
2.解析域名,获取IP, 通过DNS
3.建立TCP连接
4.向服务器发送GET请求
5.返回内容
根据conection配置看是否断开连接。
一般是
客户端 —— 代理服务器 —— 应用服务器
2.HTTP协议包括哪些内容?
http协议 包含 http协议的请求和http协议的响应http协议的请求 又包含一下内容1,请求方法-URL-协议/版本2,请求头3,请求体
http响应的请求 又包含一下内容1,状态行2,响应头3,响应体
3.HTTP协议格式是什么样的?
①URL 规范
http://
username:passwd 一般不要
@www.un.org
/subdir/file.html
?var=value&var2=value2
#hash
②请求格式
③响应格式
4.HTTP协议的头域有哪些内容?
分请求头和响应头
5.HTTP协议中的状态码有哪些?
响应状态码:
100-199 :参考信息
200-299:成功 成功获取或成功创建
300-399: 重定向
400-499:客户端错误
500-599:服务器错误
6.HTTP协议请求方法有哪些?
GET URL 规范最长是255个字符,实际支持1024字符
POST 提交大块数据 成功返回200
HEAD 检测服务器
PUT 类似post请求,目的是向服务器发送允许保存的数据 成功返回201 只能通过程序或工具发送
DELETE 删除服务器资源
TRACE 用于诊断网络
OPTIONS 查询指定资源有哪些请求方法可以使用
CONNECT 用于代理服务器和应用服务器之间
用于建立一个仅用于数据传输的隧道
7.HTTP协议中GET和POST有什么不一样?
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息
数据在url或者请求体
get比post更快,请求过程不一样
四 COOKIE和SESSION
1.COOKIE是什么?
cookie使用来跟踪用户会话的技术.cookie本身是一小段文本信息,它存在与http协议header头域里,通过http协议来传递
2.COOKIE是怎么工作的?
http协议是一种无状态协议,客户端和服务端完成一次会话后,服务器端不知道下次连接到服务端的是不是同一个客户端,需要有个标识能告诉服务端,是哪个客户端连接上了服务端.例如登录用户,需要有个东西标识,那就在客户端保存一个cookie,下次访问的时候随http header一起发到服务端,服务端根据cookie的内容知道了这是某个用户的请求,服务端根据cookie取到该用户的信息,返回给客户端
3.COOKIE在两个不同的子域名a.abc.com和b.abc.com中可以相互调用吗?
可以互相调用。
默认情况下的cookie仅对该域名(例如www.example.com)本身有效,出了该域名(例如test.example.com),cookie便会失效,但是可以通过setcookie函数让cookie对整个域名(*.example.com)有效
4.COOKIE的存储是安全的吗?
不安全,可以跨站请求伪造CSRF
5.SESSION是什么?
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。
6.SESSION是怎么工作的?
用户请求login.php填写数据后提交
服务器收到提交的数据取得用户信息,将用户信息存入session,并将session_id通过cookie的形式发给客户端
客户端将session_id存入浏览器cookie文件
用户再次访问其他页面时,将有session_id的cookie通过header头发给服务端
服务端拿到session_id从session中取到用户信息并返回
7.SESSION存储在哪里?存储的格式是怎样的呢?
存储在服务器。
session存储的内容是啥样的
序列化serialize
uid|i:123;abc|O:1:"a":2:{s:1:"s";s:4:"test";s:1:"b";a:2:{i:0;s:2:"12";i:1;s:2:"34";}}
8.SESSION和COOKIE是什么关系?
客户端将session_id存入浏览器cookie文件,一般session以来cookie,但是如果浏览器不支持cookie,session依然能正常使用,将session通过url传递即可。
Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为cookie是不可靠的,session是可靠地,但是目前很多著名的站点也都以来cookie。有时候为了解决禁用cookie后的页面处理,通常采用url重写技术,调用session中大量有用的方法从session中获取数据后置入页面。
9.如何设置SESSION严格的过期时间?
由php.ini中的session配置决定( session.cookie_lifetime = 0 session.gc_maxlifetime = 600 )
10.多服务器之间SESSION如何共享?
nfs, 网络文件系统 将多台服务器所在的session存储目录设置为mount挂载的目录
memcache,session.save_handler = memcache并设置路径session.save_path = "tcp://192.168.1.101:11211"
mysql,ession.save_handler = user,然后建立session表,建立php文件用于对数据库表操作session数据,最后用session的都引入上一步中的php文件
五 HTTP性能优化
1.跟缓存相关的头域有哪些?
Cache-control、 If-Modified-Since、ETag
2.如何在php中设置分块传输?
分块传输
Transfer-Encoding: chunked
3.如何在php中设置只请求实体内容的前512个字符?
Range:bytes=0-512
4.如果用压缩内容,浏览器怎么知道如何解压缩?
响应里指定
Content-Encoding: gzip
六HTTP安全
1.如何避免xss攻击?
对输入(和URL参数)进行过滤,对输出进行编码。
在输出数据之前对潜在的威胁的字符进行编码、转义是防御XSS攻击十分有效的措施。如果使用好的话,理论上是可以防御住所有的XSS攻击的。
2.如何避免csrf攻击?
(1)验证 HTTP Referer 字段
(2)在请求地址中添加 token 并验证
(3)在 HTTP 头中自定义属性并验证
3.如何避免sniffer?
使用相关工具检测:防止 Sniffer的工具 Antisnff
网友评论