Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注
现在面试门槛越来越高,很多开发者对于网络知识这块了解的不是很多,遇到这些面试题会手足无措。本篇文章知识主要集中在 》与维基百科,若有错误请大家指出。文章会持续更新。
对端传输
发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部
多种协议作用
IP 协议,TCP 协议和 DNS 服务在使用 HTTP 协议过程中发挥的作用
简单的 HTTP 协议请求报文和响应报文
客户端像服务器发起请求时会生成一段请求报文,请求报文是由请求方法,URL,协议版本,可选的请求首部字段和内容实体构成。
请求报文
接收到请求的服务器,会将请求内容的处理结构以响应的形式返回。响应报文基本上由协议版本,状态码,用以解释状态的原因短语,可选的响应首部字段以及实体主体构成。
响应报文
不保存状态,每次打开新网页都必须再次登录。
Cookie 会根据响应报文中的 Set-Cookie 字段来通知客户端自动保存 Cookie。下次请求时会自动发送 Cookie,服务器会比对数据得到状态结果。
Cookie
Post 和 Get 的区别先引入副作用和幂等的概念。
副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
幂等指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致。注册10个和11个帐号是不幂等的,对文章进行更改10次和11次是幂等的。
在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字。Post 多用于副作用,不幂等的场景,例如注册。
在技术上说:
Get 请求能缓存,Post 不能Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的。Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的Post 支持更多的编码类型且不对数据类型限制常见状态码
常见状态码2XX 成功
200 OK,表示从客户端发来的请求在服务器端被正确处理204 No content,表示请求成功,但响应报文不含实体的主体部分206 Partial Content,进行范围请求3XX 重定向
301 moved permanently,永久性重定向,表示资源已被分配了新的 URL302 found,临时性重定向,表示资源临时被分配了新的 URL303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况307 temporary redirect,临时重定向,和302含义相同4XX 客户端错误
400 bad request,请求报文存在语法错误401 unauthorized,表示发送的请求需要有通过 服务器错误
500 internal sever error,表示服务器端在执行请求时发生了错误503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求HTTP 首部通用首部
指请求报文和响应报文都可以使用的字段
Cache-Controlno-cache 指客户端不缓存过期资源no-store 指不进行缓存max-age 指缓存资源的缓存时间比指定的值小,那么客户端就接受缓存资源,且缓存服务器不对资源有效性进行再次确认Connection 指控制不再转发给代理的首部字段(Hop-by-hop),管理持久连接close 指服务器像明确断开连接Keep-Alive 指保存持久连接,状态码请求首部字段
Accept 指用户代理能够处理的媒体类型及媒体类型的相对优先级Accept-Encoding 指用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序Authorization 指用来告知服务器,用户代理的认证信息Host 当一个 IP 下存在多个域名时,帮助服务器知道要请求的具体主机User-Agent 会讲创建请求的浏览器和用户代理名称等信息传达给服务器 安全协议上的。
在 iOS 中,客户端本地会存放着 CA 证书,在 证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息。
SSL/TLS握手阶段分为五步:
第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。
的几次握手和加密解密的运算处理,但是加密解密的运算处理已经可以通过特有的硬件来加速处理。
作者:yck链接: