1. 对称加密和非对称加密
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;常见的对称加密算法:DES,AES等。
而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
对称加密优缺点:对称加密相比非对称加密算法来说,加解密的效率要高得多、加密速度快。但是缺陷在于对于密钥的管理和分发上比较困难,不是非常安全,密钥管理负担很重。
非对称加密优缺点:安全性更高,公钥是公开的,密钥是自己保存的,不需要将私钥给别人。缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
总结一下吧:
安全肯定是非对称加密安全,但是效率比较慢,对称加密效率高,但是不安全。严谨一点的做法是混合起来使用,将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
2. TCP协议如何来保证传输的可靠性
TCP提供一种面向连接的、可靠的字节流服务。其中,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过TCP链接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。
对于可靠性,TCP通过以下方式进行保证:
数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
丢弃重复数据:对于重复数据,能够丢弃重复数据;
应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。
3. 在浏览器输入一个URL按下回车后,其流程是?
-
进行寻址:若浏览器缓存中有URL对应的IP,则直接查询IP;否则访问DNS进行寻址
-
DNS或者URL Cache返回网页服务器的IP地址
-
浏览器与网页服务器进行三次握手建立TCP连接
-
浏览器与服务器建立HTTP会话,接收来自服务器的HTTP数据。
-
浏览器解析HTTP数据,在本地窗口渲染并显示网页。
-
当浏览器页面被关闭时,终止HTTP会话并关闭连接。
4. HTTP协议之请求
http请求由三部分组成,分别是:请求行、消息报头、请求正文
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。格式为:Method Request-URI HTTP-Version CRLF, 其中Method表示请求方法;Request-URI是一个统一资源定位符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行。
请求方法:
GET 请求获取Request_URI所标识的资源
POST 在Resuest_URI所标识的资源中附加新的数据
HEAD 请求获取由Request_URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request_URI作为其标识
DELETE 请求服务器删除Request_URI所标识的资源
TRACE 请求服务器回送到的请求消息,用于测试和诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能, 或者查询与资源相关的选项和需求
5. HTTP协议之响应
1XX : 指示信息-表示请求已接收,继续处理
2XX : 表示请求已被成功接收、理解和接收
3XX : 重定向–要完成请求必须进行更进一步的操作。
4XX : 客户端错误–请求有语法错误或请求无法实现
5XX : 服务端错误–服务端未能实现合法的请求。
常见的状态码、状态描述、说明:
- 200(OK/正常):返回正常
- 201(Created/已创建):表示服务器在请求过程中已经建立了新文档,应在头信息中给出他的URL
- 202(Accepted/接受):告诉客户端,请求还在执行,没有处理完
- 203 (Non-Authoritative Information/非官方信息):状态码203 (SC_NON_AUTHORITATIVE_INFORMATION)是表示文- 档被正常的返回,但是由于正在使用的是文档副本所以某些响应头信息可能不正确。这是 HTTP 1.1中新加入的。
- 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
- 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
- 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
- 400 (错误请求) 服务器不理解请求的语法。
- 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
- 403 (禁止) 服务器拒绝请求。
- 404 (未找到) 服务器找不到请求的网页。
- 405 (方法禁用) 禁用请求中指定的方法。
- 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
- 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
- 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
- 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
- 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
- 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
6.http请求头
-
Accept: text/html,image/* – 浏览器接受的数据类型
-
Accept-Charset: ISO-8859-1 – 浏览器接受的编码格式
-
Accept-Encoding: gzip,compress --浏览器接受的数据压缩格式
-
Accept-Language: en-us,zh- --浏览器接受的语言
-
Host: www.it315.org:80 --(必须的)当前请求访问的目标地址(主机:端口)
-
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器最后的缓存时间
-
Referer: http://www.it315.org/index.jsp – 当前请求来自于哪里
-
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器类型
-
Cookie:name=eric – 浏览器保存的cookie信息
-
Connection: close/Keep-Alive – 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接。
-
Date: Tue, 11 Jul 2000 18:23:51 GMT – 请求发出的时间