面试笔记之计算机网络(1.3万字)

频考

1、你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?第二小问:你知道应用层都有那些协议吗?

答:运输层,网络层,应用层。
应用层的协议:
Http协议:(端口号:80)
DNS(重点。解析见后)(端口号:53),WWW:
文件传输协议(File Transfer Protocol:FTP):是TCP/IP网络上两台计算机传送文件的协议(端口号:21)
远程登录协议(Telnet):是Internet远程登录服务的标准协议和主要方式,在终端使用者的电脑上使用Telnet程序,用它连接到服务器,然后在Telnet程序里面输入命令,这些命令可以在服务器上运行,从而实现远程控制服务器。(端口号:23)
电子邮件协议:(Simple Mail Transfer Protocol:SMTP)又称为简单邮件传输协议,它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。(端口号:25)
网络文件服务协议:(Network File System NFS):是基于网络的分布式文件系统,其文件系统树的各节点可以存在于不同的联网计算机甚至不同的系统平台上,可以用来提供跨平台的信息存储与共享。
网络管理协议:(SNMP:Simple Network Management Protocol):简单网络管理协议,利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等(端口号:161)
TCP/IP

2、OSI七层协议模型、TCP/IP四层模型和五层协议体系结构之间的关系.(五层协议包括什么)

OSI七层协议模型 OSI的七层协议主要包括:物理层(physical layer)、数据链路层(data link layer)、网络层(network layer)、运输层(transport layer)、会话层(session layer)、表示层(presentation layer)、应用层(application layer)
TCP/IP四层协议模型 TCP/IP是一个四层的体系结构,他包括(从下到上顺序):网络接口层、网际层(用网际层这个名字是强调这一层是为了解决不同的网络的互联问题)、运输层、应用层。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有具体内容。
五层协议体系结构 五层体系的协议结构是综合了OSI和TCP/IP的优点的一种协议,包括(从下到上):物理层、数据链路层、网络层、运输层、应用层。(最底下两层可以称为网络接口层)
注:五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是TCP/IP四层体系结构。

OSI由于体系比较复杂,而且设计先于实现,有许多设计过于思想,不太方便计算机软件实现,因而完全实现OSI参考模型的系统不多,应用的范围有限。而TCP/IP协议最早在计算机系统中实现,在Linux、Windows平台中都有稳定的实现,并且提供了简单方便的编程接口(API),可以在其上开发出丰富的应用程序,因此得到了广泛的应用。TCP/IP协议已成为目前互联网事实上的国际标准和工业标准。

五层协议包括什么:物理层、数据链路层、网络层、运输层、应用层

'每一层的协议如下:'
物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器)
数据链路层:PPP、FR、HDLC、VLAN、MAC(网桥、交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由选择协议)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS 

每一层的作用如下:
1)物理层
主要定义物理设备标准,例如网线的接口类型、光线的接口类型、各种传输介质的传输速率等。他的主要作用是传入比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们通常所说的数模转换与模数转换)。这一层的数据叫做比特流。

2)数据链路层
定义了如何让数据格式化进行传输,以及如何让控制对物理介质的访问。这一层通常还提供了错误检测和纠正,以保证数据的可靠传输

3)网络层
在位于不同地理位置的网络中的两个主机之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。

4)运输层
(TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议)
定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议TCP,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)和UDP(用户数据报协议UDP,与TCP特性恰恰相反,用于传输可靠性要求不高、数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层的接收的数据进行分段和传输,到达目的地后再进行传输。常常把这一层数据叫做段。

5)会话层
通过运输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者就受会话请求(设备之间需要相互认识可以是IP地址也可以是MAC地址或者主机名)

6)表示层
可以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台程序计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通用格式来实现多种数据格式之间的转换。

7)应用层
是最靠近用户的OSI层。这一层为用户的应用程序(如:电子邮件、文件传输和仿真终端)提供网络服务。

3、简单描述一下,TCP的连接和释放过程(三次握手四次挥手重点)

背景:

数据传输时,应用程序向TCP层发送数据流,TCP就会将接受到的数据流切分成报文段(会根据当前网络环境来调整报文段的大小),然后经过下面的层层传递,最终传递给目标节点的TCP层。为了防止丢包,TCP协议会在数据包上标有序号,对方收到则发送ACK确认,未收到则重传。这个步骤就是我们通常所说的TCP建立连接的三次握手。同时TCP会通过奇偶校验和的方式来校验数据传输过程中是否出现错误。

在这里插入图片描述

在这里主要介绍一下那6个标志位
URG:紧急指针标志,当为1时表示紧急指针有效,为0则忽略紧急指针
ACK:确认序号标志,为1表示确认号有效,为0表示报文中不含有确认信息,确认号无效
PSH:push标志,当为1时就是让接收方收到该TCP报文的时候不进入缓冲区排队而是快速发给应用程序
RST:重置连接标志,当连接出现错误时可以重置,或者用于拒绝非法的报文段和连接请求
SYN:同步序号,用于建立连接过程
FIN:finish标志,用于释放连接`

TCP三次握手:

TCP运输连接有三个阶段:建立连接、数据传送、连接释放
TCP连接过程通常叫做握手,握手需要客户端和服务器交换三个报文,如下图所示:
在这里插入图片描述
客户端有CLOSED、SYN-SEND、ESTABLISHED三种状态
服务器有CLOSED、LISTEN、SYN-RCVD、ESTABLISHED四种状态
服务器会首先创建连接,并且进入监听等待阶段,等待客户端的请求
当需要发送请求时,浏览器客户端主动打开连接,然后服务器被动打开连接

连接过程

1、客户端将SYN置为1,seq置为随机值x,向服务器发起请求连接报文,发出后状态从CLOSED转换为SYN-SEND(Synchronize Sequence Numbers同步序列编号) 同步-已发送状态
2、服务器收到数据包后由SYN=1得知,客户端想建立连接,服务器把SYNACK都置为1,ack=x+1,产生一个随机值seq=k,然后将数据包发送给客户端,对客户端的请求进行回应,转换为SYN-RCVD,同步-已收到状态。
3、客户端收到服务器的回应后,检查ack是不是等于x+1, ACK是否为1,如果是就将标志位ACK置为1ack=k+1,然后把数据包发给服务器。然后服务器检查那些标识位都正确不正确,正确的话则连接建立成功,客服端和服务器进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

发出消息或者收到消息后状态才会进行切换
客户端与服务器的握手是一个往复确认的过程

握手的过程就是SYN seq ACK ack的来回确认
SYN ACK是头部的字段,可以理解为标志位,协议中有对他们的值有具体的规定
ack就是确认号,确认号是期望收到的对方的下一个报文段的第一个数据字节的序号,也就是收到的序号+1
否则随便一个,怎么对得上号

四次挥手:
连接建立以后就可以进行数据通信传输了
通信结束后,需要断开连接,断开连接需要四次交互,常被称为四次挥手

最初状态均为ESTABLISHED,客户端与服务器相互进行数据传送
下图假设客户端无数据发送,请求断开连接
在这里插入图片描述
断开过程:
第一次(客户端向服务器发送关闭连接请求):
客户端无数据发送时,置FIN=1seq=u,向服务器请求关闭连接,然后客户端转变为FIN-WAIT-1状态

第二次(服务器向客户端回应):
服务器收到FIN后,置ACK=1,ack=u+1,向客服端发送请求确认。然后服务器的状态转换为CLOSE-WAIT状态
此时,客户端通往服务器的路就断开了,客户端不能向服务器发送数据,但是服务器仍旧可以向客户端发送数据,现在是“半关闭”的状态

第三次(服务器向客户端发出确认关闭连接请求):
服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态。

第四次(客户端向服务器发出确认关闭连接回应):
客户端收到了服务器的断开连接请求后,也需要给出确认响应,确认序号为收到序号+1,然后进入TIME-WAIT状态
等待两个MSL后,进入关闭状态

为什么会有TIME_WAIT状态呢?(MSL:网络中数据报文存在的最大时间)
1、TIME_WAIT状态可以确保有足够的时间让对方接收到ACK包,如果ACK没有到达,在传输的过程由于一些原因丢失了,导致服务器没有收到确认关闭连接,那么服务器就会重新发送确认关闭连接请求,客户端发送和服务器重发刚好是2MSL。
2、保证迟来的TCP报文段有足够的时间被识别并丢弃,linux 中一个TCP端口不能打开两次或两次以上。当客户端处于time_wait状态时我们将无法使用此端口建立新连接,假设不存在time_wait状态,新连接可能会收到旧连接的数据。

服务器出现大量COLSE_WAIT状态的原因?
这时候很可能是因为程序中在收到FIN=1的TCP报文后,由于忙于读或者写,没有去及时发送FIN回来,也就是无法及时关闭连接。这时候需要着重检查释放资源的代码和处理请求的线程配置,有可能是代码中有资源没有被释放掉,也有可能是线程池中的线程数不合理等等

4、为什么要三次握手?

之所以需要三次握手是因为TCP是可靠传输,三次刚好可靠又不多余。

现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机服务器和客户端之间的通信,假定客户端给服务器发送一个连接请求分组,服务器收到了这个分组,并发送了确认应答分组。按照两次握手的协定,服务器认为连接已经成功地建立了,可以开始发送数据分组。可是,客户端在服务器的确认连接回应在传输中被丢失的情况下,将不知道服务器是否已准备好,不知道服务器建立什么样的序列号,客户端甚至怀疑服务器是否收到自己的连接请求分组。在这种情况下,客户端认为连接还未建立成功,将忽略服务器发来的任何数据分 组,只等待连接确认应答分组。而服务器在发出的分组超时后,重复发送同样的分组。这样就形成了死锁

5、请说明一下http和https的区别

1)https协议需要申请证书,因此需要一定经济成本;
2) http是明文传输,https是加密的安全传输;
3) 连接的端口不一样,http是80,https是443;
4)http连接很简单,没有状态;https是ssl加密的传输,身份认证的网络协议,相对http传输比较安全,所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源

6、域名解析(DNS寻址过程)

比如要查询www.baidu.com的IP地址:
  1、浏览器搜索自己的DNS缓存(维护一张域名与IP地址的对应表);
  2、如果没有找到,就搜索操作系统中的DNS缓存和host文件
  3、如果还没有找到,操作系统就把域名发送到本地域名服务器,然后由本地域名服务器在自己的DNS缓存中查询:
  查询的过程为:
  3.1 本地域名服务器向根域名服务器发起请求,然后根域名服务器返回com域的顶级域名服务器的地址。
  3.2 本地域名服务器向com域的顶级域名服务器发起请求,然后返回baidu.com权限域名服务器地址
  3.3 本地域名服务器向baidu.com权限域名服务器发起请求,得到www.baidu.com的IP地址
  3.4 然后本地域名服务器将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来;
  3.5 最后操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来, 由此浏览器已经得到了域名对应的IP地址

7、在浏览器中输入url地址

1、DNS (Domain Name Server)域名解析:浏览器查询 DNS,获取域名对应的 IP 地址。查找顺序为:浏览器 、缓存系统的缓存、本地的hosts文件、本地DNS服务器、递归查询、迭代查询。
2、TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立连接,发起三次握手;
3、发送HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求,服务器处理请求并返回HTTP报文
4、浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。
5、TCP断开连接:为什么现在结束?浏览器在解析过程中,如果遇到请求外部资源时,如图像,iconfont,JS等。浏览器将重复1-5过程下载该资源

8、全双工、半双工、单双工及举例

全双工:是指通信双方可以同时进行发送数据。例如视频电话,语音聊天
单双工:是指只允许自己向另一方传送信息,而对方不能向自己传送 。例如:广播,电视
半双工:是指允许双方发送数据,但是不能同时发送。例如:对讲机

9、GET和POST的区别

本质区别:GET 产生一个数据包,POST 产生两个数据包。

1、功能上讲,GET 一般用来从服务器上获取资源,POST 一般用来更新服务器上的资源;
2、他们一般是用在表单的提交,GET 请求的数据会出现在在 URL 之后,即将请求数据放置在 HTTP 报文的 请求头 中,而 POST 请求的数据不会出现在在 URL 之后,即是 HTTP 请求报文的 请求体 中;
3、就安全性而言,POST 的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而且 POST 请求参数则被包装到请求体中,相对更安全;
4、从请求的大小看,GET 请求的长度受限于浏览器或服务器对 URL 长度的限制,允许发送的数据量比较小,而 POST 请求则是没有大小限制的
5、GET请求会被浏览器主动cache,而POST不会,除非手动设置

10、状态码

在这里插入图片描述

200,请求成功
301,资源(网页等)被永久转移到其它URL
302,资源临时移动
403,forbidden,服务器理解客户端的请求,但是拒绝执行此请求。请求资源被拒绝,通常原因是服务器上某些文件或目录设置了权限,客户端权限不够
404,not found,用户输入错误的链接,该链接指向的网页不存在。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
500,internal server error 服务器内部错误(比如浏览器代理出了问题,ip,端口不对等)该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。
502,Bad Gateway,代理服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503,服务器超载或停机维护
504,Gateway Timeout网关超时, 代理服务器没有及时从上游服务器接收请求。

11、TCP和UDP的区别

在这里插入图片描述
1、TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
2、TCP提供可靠的传输(校验,重排序,应答,丢弃重复,超时重发,滑动窗口); UDP不能保证传输的可靠。
3、TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
4、TCP提供拥塞控制; UDP则不提供。
5、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
6、网络包中的TCP头部为20-60个字节;UDP头部只有8个字节。

12、Cookie和Session有什么区别

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,

但是Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③登录一次网站后访问网站其他页面不需要重新登录。
Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。

13、TCP拥塞机制

拥塞控制和流量控制的概念和区别:
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

为了进行拥塞控制,TCP 发送方要维持一个拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。

TCP的拥塞控制采用了四种算法,即 慢开始 、 拥塞避免 、快重传 和 快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减少网络拥塞的发生。

慢开始: 慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每经过一个传播轮次,cwnd加倍。

拥塞避免: 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.

快重传与快恢复:在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。  当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。

14、SSL加密

第一步,客户端给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步,服务器确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

第三步,客户端确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步,服务器使用自己的私钥,获取客户端发来的随机数(即Premaster secret)。

第五步,客户端和服务器根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

暂时不频繁的考点 :

1、长连接与短连接

1、长连接:在一个TCP连接上可以发送多个数据包,但是如果没有数据包发送时,也要双方发检测包以维持这个长连接;三次握手后连接,不断开连接,保持客户端和服务端通信,直到服务器超时自动断开连接,或者客户端主动断开连接。
2、短连接:当双方需要数据交互的时候,就建立一个TCP连接,本次交互完之后就断开这个连接;三次握手后建立连接,发送数据包并得到服务器返回的结果后,通过客户端和服务器的四次握手后断开连接。
使用场景
1、短连接:适用于网页浏览等数据刷新频度较低的场景。一般而言像及京东,淘宝这些大型网站,随时都会有成千上万的用户请求,一般使用短连接,用户量太大,服务器扛不住那么多长连接;
2、长连接:适用于客户端和服务端通信频繁的场景,例如:聊天室,实时游戏等场景。即时通讯(QQ)般使用的都是长连接,但并不是永久连接(比如20分钟,半个小时),因为即时通讯是频繁的发送请求,使用长连接只需要建立一次连接,同时再根据业务设置保持时间,超过这个时间就会断开连接,一定程度上保证了服务器的压力不会过大。

2、请说明一下哪种应用场景会使用TCP协议,使用它的意义

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议

3、请你解释一下TCP为什么可靠一些

确认和重传机制
建立连接时三次握手同步双方的“序列号 + 确认号 + 窗口大小信息”,是确认重传、流控的基础
传输过程中,如果Checksum校验失败、丢包或延时,发送端重传

数据排序
TCP有专门的序列号SN字段,可提供数据re-order

流量控制
窗口和计时器的使用。TCP窗口中会指明双方能够发送接收的最大数据量

拥塞控制
TCP的拥塞控制由慢启动、拥塞避免、快速重、快速恢复,4个核心算法组成。

4、解释一下,http请求中的304状态码的含义

304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。

5、请你说明一下,SSL(Secure Sockets Layer 安全套接字协议)四次握手的过程

1、 客户端发出请求
首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。

2、服务器回应
服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。

3、客户端回应
客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。

4、服务器的最后回应
服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。
(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

6、请你讲讲http1.1和1.0的区别

主要区别主要体现在:

1}缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

2)带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

3)错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

4)Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

5)长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

7、请谈一下,你知道的http请求,并说明应答码502和504的区别

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。

HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

GET:向特定的资源发出请求。

POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。

PUT:向指定资源位置上传其最新内容。

DELETE:请求服务器删除Request-URI所标识的资源。

TRACE:回显服务器收到的请求,主要用于测试或诊断。

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。

502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

8、请简单解释一下,arp协议和arp攻击。

地址解析协议。ARP攻击的第一步就是ARP欺骗。ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。不过后来,人们发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。

9、什么是icmp协议,它的作用是什么?

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

10、请你讲一下路由器和交换机的区别?

1、工作层次不同:交换机比路由器更简单,路由器比交换器能获取更多信息
交换机工作在数据链路层,而路由器工作在网络层

2、数据转发所依据的对象不同

交换机的数据转发依据是利用物理地址或者说MAC地址来确定转发数据的目的地址
而路由器是依据ip地址进行工作的

3、传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

19、请你简单讲解一下,负载均衡 反向代理模式的优点、缺点

(1)反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

(2)反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

(3)反向代理负载均衡能以软件方式来实现,如apache mod_proxy、netscape proxy等,也可以在高速缓存器、负载均衡器等硬件设备上实现。反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提供有益的性能;由于网络外部用户不能直接访问真实的服务器,具备额外的安全性(同理,NAT负载均衡技术也有此优点)。

(4)其缺点主要表现在以下两个方面

反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。

针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈。

一般来讲,可以用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,如search等。

(总结自牛客)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值