http协议:
超文本传输协议,从万维网服务器传输超文本到本地浏览器的传送协议 在浏览器上输入域名,会发生什么? dns-ip-tcp连接—3次握手—请求—响应—返回数据—四次挥手
DNS:
域名解析器,将域名解析为ip地址,服务器就可以看懂,从而知道用户请求的是哪个网站,近一步返回内容(dns找不到的情况下就从本地host查找)
http协议分为三部分:
1、http状态行 :包括请求url,请求方式(get/post)吗,请求状态码,请求路径,协议版本
2、http请求头:包括请求行 请求首部 请求体 请求行: 请求方式 和版本信息
请求首部:客户端向服务器提供的额外信息 请求体:get类型的请求内容受制于浏览器的长度限制,post无限制 3、http响应 状态行 响应头
响应正文(与请求正文一样,区别是服务器发给客户端)
http是无状态协议:
无状态协议:不保留与客户交易时的任何状态,上次请求对这次没有任何影响,服务端也不会对客户端上次的请求做记录(便于更快处理大量事务) 带来的问题:登录成功后切换其他界面切回,得重新登录
解决方案:
让http记录用户信息,于是有了cookies和session(这里看cookies,session总结) 区别: (1)Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上;
(2)Cookie 不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用 Session ;
(3)Session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
(4)单个Cookie 在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K session机制就是生成的sessionid会发送到客户端,客户端每次会把这个id值放在请求头部发给服务端,这个id值在客户端会保存下来,保存的容器就是cookies,所以禁用cookies,session不可以正常使用
http1.1缺点:
1、 文本协议容易理解,但是计算力不友好,转换效率低 2、 tcp启动和连接都很慢 3、 网页资源多的情况下,浏览器对于资源控制对单个域名会最多发起6-8个连接请求 4、 同意域名下http请求头重复 5、 资源加载不能设置优先级
HTTP2: 针对1.1做了改进
1、 单一连接:只会创建一个tcp或者tls连接,减少连接数,避开资源请求慢 2、 多路复用:一个流上分配多个http响应交换,很大程度流相互独立,因此请求之间不相互影响 3、 请求头优化:对于相同数据,不再每次请求和响应发送 4、 服务端推送:服务端再发送页面html时主动推送其他资源,不用等浏览器解析到响应位置,发起请求再响应 5、 资源传输设置优先级
http状态码
1、200 OK (成功处理) 客户端发来的请求被服务器成功处理 响应报文中,随状态码一起返回的信息因请求方法不同而不同,比如get请求资源的实体会返回,head只返回首部,不返回实体 2、204 No content 请求已经接收到了,无任何返回内容(浏览器显示的页面不刷新) 3、206 Partial Content 客户端进行了范围请求,服务器也执行了 4、301 moved permanently 永久重定向,请求的资源被分配到新的uri 5、302 found 临时重定向 6、303 see other 请求对应的资源存在另一个uri,应该使用get方法定向获取请求的资源(与302不同的是让使用get方法) 7、304 not modified 客户端有附带条件的请求,资源已经找到,未符合条件请求(返回不包含响应主体) 8、307 temporary redirect 临时重定向,与302有相同含义,遵守协议标准,不会从post变成get 9、400 bad request 请求报文存在语法错误 10、401 unauthorized 发送的请求需要有通过http认证 11、403 forbidden 对请求资源的访问被服务器拒绝 12、404 not found 服务器无法找到请求的资源 13、500 internal server error 服务器在执行请求时发生错误 14、503 service unavailable 服务器正忙,处于超载或者停机维护
http报文首部
http请求报文: http由方法,URI, http版本,http首部字段构成 报文首部 —> 请求行 : 方法 URI http版本 http首部字段:请求首部 通用首部 实体首部 其他 空行 报文主题
http响应报文: 响应中,http报文由 http版本,状态码(数字和原因短语),http首部字段3部分 报文首部 —> 状态行: http版本 状态码 http首部字段:请求首部 通用首部 实体首部 其他 空行 报文主题
http:1.1可使用的方法
1、get:请求访问已被URI识别的资源,可以通过URL传参给服务器 2、post:用于传输信息给服务器,数据被包含在请求体中 3、put:传输文件(鉴于HTTP/1.1方法自身不带验证机制,任何人都可以上传文件,因此一般web网站不使用这个方法) 4、head:与get方法一样,不返回报文主体,获得报文首部(用于确认URI的有效性及资源更新的日期) 5、delete:按请求URI删除指定的资源(与put方法一样不带验证机制,一般web网站也不使用,或遵循REST标准时可能开放使用) 6、options:查询针对请求URI指定的资源支持的方法 7、trace: 追踪路径,让web服务器将之前的请求通信环回给客户端(不常用,会造成跨站追踪攻击) 8、connect:要求在与代理服务器通信时建立隧道(实现用隧道协议进行TCP通信,主要使用SSL安全套接层和TLS传输层安全协议把通信内容加密经网络隧道传输)
TCP/IP分层管理
分为四层:应用层 传输层 网络层 数据链路层 应用层: 决定了向用户提供应用服务时通信的活动(ftp dns) 传输层:提供处于网络连接中的两台计算机的数据传输(TCP/UDP) 网络层: 处理在网络上流动的数据包 数据链路层:处理连接网络的硬件部分 利用tcp/ip协议族进行网络通信,发送端从应用层往下走,接收端往应用层上走 (七层协议第一层是物理层)
负责传输的IP协议
ip协议位于网络层,作用是将各种数据包传送给对方,保证确实传送到对方,有两个重要条件是IP地址(节点被分配的地址,可变)和MAC地址(网卡所属的固定地址,基本不可变) ARP:解析地址的新协议,根据通信放的IP反查MAC地址、
DNS:域名解析
位于应用层,提供域名到IP地址之间的解析服务(逆向反查域名也可以,IP是一串数字,为了符合人类记忆,我们给出的可能就是域名,那么这样需要用dns解析)
|