1、 四层模型是哪四层,各自负责什么功能?
应用层:应用进程的交互完成特定的应用
传输层:两台主机间进程的通信提供通用的数据传输服务
网络层:为分组交换的网上的不同主机提供通信服务
数据链路层:两台主机间的数据传输 需要在一段一段的链路上进行 需要专门的数据链路层协议
2、 ping命令是什么原理?
判断主机和其他的主机能否连接 IP报头(20字节)+ICMP报文
基于ICMP协议(Internet控制报文协议)**
3、集线器、交换机、路由器的区别?
集线器:集线器工作在物理层 相当于总线 把总线变成一个点
交换机:交换机工作在数据链路层
路由器:路由器工作在网络层,路由选择,寻址转发
4、什么是MTU?为什么是这个大小?
最大传输单元 1500 1518-18 1518是以太网数据帧的最大长度 以太网数据帧的帧头部为14尾部为4字节 去掉之后就是1500 即最大传输单元
5、TCP三次握手和四次挥手机制
经典三次握手四次挥手
6、TCP的第三次握手可以携带数据吗?
可以的
7、TCP可靠性由哪些机制保证?
序列号 确认序号 超时重传
窗口控制
拥塞控制:慢启动 拥塞窗口 快恢复 快速重传
8、超时重传如何进行?
如果发送方迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一段时间后进行重传。一旦发生超时重传,窗口大小设置为1,慢启动阈值设置为当前窗口大小的一半,重新进入慢启动过程。
9、DNS解析过程如何进行?
递归(1次)和迭代(3次)两种算法
1:浏览器先查看自己缓存中有没有这个域名对应的IP地址
2:没有的话,查看哦操作系统中有没有已经解析的结果
3:没有的话,请求本地域名服务器来解析这个域名(80%到这里已经结束了,递归过程)
4:本地域名也没有,本地域名服务器向根域名服务器请求解析(全球一共13个,中国没有) 迭代1
5:根域名服务器会返回给本地域名服务器一个顶级域名服务器的地址,或者直接返回ip 迭代2
6:本地域名服务器向上一步查询到的顶级域名服务器请求,返回全域域名服务器或者直接返回ip 迭代3:
7:找到ip地址后 本地域名服务器对该域名缓存
8:本地域名服务器返回该ip 用于浏览器也进行缓存
10、HTTP中有哪些Method,POST和GET什么区别?
Get用于获取数据、将数据放在url后面(安全性较差)浏览器对url有长度限制
Post用于发送数据获得验证,用于刷新或者重新请求 数据放在报文体中,安全
11、HTTP1.0和1.1有什么区别?
长连接:http1.1默认使用长连接
Host域:http1.0的url中没有传递主机名称(hostname),默认每台服务器唯一的ip,没有host域 http1.1支持host域
缓存处理:
12、HTTPS安全性的原理
服务端的数字证书会有证书发布机构私钥签名,非对称加密有一个特点,低腰加密之后拥有公钥可以识别,浏览器中有根证书,会对服务器的数字证书会对服务器的数字证书
13、HTTPS加密流程
1:使用https需要保证服务端配置了安全证书
2:客户端发送请求到服务端
3:服务端返回公钥和数字证书到客户端
4:客户端会验证数字证书的安全性,如果通过会使用公钥加密一个随机数,发送给服务端
5:服务端接收到这个随机数,会用私钥进行解密,这样就只有客户端服务端知道这个秘钥最后吧这个秘钥作为后续对称加密的秘钥
6:通过对称加密与服务器进行通信,SSL建立
14、什么是反向代理?nginx负载均衡有哪些策略?
反向代理:反向代理就是代理服务器为服务器作代理人,站在服务器这边,它就是对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。
负载均衡的策略:
1:轮询(默认)
请求依次轮流往每个应用服务器上进行分配,分配策略比较简单。
缺点:不均匀,可能会出现,某些服务器接受的请求较重,负载压力重,有些负荷小,不可控。另外服务器之间需要进行session同步。
2:权重轮询(权重越高,进入的几率越大)
优点:可以根据情况进行调整。可控,仍然需要进行session同步。
3:IP-Hash
优点:采用hash的方式来映射服务器。无需进行session同步,固定IP会固定访问一台服务器。缺点:恶意攻击,会造成某台服务器压垮。提供的服务不同,面向的地区不同,IP可能会出现集中,造成不均匀,不可控。
4:URL-Hash
这种是根据URL进行hash,这样某些请求永远打某台服务器。利于利用服务器的缓存,但是可能由于URL的哈希值分布不均匀,以及业务侧重造成某些服务器压力大,某些负荷低。这种也需要进行session同步。
15、从输入网址到网页内容展示出来,发生了哪些事?
1、浏览器向dns服务器请求解析该url中域名对应的IP地址
2、根据ip地址和默认端口号80,向服务器建立tcp连接
3、浏览器发出读取文件(url域名后面对应的文件)的http请求,该请求报文作为tcp三次握手的第三个报文段发送给服务器;
4、服务器对浏览器的请求做出响应,将对应的html文本发送给浏览器
5、释放tcp连接
6、浏览器解析html代码,并请求代码中的资源,最后对页面进行渲染呈现给用户
16、http和https的区别?
http是明文传输,https是具有安全性的tsl加密传输协议
https出了三次握手外 还要进行ssl层的握手 协商使用对称密钥
https需要服务端申请数字证书,浏览器安装根证书
端口号不同http端口号80,https443
17、session和cookies区别
由于HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie,Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态
但是每次客户端的访问都必须传回这些Cookie,如果 Cookie 很多,这无形地增加了客户端与服务端的数据传输量,
而 Session 的出现正是为了解决这个问题。同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的, 而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 NANE 为JSESIONID 的一个 Cookie。
1:数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。
2:数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
3:cookie不是很安全,在网络中进行传输,session存在于服务端比较安全