计算机网络的重要性不言而喻, 也是计算机基础里面关键的一环与面试热点, 以前收集了一些问题和知识点, 如今此分享面试
偶尔路过的你算法
计算机网络中热点面试问题, 我认为应该知道的一些基础知识; 不会深究太多, 以我认为够用为界编程
物理层缓存
注意事项:
在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。安全
应用层 定义数据格式,并按照对应的格式解读数据 应用层定义了各类各样的协议来规范数据格式 HTTP FTP 好比http报文的头部格式 传输层 引入相关通讯协议 定义端口 为了给每一个应用程序标识身份 找到IP标定的主机上,具体接收数据的端口 UDP数据包 TCP数据包 网络层 IP地址 确认主机所在的网络位置,并经过IP进行MAC寻址 对外网数据包进行路由转发 在网络层被包装的数据包就叫IP数据包 网络层的主要工做是定义网络地址,区分网段,子网内MAC寻址,对于不一样子网的数据包进行路由 链路层 MAC地址 链路层定义了主机的身份,即MAC地址 定义数据帧,确认主机的物理地址,传输数据; 在链路层生成以太网数据包 以太网数据包经过物理介质传输给对方主机
TCP与UDP的区别 TCP面向链接 可靠的流协议 顺序控制 流量控制 拥塞控制 UDP 有更高的实时性 不可靠的数据报协议 不能保证必定会送达 为何要三次握手? 三次握手的目的是创建可靠的通讯信道 双方确认本身与对方的发送与接收是正常的 三次握手的过程 客户端发送syn包(seq=x)到服务器 客户端SYN_SEND状态,等待服务器确认 服务器收到syn包,必须确认客户的SYN(ack=x+1),同时本身也发送一个SYN包(seq=y),即SYN+ACK包 服务器进入SYN_RECV状态 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1), 此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
TCP四次握手 客户端或服务器都可主动发起挥手动做,在socket编程中,任何一方执行close()操做便可产生挥手操做 1.主动方申请关闭链接,发送FIN报文,意味着这一方没有要发送的数据了! 状态变为FIN-WAIT-1 2.被动方接收,发送ACK,先发送一个确认, ACK和ack 这时候尚未真正的发送完被动方的数据 状态变为CLOSE_wait 3.主动方状态变为FIN-wait2 被动方发送FIN, 意味着被动方也发送完了 LAST-ack状态 4.主动方发送确认,正式要关闭链接 主动方等待2MSL后,没有回复 关闭链接
使用以下技术服务器
思路 为防止传输的阻塞,经过一个慢启动获得的数值来控制发送的数据量 发送方维持一个叫作拥塞窗口的状态变量 不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增长拥塞窗口的大小 主要要记住的就是下面四个算法, 慢启动阶段 意思是刚刚加入网络的链接,一点一点地提速,不要一上来就把路占满。 把拥塞窗口设为1个数据段 指数性增长,直到第一次丢失 拥塞避免 到达一个阈值后,开始线性增长 快重传 快重传要求接收方在收到一个失序的报文段后就当即发出重复确认 快恢复 和快重传算法配合使用,当发送方连续收到3个重复确认时就执行乘法减少算法,把慢开始门限ssthresh减半 但因为发送 方 连续 收到 几个重传确认,因此认为此事网络无阻塞,因此此时不执行慢开始算法,而是让cwnd 从 ssthresh开始执行拥塞避免算法(加法增大)。
什么是http协议? 是一个基于请求与响应模式的 无状态的 基于TCP的链接方式 应用层的协议 http请求方法 经常使用的方法有哪些? get post get 和 post 请求有哪些区别? get的参数在url中 post的经过request Body传递 GET请求在URL中传送的参数是有长度限制的 get重点在从服务器上获取资源 post重点在向服务器发送数据 get是不安全的,由于URL是可见的,可能会泄露私密信息,如密码等; post较get安全性较高; http请求报文和响应报文 请求报文 请求行 请求首部字段 请求实体 响应 状态行 响应首部字段 响应实体 http协议2.0和1.1的区别 HTTP/2是彻底多路复用的 HTTP/2采用二进制格式而非文本格式 HTTP/2让服务器能够将响应主动“推送”到客户端缓存中 header压缩 https的原理,如何加密解密 Https在真正请求数据前,先会与服务有几回握手验证,以证实相互的身份 客户端向服务器发起HTTPS请求,链接到服务器的443端口 服务器将本身的公钥发送给客户端 客户端收到服务器端的公钥以后,会对公钥进行检查,验证其合法性 验证成功,生成随机的对称秘钥 客户端会发起HTTPS中的第二个HTTP请求,将加密以后的客户端密钥发送给服务器 服务器接收到客户端发来的密文以后,会用本身的私钥对其进行非对称解密 这样两边就有了一对对称秘钥 以后就能够了 http经常使用状态码 1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 200:请求被正常处理 204:请求被受理但没有资源能够返回 3xx:重定向--要完成请求必须进行更进一步的操做 301:永久性重定向 302:临时重定向 4xx:客户端错误--请求有语法错误或请求没法实现 400:请求报文语法有误,服务器没法识别 401:请求须要认证 403:请求的对应资源禁止被访问 404:服务器没法找到对应资源 5xx:服务器端错误--服务器未能实现合法的请求 500:服务器内部错误 503:服务器正忙