1. 浏览器输入一个URL中间经历了哪些过程?
① 查询DNS服务器,获取IP
② 与web服务器建立TCP连接(3次握手)
③ 发起HTTP请求(应用层)
④ 服务器响应请求,向浏览器返回响应内容
⑤ 浏览器解析并渲染响应内容
2. URL协议
http://www.xample.com:80/path/to/myfile.html?key1=V1&key2=V2
协议 + 域名 + 端口 + 路径 + 参数
常用的协议有:http 、https、file、ftp
3. 七层网络模型
应用层:http、ftp、pop3(邮箱)、dns
表示层 (不常用 )
会话层(不常用)
传输层:tcp 、 udp
网络层:icmp、ip、igmp
数据链路层:arp、rarp
物理层:物理传输介质(光缆)
当客户端发起请求时数据流动过程:
应用层(应用程序)→ 传输层 → 网络层 (路由器) → 数据链路层(交换机)→ 物理层(双绞线/集线器)
4. TCP与UDP协议的区别?
TCP:提供了一种可靠、面向来连接、字节流、传输层服务,次啊用三次握手建立一个连接,采用4次挥手关闭一个连接(面向连接、可靠、基于字节流(数据分段发送))
UDP:无连接、不可靠、面向报文
两者使用场景:
TCP:数据船速不允许数据丢失的场景,如:文件传输(FTP)、万维网(HTTP)、电子邮件(SMTP)等
UDP:能接受一些数据丢失或当包量比较少的时候使用UDP比较合适,广播通信、音视频通话等
5. HTTP协议
HTTP是超文本传输协议的缩写,是应用层协议。HTTP协议永远都是客户端发起请求,服务端回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候服务端将消息推送给客户端(HTTP协议是单向的)。HTTP协议是一种无状态的协议,同一个客户端的这次请求和上次请求没有对应关系。
特点:
① 简单快捷:只需要传递请求方法和路径
② 灵活:http可以传递任意类型的数据对象,通过content-type 指定
③ 无连接:无连接意味着每次连接处理一个请求,服务器返回之后断开连接,节省传输时间和服务器压力
④无状态:指协议对于事务处理没有记忆能力,需要通过cookie和session来加以区别
6. HTTP 与 HTTPS 区别:
1. HTTP明文传输数据,都是未加密的,安全性差。HTTPS(SSL + HTTP)数据传输过程是加密的,安全性较好。
2. HTTP页面响应速度比HTTPS快,主要是因为HTTP使用三次握手建立连接,客户端与服务端交换3个包,而HTTPS还要再加上SSL握手需要的9个包,共12个包
3. HTTP和HTTPS使用完全不同的连接方式,端口也不一样,前者80,后者是443
4. HTTPS其实是构建SSL/TSL之上的HTTP协议,所以比HTTP更耗费服务器资源
5. HTTPS协议需要到CA申请证书,一般免费的较少,因而需要一定的费用
7. HTTP常用的方法都有哪些?
GET:用于请求访问已经被URI识别的资源,可以通过URL传参给服务器。
POST:用于传输信息给服务器,主要功能与GET方法类似
PUT:传输文件,报文主题中包含文件内容,保存到对应URI
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效
DELETE:删除文件,与PUT方法相反
OPTIONS:查询相应的URI支持的HTTP方法
8.POST与GET的区别:
1. GEPOST会再T在浏览器回退时是无害的,而次提交请求
2. GET请求只能进行URL编码,而POST请求支持多种编码格式
3. GET请求在URL中传送参数长度是有限制的,而POST没有
4. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用于传递敏感信息
5. GET是幂等的,POST是非幂等的
9.cookie 和 seeion
1. 存储位置不同
通常情况,cookie数据放在客户端浏览器上,session的数据辛纳希放在服务器上
2. 存储容量不同
单个cookie保存数据 ≤ 4 k,一个站点最多保存20个cookie,对于session并没有上限,但出于对服务器性能的考虑,session内不需要存放过多的东西,并设置session删除机制
3.存储方式不同
cookie中只能保管关ASCII字符串,需要通过编码方式存取unicode字符或二进制数据,运用cookie难以实现存储略微复杂的信息
4.隐私策略不同
cookie对客户端是可见的,他人可以分析放在本地的cookie并进行cookie欺骗,所以它不安全
5.对服务器压力不同
session保存在服务端,每个用户都会产生一个session,加入并发访问用户很多,会产生很多的session,耗费大量的内存。cookie存放在客户端,不占用服务器资源