TCP协议和UDP协议的差别:
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢、建立连接需要开销较多(时间,系统资源)
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快、开销小
|
TCP |
UDP |
是否连接 |
面向连接 |
面向非连接 |
传输可靠性 |
可靠 |
不可靠 |
应用场合 |
传输大量数据 |
少量数据 |
速度 |
慢 |
快 |
网络开销 |
昂贵 |
开销小 |
一个TCP连接必须要经过三次对话才能建立起来,是基于连接的协议,就是在正式收发数据前,必须和对方建立可靠的连接,三次对话的简单过程
第一次对话:主机A向主机B发出连接请求数据包:"我想给你发数据,可以吗?"
第二次对话:主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:"可以,你什么时候发?"
第三次对话:主机A再发出一个数据包确认主机B的要求同步:"我现在就发,你接着吧!"
三次对话的目的是使数据包的发送和接收同步,经过三次对话之后,主机A才向主机B正式发送数据
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议,它是面向非连接的协议,它不与对方建立连接,直接把数据包发送过去,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境,ping命令没有建立连接,QQ就使用UDP发消息
全双工(Full Duplex)是通讯传输的一个术语,通讯允许数据在两个方向上同时传输(A->B的同时B->A,是瞬间同步的)
半双工(Half Duplex)只允许甲方向乙方传送信息,乙方不能向甲方传送,半双工已经退出历史舞台了
TCP/IP是一个协议组,分为网络层、传输层、应用层
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层有TCP协议和UDP协议
在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议
HTTP与HTTPS的区别:
1、https协议需要申请证书,一般免费证书较少,因而需要一定费用
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
mongodb主要解决的是海量数据的访问效率,当数据量达到50GB以上的时候,mongodb的数据库访问效率是mysql的10倍以上,默认端口是27017
redis是一个key-value存储系统,和memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(列表)、set(集合)和zset(有序集合),与memcached一样,为了保证效率,数据都是缓存在内存中,区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步
子网的计算
首先,我们看一个CCNA考试中常见的题型:一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址:
常规办法是把这个主机地址和子网掩码都换算成二进制数,两者进行逻辑与运算后即可得到网络地址。其实大家只要仔细想想,可以得到另一个方法:255.255.255.224的掩码所容纳的IP地址有256-224=32个(包括网络地址和广播地址),那么具有这种掩码的网络地址一定是32的倍数。而网络地址是子网IP地址的开始,广播地址是结束,可使用的主机地址在这个范围内,因此略小于137而又是32的倍数的只有128,所以得出网络地址是202.112.14.128。而广播地址就是下一个网络的网络地址减1,而下一个32的倍数是160,因此可以得到广播地址为202.112.14.159
还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码,这也可按上述原则进行计算
比如一个子网有10台主机,那么对于这个子网就需要10+1+1+1=13个IP地址,(注意加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址)13小于16(16等于2的4次方),所以主机位为4位,而256-16=240,所以该子网掩码为255.255.255.240
如果一个子网有14台主机,不少同学常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址,这样就错误了,因为14+1+1+1=17 ,大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网,这时子网掩码为:255.255.255.224
子网掩码是一个32位地址,是与IP地址结合使用的一种技术,它的主要作用有两个:
一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上
二是用于将一个大的IP网络划分为若干小的子网络
tracert后面加IP地址,可以查所有经过的路由
目前关于网站架构流行的架构方案:Web前端采用Nginx/HAProxy + keepalived做负载均衡器,后端采用MySQL数据库一主多从和读写分离
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障,LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,一个LVS服务会有两台服务器进行keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,不管谁是MASTER,对外都是相同的MAC和IP
Node.js是一个基于chrome V8引擎的JavaScript运行环境,PM2是一个带有负载均衡功能的应用进程管理器,安装PM2命令是npm install -g pm2,主备节点存储数据,仲裁节点不存储数据,客户端同时连接主节点与备节点,不连接仲裁节点
沙箱又叫沙盘,是一个虚拟系统程序、网络编程虚拟执行环境
Docker是一个开源的应用容器引擎,让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),几乎没有性能开销,可以很容易地在机器和数据中心运行。最重要的是他们不依赖于任何语言、框架包括系统
并发收集:垃圾回收线程(回收内存)和程序运行线程(分配内存)同时运行,这种方式下解决了暂停的问题,但是因为需要在新生成对象的同时又要回收对象,算法复杂性会大大增加,系统处理能力也会相应降低
VPN(Virtual Private Network),虚拟专用网络,功能是在公用网络上建立专用网络,进行加密通讯。VPN属于远程访问技术,有了VPN技术,用户无论是外地出差还是在家中办公,只要能连上互联网就能利用VPN访问内网资源
PPTP(Point to Point Tunneling Protocol),即点对点隧道协议
L2TP(Layer 2 Tunneling Protocol),即第二层隧道协议
在计算机网络中,TUN和TAP是操作系统内核中的虚拟网络设备,服务器如果拥有TUN和TAP,就可以开启VPN代理功能
分布式:一个业务拆分多个子业务部署在不同的服务器上
集群:同一个业务部署在多个服务器上
黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果,它只检查程序呈现给用户的功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试
白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
灰盒测试介于黑盒测试与白盒测试之间可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒测试的方法
冒烟测试是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性,引入到软件测试中,就是指测试小组在正规测试一个新版本之前,先投入较少的人力和时间验证一个软件的主要功能,如果主要功能都没有实现,则打回开发组重新开发,这样做的好处是可以节省大量的时间成本和人力成本