计算机网络
TCP/IP五层结构
应用层:
传输层:四层交换机,四层路由器
网络层:路由器,三层交换机
数据链路层:以太网交换机,网卡
物理层:中继器,集线器,双绞线
链路层差错检测
奇偶校验,检查和,CRC
网络层路由算法,简述RIP,OSPF
全局式路由选择算法:所有路由器掌握完整的网络拓扑和链路费用信息,例如链路状态路由算法(LS算法)
分散式路由选择算法:路由器只掌握物理相连的邻居和链路费用,例如距离向量路由算法(DV算法)
静态路由算法:手工配置,路由更新慢,优先级比较高
动态路由算法:路由更新快,定期更新,及时响应链路费用或者网络拓扑变化
负载敏感算法:链路费用反映出拥塞水平
负载迟钝算法: 如今的路由选择算法都是负载迟钝的,链路费用不能反映当前拥塞水平
RIP算法
对每一个相邻路由器发来的报文,执行如下步骤:
(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:下一跳地址为X,距离字段+1。每个项目三个关键数据:目的网络N,距离d,下一跳X
(2)对修改后的RIP报文中的每一个项目,进行如下步骤:
- 原来的路由表中没有目的网络N,则把项目添加到表中
- 若下一跳地址是X,则把收到的项目替换原来路由表中的项目
- 若收到的项目中距离d<路由表中的距离,则进行更新
(3)如果三分钟还咩有收到相邻路由器的更新路由表,则把相邻路由器标记为不可到达的路由器,即把距离设置为16
OSPF算法
Dijkstra
ARP协议过程,如何通过ip地址获取mac地址
(1)本地主机在局域网中广播ARP请求,请求中包含目的主机IP地址。意思是:“如果你是这个ip地址的拥有者,请回答你的硬件地址”
(2)目的主机解析报文,发送ARP应答包,里面包含IP地址对应的mac地址
(3)本地主机收到ARP应答。之后的数据包就可以传送了。
点对点链路不适用ARP协议
ping命令使用的协议。简述其过程
ICMP出现原因
包被丢弃的时候将必要的信息传递给发送方,为了辅助IP协议,交换各种各样的控制信息而被制造出来的。
ICMP用途
差错通知:传送错误原因
信息查询:目标IP的机器是否存在,调查自己网络的子网掩码,获取对方机器的时间信息等等吧
ICMP实现
(1)MTU探索
(2)改变路由
(3)远点抑制
(4)ping命令
(5) traceroute命令
(6)端口扫描
为什么要四次挥手
HTTP
域名输入浏览器之后的过程
hosts文件
向DNS服务器查询ip地址
dns服务器返回ip地址
浏览器得到ip地址之后,发送http服务请求
服务器接收到http请求,返回网页信息
浏览器将html转化为用户可以查看的网页的形式
根据域名查ip
去ICANN查询
Session和cookie的区别
cookie:存放在客户端,
作用是与服务器进行交互,作为http规范的一部分存在
使用场景:判断用户是否登录过网站,记录购物车或者用户的使用偏好
cookie是网站为了标识用户身份而存储在用户本地终端上面的人数据。cookie始终在同源的http请求中携带
sesssion:存于服务端,
使用场景:登录验证
http状态码
1** :信息,服务器收到请求,需要请求者继续执行操作
2**: 成功,操作被成功接受并被处理
3**:重定向,需要进一步操作以完成请求
4** :client错误,请求包含语法错误或者无法完成请求
5**:服务端错误,服务器在处理请求的时候发生了错误
403 forbidden 服务器理解请求,但是拒绝执行此请求
302 found 临时移动 ,资源临时移动,客户端使用原有的url
500 Internal server error:服务器内部错误,无法完成请求
数据库
四种隔离级别
读未提交:可以读到未提交的内容
读提交:读已提交内容,Oracle和sql server默认的隔离级别
可重复读:事务开始就不允许修改了。避免不了“幻读”,因为幻读是由于插入或者删除操作而产生的
串行化:效率最差
数据结构
红黑树和二叉平衡树区别
AVL树是高度平衡的,频繁插入和删除,导致效率下降
红黑树不是高度平衡的,是一种折中,插入最多两次旋转,删除最多三次旋转。
Java集合类
1. ConcurrentHashMap
是由Segment数组结构和HashEntry数组结构组成。
2. hashmap初始容量为什么是16
length是2的幂,保证了散列均匀
保证了length-1的最后一位为1,在进行与操作之后只有两种结果。保证了hash碰撞的几率比较小,也尽可能保证散列均匀。
syncronize锁类对象和锁方法区别
set和list的区别
List:1.可以允许重复的对象。
2.可以插入多个null元素。
3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。
Set:1.不允许重复对象
2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
3. 只允许一个 null 元素
4.Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器