0. 写在前面
这些问题是我备考计算机网络过程中,详细总结的常见面试问题和答案。逐个搜索并记录下来,花了很大的精力!
1. TCP和UDP的区别
1、udp是无连接的,tcp是面向连接的
2、udp是不可靠传输,tcp是可靠传输
3、udp是面向报文传输,tcp是面向字节流传输
2. OSI七层模型
应用层
各种应用程序和网络之间的接口,例如谷歌,火狐。这些应用不驻留于应用层,但是它们使用应用层的各种网络协议
表示层
表示层从应用层接收数据。这些数据是以字符和数字的形式出现的,表示层将这些数据转换成为机器可以理解的二进制格式,功能有翻译、压缩、加密解密
会话层
向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理
运输层
完成端口到端口之间的通信,传输层涉及到分段、流量控制、差错控制、面向连接和无连接传输(TCP和UDP)
网络层
完成主机到主机之间的通信,分为数据平面和控制平面,完成转发和路由的功能
链路层
完成相邻节点之间的通信,将网络层传来的IP数据报组装成帧,为网络层提供服务
物理层
在媒体上传输比特
3. IPV4和IPV6的区别
IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
IPv6将IPv4的效验和字段彻底删除,以减小每跳的处理时间。
IPv6支持即插即用(即自动配置),不需要DHCP协议。
IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
IPv6取消了总长度字段,改用有效载荷长度字段。
IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
IPv6取消了协议字段,改成下一个首部字段。
4. HTTP get和post的区别
get | post | |
参数放置位置 | url里面 | 请求头里面 |
安全性 | 差 | 好 |
长度限制 | 2048字符 | 无限制 |
被浏览器缓存 | 有缓存 | 无缓冲 |
浏览器访问 | 可以,支持刷新和回退 | 不可以 |
5. HTTP和HTTPS的区别
由来:https解决了http的传输的安全问题,因为http传输的是明文,简单来说https=http+ssl进行加密传输,https是身份认证的网络协议
https两个作用:1.建立信息安全通道 2.网站的真实性
http | https | |
证书 | 不需要 | 需要ca证书,需要费用 |
信息传输方式 | 明文 | 密文 |
连接方式 | 80端口 | 443端口 |
6. 为什么TCP三次握手,不是两次
其实这是由TCP的自身特点可靠传输决定的。客户端和服务端要进行可靠传输,那么就需要确认双方的接收和发送能力,不然容易出现丢包的现象
第一次握手: 可以确认客服端的发送能力
第二次握手: 可以确认服务端的接收能力 和 发送能力
第三次握手: 可以确认客户端的接收能力。
如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,此时客户端忽略服务端发来的确认,也不发送数据,则服务端一致等待客户端发送数据,浪费资源。
7. 为什么TCP四次挥手,不是三次
这个因为第一次挥手表示客户端发送了一个fin的包,表示客户端已发送数据完毕,但是服务端这个时候可能还有数据没有发送完成,先发送给客户端一个ask的包,等待自己的数据发送完成才能向客户端发送一个 fin的包,表示自己的数据也已发送完成。这样中间就必须为两次来发送ask和fin。
8. 距离矢量和链路状态的区别
距离矢量算法就是通过自己到相邻节点之间的信息来计算出自己到目的地址的最佳出境线路是哪一条,进而进行转发的一类算法
距离矢量算法的特点是:
分布的 每个节点接收来自与其直接邻接节点的路由信息,并执行路由计算,将计算结果回传给直接邻接的节点
迭代的 计算过程循环进行,直到相邻节点没有可交换的路由信息为止
异步的 并不要求所有节点相互锁步操作
链路状态算法中,每个节点都有完整地网络拓扑图,也就是完整的链路信息(距离矢量法只知道和相邻路由的),节点向相邻网络广播自己和邻居的信息,每当自己也收到这个信息,就用dijkstra算法来重新计算路由表
扩展:
内部网关协议:
rip是由距离矢量实现,最多15跳。iBGP是增强的距离矢量,OSPF运行在AS内部的各个区域里面是是链路状态算法,IS-IS和OSPF类似,也是链路状态算法,可以运行在网络之间
外部网关协议:
eBGP算法是距离矢量算法
9. 什么时候用到了分组/组装技术?
数据报从一个主机传输到另一个主机,报文字节太长,超过了MTU,就要进行分组,再在目的主机组装