面经整理-计算机网络

本文是作者整理的个人笔记,文中可能引用到其他人的成果但是未指明出处,如有不妥,请指正,谢谢!
转载注明:http://blog.csdn.net/u012294820/article/details/78733930

画出来7层网络结构,解释数据链路层主要负责作甚
应用层
HTTP、DNS、FTP、TFTP
文件传输、电子邮件、文件服务
表示层
无协议
数据格式化、数据加密、代码转换
会话层
无协议
建立或解除与别的接点的联系
传输层
TCP、UDP
提供端对端的接口
网络层
IP、ICMP
为数据包选择路由
数据链路层
PPP、ARP、RARP
传输有地址的帧以及错误检测功能
物理层
ISO02110、IEEE802
以二进制数据形式在物理媒介上传输数据
TCP/IP 5层模型:应用、传输、网络、数据链路、物理
TCP/IP 4层模型:应用、传输、网络、网络接口

http报文
  • 请求报文:请求行、首部行、请求实体
  • 响应报文:响应行、首部行、响应实体
  • 请求行:方法、URL、HTTP版本
  • 响应行:HTTP版本、状态码、短语
  • 首部行:多个请求头字段
  • 首部行:多个响应头字段
  • 请求实体:一般不用
  • 响应实体:通常要用
http header
指的就是首部字段
参考一: HTTP请求头部+响应码
  • 请求头:Accept、Accept-Encoding、Accept-Language
  • 响应头:
  • 通用头:Cache-Control、Pragma、Connection、Date、Transfer-Encoding、Update、Via
  • 实体头:Allow、Location、Content-Base、Content-Encoding
  • 扩展头:Cookie、Set-Cookie、Refresh、Content-Disposition
http状态码
  • 200:OK,请求成功
  • 301:Moved Permanently,永久重定向
  • 302:Found,临时重定向
  • 304:Not Modified,未修改
  • 307:Temporary Redirect,临时重定向,与302类似,使用GET请求重定向
  • 401:Unauthorized,请求要求用户的身份认证
  • 403:Forbidden,服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404:Not Found,服务器无法根据客户端的请求找到网页
  • 499:client has closed connection,服务器处理的时间过长,客户端主动关闭连接
  • 500:Internal Server Error,服务器内部错误,无法完成请求
http临时重定向和永久重定向的区别
301永久性重定向和302临时性重定向。实施301后,新网址完全继承旧网址,旧网址的排名等完全清零;实施302后,对旧网址没有影响,但新网址不会有排名。
参考一: 301永久性重定向和302临时性重定向

http请求方法
  • post:更新资源
  • get:获取资源
  • put:
  • delete:
post和get的区别
  1. GET用于信息获取,而且应该是安全的和幂等的。
  2. POST表示可能修改变服务器上的资源的请求
  3. GET请求的数据会附在URL之后
  4. POST的安全性要比GET的安全性高,GET的参数可以被浏览器缓存
http1.0、http1.1、http2.0
http2.0:主要基于SPDY协议(是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)
http1.1与http1.0的区别
  • http1.1多了持续连接(基于TCP长连接),解决每次请求都需要两倍RTT的开销,设置头字段connection:keep-alive和keep-alive=20(秒)
http2.0与http1.1的区别
  • http2.0采用二进制格式替代文本格式
  • http2.0是完全多路复用的,而非有序并阻塞的——只需要一个连接即可实现并行
  • http2.0使用报头压缩,降低了开销
  • http2.0让服务器可以将响应主动推送到客户端缓存中
参考一: HTTP 2.0与HTTP 1.1区别

https为什么是安全的,具体实现
在应用层和传输层之间加上了安全层,通过SSL/TLS协议(握手协议)实现
SSL/TLS协议简目的
  • 所有信息都是加密传播,第三方无法窃听。
  • 具有校验机制,一旦被篡改,通信双方会立刻发现。
  • 配备身份证书,防止身份被冒充。
SSL/TLS协议简要过程
  1. 客户端生成对称密钥;
  2. 服务器生成非对称加密算法的公钥和私钥;
  3. 服务器将公钥交给CA机构,申请数字证书;
  4. 服务器将数字证书发送给客户端,证明公钥不是伪造的;
  5. 客户端和服务器通过对称密钥加解密后续传输的数据。
解决的问题
  • 数字证书验证公钥是否可信,只要证书可信,公钥就可信。
  • 对称加密速度快用于加密数据;公钥加密速度慢,但是安全,用于管理和分配对称密钥。
参考一: HTTPS为什么安全
参考二: SSL/TLS协议运行机制的概述

介绍TCP的三步握手,其中ACK主要是做什么用的。
对请求方请求的确认

TCP长连接和短连接
长连接
  • 连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信); 
短连接
  • 连接数据传输关闭连接;
参考一: TCP长连接和短连接的区别

TCP和UDP的区别
  1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
  4. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等),并且UDP速度更快
  5. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  6. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  7. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

cookie和session
cookie分类
  • 会话cookie。生活周期为浏览器的会话期。
  • 持久cookie。通过设置过期时间就会将cookie保存到硬盘上。
cookie与session的区别
  • cookie数据存放在客户的浏览器上,session数据放在服务器上;
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
  • 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;
浏览器端使用session
  • cookie保存sessionID
  • URL重写
  • 隐藏字段保存sessionID
参考一: Cookie与Session的区别

浏览器关闭之后session是否失效?
浏览器关闭与session失效没有任何关系,浏览器关闭只会导致无法访问旧的session,可以通过建立保存在用户硬盘上的持久cookie替代会话cookie
从打开浏览器访问,到关闭浏览器,最后再次打开浏览器的过程
  1. 第一次打开浏览器访问,服务端新建一个session,并携带sessionID给浏览器返回响应;
  2. 浏览器进程中新建一个会话cookie保存sessionID,以后每次访问都使用该sessionID进行验证;
  3. 关闭浏览器后,用于保存sessionID的会话cookie随之销毁,此时,服务端的session并没有受到任何影响;
  4. 再次打开浏览器访问,服务器会新建一个session,旧的session会等到超过有效时间自动销毁;
使session失效的方法
  1. 超过有效时间。有效时间是指超过该时间长度没有访问服务器。
  2. 调用Session.invalidate()
  3. 服务器关闭
参考一: 浏览器关闭后,Session会话结束了么?
参考二: 关闭浏览器session就被干掉的假象的问题

客户关闭标签页以后,重新访问网站时怎么保证还是登录状态(cookie作用)
将用户sessionID保存到持久cookie中,重新访问时,服务器从cookie中获取sessionID信息。
谈谈网页登录模块里记住我这个功能?
通过cookie保存加密后的用户名和密码。
参考一: COOKIE和SESSION有什么区别?

TCP四次挥手,为什么是四次,一定要是四次吗?后两次可否去掉?
  • 不一定是四次,
  • 如果去掉第2次挥手。试想有一种情况,当Client发送了FIN报文给Server,而Server这时候还想传递一些信息给客户端,如果没有第二次握手,Server这时候直接发送剩下的数据,那客户端怎么知道Server是否收到了自己发送的关闭请求呢?如果Client知道Server接收到了自己发送的关闭报文,那Client可以大胆的接收Server发送的剩余数据,因为它知道Server不会消耗太多的时间在剩余数据上。如果Client不知道Server有没有真正收到的关闭报文,那它自己难免会忐忑,自己在接收Server传递的剩余数据的同时,要不要再次发送新的关闭报文呢?亦或者一直等待Server端的ACK,那万一Server端没有收到FIN,也不会发送ACK,那是强制关闭还是一直等待呢?
四次挥手
  • 第一次挥手。client主动发起关闭连接请求
  • 第二次挥手。server告诉client收到连接关闭请求
  • 第三次挥手。server主动发起关闭连接请求
  • 第四次挥手。client告诉server收到连接关闭请求
第四次挥手,发送ACK包后等待2MSL
  • MSL:报文最大生成时间,超过这个时间任何报文都会丢弃。
  • 等待2MSL时间目的:client发送ACK包,server等待MSL时间,如果没有收到ACK包,那么server重新发送FIN给client;如果client等待2MSL时间都没有收到server的FIN包,说明server已经关闭,那么client也随即关闭。

TCP三次握手,两次握手会怎么样?
  • 第三次握手可以去掉,但是会出现问题
  • “已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。主要目的防止server端一直等待,浪费资源。
参考一: TCP三次握手和四次挥手全过程及为什么要三次握手解答

访问 www.meitu.com 网站,从浏览器发出访问到返回页面的整个过程
  1. 浏览器查找域名对应的IP地址。按序查找DNS缓存,1)浏览器缓存,2)系统缓存,3)路由器缓存,4)DNS服务器缓存,5)根域名服务器递归查询
  2. 与服务器建立TCP连接。
  3. 浏览器给服务器发送一条HTTP请求。
  4. 服务器处理请求。
  5. 服务器返回一个HTML响应。
  6. 浏览器开始渲染HTML

说说ARP协议,NAT协议,DHCP协议,局域网是怎么通信的?
  • ARP:地址解析协议,根据IP获取MAC地址,用于局域网,处于数据链路层。
  • NAT:网络地址转换协议,内网IP映射到外网IP,缓解可用IP地址枯竭的问题。
  • DHCP:动态主机配置协议,给内网自动分配IP地址。

IP地址和MAC地址区别
  1. IP可变,MAC不可变
  2. 长度不同。IP为32位,MAC为48位
  3. 分配依据不同。IP分配基于网络拓扑,MAC分配基于制造商
  4. 寻址协议层不同。IP位于网络层,MAC位于数据链路层

DNS的过程
DNS:域名系统
  • 根域。“.”
  • 一级域(顶级域)。com.,net.等
向www.baidu.com发起DNS
  1. 本机向local dns请求www.baidu.com
  2. local dns向根域请求www.baidu.com,根域返回com.域(一级域)的服务器IP
  3. 向com.域请求www.baidu.com,com.域返回baidu.com域的服务器IP
  4. 向baidu.com请求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服务器IP
  5. 向root域请求www.a.shifen.com
  6. 向com.域请求www.a.shife.com
  7. 向shifen.com请求
  8. 向a.shifen.com域请求
  9. 拿到www.a.shifen.com的IP
  10. local dns返回本机www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP
参考一: DNS解析过程详解

怎么实现,内部机制
针对不同的上网限制手段,使用不同的方法
  • DNS污染和劫持。1)使用其他的DNS服务器,2)修改host文件,直接IP访问。
  • 封锁IP。1)使用国外未被封锁的IP搭建VPS,然后连上该VPS,2)HTTP代理(VPN),客户端请求代理服务器,代理服务器请求目标服务器。3)socks代理(Shadowsocks),socks是会话层协议,通过socks代理服务器访问。
vps:虚拟专用服务器
:虚拟专用网络
ssh:secure shell
ssl:安全套接层
参考一: 上网限制和基本原理

你可能感兴趣的:(面经整理-计算机网络)