1.浏览器键入一个网址都经历了哪些过程?
- 解析URL得到发送给web的信息,并产生HTTP请求信息;
- 查询服务器域名对应的IP地址,这个过程涉及到DNS解析;
- 通过DNS获取到IP后,就可以把HTTP的传输工作交给操作系统中的协议栈;
- 经历TCP三次握手建立连接进行数据传输;
- TCP模块在执行连接、收发、断开等各阶段操作时,都需要委派IP模块将数据封装成网络包发送给通信对象;
- 生成了IP头部后,接下来网络包还需要在IP头部的前面加上MAC头部;
- 后续还会经历网卡、交换机和路由器到对端,然后就是一个反向过程。
追问:DNS解析过程
- 首先会在本地的hosts文件中查找是否有这个网址的映射关系,如果有,则直接调用这个IP的映射进行访问;
- 如果没有则会去本地DNS解析缓存查找是否有这个网址的映射关系,如果有则返回;
- 如果本地DNS解析缓存中没有映射关系,首先找本地的TCP/IP设置的DNS服务器,这里称之为本地DNS服务器,如果所找的网址在本地DNS资源范围内则返回解析给主机,此解析具有权威性;
- 如果不在本地DNS的资源范围内,但该服务器已经存储了网址的映射关系,那么调用这个IP的映射关系,完成地址解析,此解析不具有权威性;
- 上述为递归过程,下面是迭代过程;
- 如果本地服务器的解析失败并且缓存中没有对应的映射关系。那么就有两种情况:
- 本地DNS服务器开启转发模式,则向上一级请求,若上一级也不能解析就找上上一级依次类推,最终把解析返回给本地DNS,本地DNS返回给主机;
- 如果本地DNS未采用转发模式。就会去找13组根DNS,根DNS收到后就会去判断这个域名由谁来管理,并将负责此域名的IP返回给本地DNS,本地DNS再去找负责的根DNS,如果根DNS不能解析就去找下一级的DNS给本地DNS,然后一直重复这个过程直到找到xx的主机。
2.Cookie的作用是什么?和Session有什么区别?
- Session在服务器端,cookie在客户端(浏览器)
- Session默认被储存在服务器的一个文件里(不是内存)
- Session的运行依赖session id,而session_id是存在cookie中的,也就是说,如果浏览器禁用了cookie,同时session也会失效(但是可以通过其他方式实现,比如在url中传递session_id)
- session可以放在文件、数据库或内存中都可以
- 用户验证这种场合一般会用Session.