赞
踩
HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
通常应用在B/S架构(浏览器 - 服务器),B--》browser
URL即统一资源定位符,通常由协议、主机和端口(默认80)以及文件名三部分构成:
如:
http://www.baidu.com/news/index.html
http:// -->协议
www.baidu.com/ -->主机和端口,这里用的是域名
news/index.html -->文件名及路径
将网页文件(.html文件、图片、音视频等文件)从服务器(nginx等)里传输到客户机里(浏览器)
假设用户访问的是http://www.baidu.com/index.html
1、分析url
2、解析域名的ip地址
2.1 先看缓存 (浏览器www.baidu.com 112.233.223.223) -- linux的缓存nscd
2.2 再看/etc/hosts 文件里面有没有记录
2.3 再看/etc/resolv.conf里的本地域名服务器有没有解析
本地域名服务器记录的解析如果有就会直接返回,如果没有解析,就向DNS服务器发起请求解析,得到ip
3、浏览器和服务器进行tcp三次握手,建立TCP连接
4、浏览器请求百度页面
5、服务器收到请求,然后返回百度的html页面文档给浏览器
6、浏览器收到页面内容之后,运行展示在窗口上
7、释放tcp连接,看一下是客户端主动断开还是服务器到了时间后主动断开
1、简单快速
2、灵活
3、无状态
1.什么是无状态性:每次请求都是独立的,上一次请求和下一次请求互不相干。
比如,你登录了某个网站,下一次请求理论上来说就不需要再登录了。http是无状态的,它不能知道你上一次请求已经登录过了。所以下一次请求还需要重新登陆。
2.如何解决:
引入了cookie和session
session存储在服务器端的缓存里,每次请求就会产生一个session_id,并将session_id发送给客户,客户端对应有一个cookie,cookie存储在客户端的缓存里,cookie里面存储了一个session_id,所以每次请求的时候会携带者cookie,然后每次请求的时候,服务器端会查看cookie里的session_id,如果在session里面能找到,就不需要重新登陆了
1.非持久性连接:
即浏览器每次请求一个web文档,就创建一个新的连接,当文档传输完毕后,连接即立刻释放。当请求其他文档时,又要重新创建新的连接,效率比较低
2.持久性连接:
即在一个连接中,可以进行多次文档的请求和响应。服务器在发送响应以后,不立即释放连接,浏览器可以使用该连接继续请求其他的文档,效率比较高
1、0.9版本 GET方法
2、1.0 POST HEAD 方法
3、1.1 PUT、OPTIONS、DELETE等方法,引用了持久连接,一个tcp连接里处理多个http请求
4、2.0 效率快,吞吐快 谷歌:基于2015 -- SPDY协议发布的
请求报文里有哪些东西:
1.请求方法
2.host:表示访问的那个网址
3.user-agent:使用的用户代理--》浏览器
4.connection:查看连接是否关闭
5.cookie:保存session_id,下次访问不要登陆验证
1.常见方法
GET 请求获取 浏览器默认参数只能放在url中 /sc?username=root&passwd=123456,不会携带body数据
POST 新增 可以携带body数据
PUT 修改
DELETE 删除
CONNECT 连接
OPTIONS 查看服务器端的参数,比如支持哪些方法
HEAD 请求头
2.get和post的区别
2.1 url形式:
get将数据携带在url里面,post将数据携带在body里面
2.2 传输数据的大小:
因为url的参数是有限的,所以get请求的数据也是有限的,而post请求的数据就可以是很大的
2.3 安全性:
因为get是将数据携带在url中,别人看到到,而post是携带在body里面,所以post相对更安全
响应报文里面有哪些东西:
1.http的版本
2.状态码
3.连接状态
4.日期
5.last-Modified:服务器里的数据是否发生改变
6.server:服务器的版本
常见的状态码 200 请求成功 301 永久重定向 302 临时重定向 304 not modified 浏览器缓存里的内容和nginx服务器里的内容是一样的 400 客户端语法错误 401 用户验证失败 403 用户禁止访问 404 url找不到,not find 405 方法不被允许(方法错误) 499 client has closed connection(客户端关闭连接) 500 服务器内部错误,无法完成请求 501 服务器不支持请求的功能,无法完成请求 502 网关故障--》负载均衡是好的,但是内部的服务器挂了,所以是负载均衡器联系不上后面的real server 503 服务临时不可用,资源限制或者过载导致的;限制了某个时间段只能访问多少次,访问次数,并发数 504 后端服务器响应超时了
(1) 窃听风险:黑客可以获知通信内容。
(2) 篡改风险:黑客可以修改通信内容。
(3) 冒充风险:黑客可以冒充他人身份参与通信。
1.HTTPS 相比 HTTP 多了一层 SSL/TLS
SSL(Secure Socket Layer,安全套接字层):SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
TLS(Transport Layer Security,传输层安全):其前身是 SSL,相当于SSL的升级版
1.对称加密:通信双方使用同一个密钥进行加密
特点:速度快,但是安全性得不到保障
2.非对称加密:通信双方利用不同的密钥进行加密,有公钥和密钥之分,公钥用来加密可以对外公开,密钥用来解密,只能自己知道;
特点:相对安全,但是计算量大
1.客户端向服务器端发起请求
2.服务器端将带有数字证书的公钥发送给客户端,客户端验证证书是否有效,无效则停止请求,有效则生成一个client key(相当于对称加密的密钥),再用服务器发过来带有数字证书的的公钥将这个client key进行一个非对称加密
3.将加密后的client key传输给服务器,因为加密client key的公钥是服务器发过去的,所以服务器可以用自己的私钥进行解密,然后得到客户端随机生成的client key;
4.将客户端请求的数据,用客户端随机生成的client key进行一个对称加密,客户端直接使用client key进行解密,就可以得到这个请求的数据了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。