网络协议面试题

TCP属于传输层,HTTP属于应用层,IP在网络层。

1. 什么是TCP/IP和UDP协议

  1. TCP/IP协议即传输控制/网络协议,是面向连接的协议,发送数据之前需要建立连接,TCP提供可靠传输服务。
  2. UCP协议即用户数据报协议,属于TCP/IP协议族中的一种。是无连接的协议,发送数据之前无需建立连接,不可靠传输。

2. TCP与UDP的区别

  1. TCP是面向连接的,而UDP是面向无连接的
  2. TCP只支持点对点通信,UDP支持1-1、1-n、n-1、n-n。
  3. TCP是以字节为单位发送数据的,而UDP是整个报文一次发完。

3. TCP与UDP的应用场景

对某些实时性要求比较高的情况使用UDP,比如游戏,媒体通信,实时直播,即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失的情况。

4. 什么是HTTP协议

  • HTTP协议是对客户端和服务器端之间、数据之间实现可靠性的传输文字、图片、视频等超文本数据的规范。格式简称为“超文本传输协议”。
  • HTTP协议属于应用层、即用户访问的第一层就是http

在这里插入图片描述

5. HTTP与HTTPS的区别

HTTP是运行在TCP之上的,数据都是采用明文传输的,因此客户端与服务器端都无法验证对方的身份。

HTTPS是运行在SSL上,而SSL运行在TCP之上,是添加了加密和认证机制的HTTP。

两者的不同如下

  • 端口不同:HTTP默认端口是80,HTTPS端口是443.
  • 资源消耗:HTTPS加密会消耗更多的CPU和内存资源
  • 开销成本:HTTPS通信需要证书的,证书需向认证机构买。

6. HTTPS工作原理

  1. 首先HTTP请求服务端生成证书(公钥),客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
  2. 客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数(客户端与服务端的私钥),随机数使用公钥进行加密(RSA加密);
  3. 客户端将加密后的随机值发送给服务端,服务端利用证书(公钥)将其解密得到随机值(私钥),此后服务端发送数据给客户端,利用该公钥将内容进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
  4. 客户端得到服务端的数据之后,利用公钥(随机值)将其解密得到内容,而其他第三方就算得到数据也会因为没有私钥无法解析。

7. TCP的三次握手与四次挥手

请查看此链接:我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)

1)三次握手

在这里插入图片描述

  1. 首先客户端发送连接请求SYN报文给服务端。
  2. 服务端接收后回复 ACK 报文,并为这次连接分配资源。
  3. 客户端端接收到 ACK 报文后也向服务端回复 ACK 报文,并分配资源,这样 TCP 连接就建立了。

三次握手中的各自作用

  1. 在第一次通信过程中,A向B发送信息之后,B收到信息后可以确认自己的收信能力和A的发信能力没有问题。
  2. 在第二次通信中,B向A发送信息之后,A可以确认自己的发信能力和B的收信能力没有问题,但是B不知道自己的发信能力到底如何,所以就需要第三次通信。
  3. 在第三次通信中,A向B发送信息之后,B就可以确认自己的发信能力没有问题。

小结:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

2)四次挥手

建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。在这里插入图片描述
四次挥手流程如下:

  1. 服务端申请断开连接即FIN,发送Seq+Ack
  2. 客户端接收信息返回,表示我已经接收到
  3. 客户端发送信息表示可以断开连接
  4. 服务端接受信息,返回数据表示已接受信息

为什么连接的时候是三次握手,关闭的时候却是四次握手?
①因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
②但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,需要等待所有资源发送完成,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”
③只有等到我Server端所有的报文都发送完了,服务端才能发送FIN报文,因此不能一起发送。故需要四步握手。

8. 为什么TCP连接需要三次握手,两次不可以吗?

“三次握手” 的目的是为了防止已失效的链接请求报文突然又传送到了服务端,因而产生错误。

  • 正常的情况:A 发出连接请求,但因连接请求报文丢失而未收到确认,于是 A 再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接。A 共发送了两个连接请求报文段,其中第一个丢失,第二个到达了 B。没有 “已失效的连接请求报文段”。
  • 现假定出现了一种异常情况:即 A 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 B。本来这是一个早已失效的报文段。但 B 收到此失效的连接请求报文段后,就误认为是 A 再次发出的一个新的连接请求。于是就向 A 发出确认报文段,同意建立连接。

假设不采用“三次握手”,那么只要 B 发出确认,新的连接就建立了。由于现在 A 并没有发出建立连接的
请求,因此不会理睬 B 的确认,也不会向 B 发送数据。但 B 却以为新的运输连接已经建立,并一直等待
A 发来数据。这样,B 的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。

9. TCP协议如何来保障传输的可靠性

  • 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
  • 对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
  • 丢弃重复数据:对于重复数据,能够丢弃重复数据;
  • 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
  • 超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
  • 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

10. 客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

1)DDoS攻击

  1. 客户端向服务端发送请求连接数据包
  2. 服务端向客户端发送确认数据包
  3. 客户端不向服务端发送确认数据包,服务端一直等待回复

2)DDoS预防(没有彻底根治的方法,除非不使用TCP)

  1. 限制同时打开SYN半链接数目
  2. 缩短SYN半链接的Time out时间
  3. 关闭不必要的服务

11. Socket和Http的区别和应用场景

  1. Socket连接就是所谓的长连接,理论上客户端和服务端一旦建立连接将不会主动断掉
  2. Socket适用场景:网络游戏、银行持续交互、直播、在线视频
  3. Http连接就是所谓的短连接,即客户端向服务端发送一次请求,服务端响应后连接即会断开等待下一次连接。
  4. Http适用场景:公司OA服务、互联网服务、电商、办公、网站等等

12. 一次完整的HTTP请求所经历几个步骤

  1. 建立TCP连接
  2. Web浏览器向Web服务器发送请求,如:GET/sample/hello.jsp
  3. Web浏览器发送请求头
  4. Web服务器应答并发送响应头
  5. Web服务器向浏览器发送数据
  6. Web服务器关闭TCP连接

13.什么是HTTP协议无状态协议?怎么解决HTTP协议无状态协议?

HTTP是一个无状态的协议,也就是没有记忆力,这就意味着每一次请求都是独立的,缺少状态意味着如果后续处理需要前面的信息,则它必须要重传,这样可能导致每次连接传送的数据量增大。

HTTP协议的优缺点

  • 优点:解放了服务器,每一次的请求都是“点到为止”,不会造成不必要的连接占用
  • 缺点:每次请求传输大量重复的内容信息,并且,在请求之间无法实现数据的共享。

解决方案

  1. 使用参数传递机制:
    将参数拼接在请求的 URL 后面,实现数据的传递(GET方式),例如: /param/list?username=wmyskxz
    问题:可以解决数据共享的问题,但是这种方式一不安全,二数据允许传输量只有1kb
  2. 使用 Cookie 技术
  3. 使用 Session 技术

14. Session、Cookie 与 Application

Cookie和Session都是客户端与服务器之间保持状态的解决方案,具体来说,cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

1、Cookie 及其相关 API
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

2、Session 及其相关 API
同样地,会话状态也可以保存在服务器端。客户端请求服务器,如果服务器记录该用户状态,就获取Session来保存状态。
如果服务器已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用
如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,并将这个sessionid在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用 cookie机制,保存在cookie中 ,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器;若浏览器禁用Cookie的话,可以通过 URL重写机制将sessionid传回服务器。

3、 Session 与 Cookie 的对比

  • 实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;
  • 大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;
  • 安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;
  • 服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力

4、Application
Application(ServletContext):与一个Web应用程序相对应,为应用程序提供了一个全局的状态,所有客户都可以使用该状态。

14. 滑动窗口机制

由发送方和接收方在三次握手阶段,互相将自己的最大可接收的数据量告诉对方。
也就是自己的数据接收缓冲池的大小。这样对方可以根据已发送的数据量来计算是否可以接着发送。在处理过程中,当接收缓冲池的大小发生变化时,要给对方更新窗口大小的通知。这就实现了流量控制。

15. 常用的HTTP方法有哪些?

  • GET:请求客户端资源
  • POST:更新客户端资源也可请求
  • PUT:传输文件,报文主体中包含文件内容,保存到对应URL位置
  • HEAD:获取报文首部,,与GET方法类似,只是不返回报文主体,一般用于验证URL是否有效
  • DELETE:删除文件,与PUT方法相反,删除对应URL位置的文件
  • OPTIONS:查询相应URL支持的HTTP方法

16. 常见HTTP状态码

1xx:消息临时响应

  • 100:continue(服务端已经接受了请求头,客户端应该继续发送请求体)
  • 101:switching protocols(转换协议)(服务器已经理解了客户端的请求,并将通过upgrade通知服务端以不同的协议来完成该请求)
    102:processing(WebDAV请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求)

2xx:成功

  • 200:ok,请求已成功(服务器成功接收请求并返回响应)
  • 201:created,请求已被实现
  • 202:accepted,服务器已经接受请求,但是尚未处理
  • 204:no content,服务器成功接收了请求,没有返回任何内容
  • 205:reset content,服务器成功处理了请求,但是没有返回任何内容
  • 206:partical content,服务器成功处理了部分get请求

3xx:重定向

  • 301:永久重定向
  • 302:临时重定向
  • 303:查看其他
  • 304:未曾修改(资源未修改由于客户端仍然具有以前下载的副本,因此不需要重新传输资源)
  • 307:临时重定向(请求应该与另一个url重复,但后续的请求仍使用之前的url)与302的不同是,当重新发起原始请求时,不允许更改请求方法
  • 308:永久重定向,与301的区别就是,不允许http方法修改

4xx:客户端错误

  • 401(未授权):请求要求身份验证
  • 403:服务器已经理解请求,但是拒绝执行
  • 404:请求失败,请求的资源没有在服务器上发现
  • 408:请求超时

5xx服务端错误

  • 501:服务器不支持当前请求所需要的的某个功能
  • 505:服务器不支持或者拒绝支持请求中的http版本

16. SQL注入

SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

1、SQL注入攻击的总体思路

  1. 寻找到SQL注入的位置
  2. 判断服务器类型和后台数据库类型
  3. 针对不用的服务器和数据库特点进行SQL注入攻击

2、SQL注入攻击实例介绍
比如,在一个登录界面,要求输入用户名和密码,可以这样输入实现免帐号登录:

用户名: ‘or 1 = 1 --密 码:复制代码

用户一旦点击登录,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了。这是为什么呢?下面我们分析一下:从理论上说,后台认证程序中会有如下的SQL语句:

String sql = “select * from user_table where username=’ “+userName+” ’ and
password=’ “+password+” ‘”;

因此,当输入了上面的用户名和密码,上面的SQL语句变成:

SELECT * FROM user_table WHERE username=’’or 1 = 1 – and password=’’

分析上述SQL语句我们知道,username=‘ or 1=1 这个语句一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用。这样,上述语句永远都能正确执行,用户轻易骗过系统,获取合法身份。

3、SLQ注入解决方法

  1. 参数绑定
  2. 使用正则表达式过滤传入的参数

17. XSS攻击

XSS攻击是一种经常出现在Web应用中的计算机安全漏洞,与SQL注入一起成为web中最主流的攻击方式。XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一个脚本代码嵌入到web页面中去,使别的用户访问都会执行相应的潜入代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击行为。

1、XSS攻击的危害

  • 盗取各类用户账号,如用户网银账号
  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  • 盗取企业重要的具有商业价值的资料
  • 非法转账
  • 强制发送电子邮件
  • 网站挂马
  • 控制受害者及其向其他网站发起攻击

2、XSS攻击原因解析

  • 主要原因:过于信任用户端提交的数据
  • 解决方法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。
  • 进一步分析细节:客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了,那么攻击者就可以肆无忌惮地展开攻击啦,因此我们绝不可以信任任何客户端提交的数据!!!

3、XSS攻击分类
1)反射性XSS攻击(非持久性XSS攻击)
漏洞产生的原因是攻击者注入的数据反应在响应中。一个典型的非持久性XSS攻击包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击),例如正常发送消息

http://www.test.com/message.php?send=Hello,World!

接收者将会接收信息并显示Hello,World;但是,非正常发送消息:

http://www.test.com/message.php?send=<script>alert(‘foolish!)</script>

接收者接收消息显示的时候将会弹出警告窗口!
2)持久性XSS攻击(留言板场景)
XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。也就是说,每当用户使用浏览器打开指定页面时,脚本便执行。与非持久性XSS攻击相比,持久性XSS攻击危害性更大。从名字就可以了解到,持久性XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。

例如,留言板表单中的表单域:

<input type=“text” name=“content” value=“这里是用户填写的数据”>

正常操作流程是:用户是提交相应留言信息 —— 将数据存储到数据库 —— 其他用户访问留言板,应用去数据并显示;而非正常操作流程是攻击者在value填写:

<script>alert(‘foolish!)</script> <!--或者html其他标签(破坏样式)、一段攻击型代码-->

并将数据提交、存储到数据库中;当其他用户取出数据显示的时候,将会执行这些攻击性代码。

4、修复漏洞方针
漏洞产生的根本原因是 太相信用户提交的数据,对用户所提交的数据过滤不足所导致的,因此解决方案也应该从这个方面入手,具体方案包括:

  • 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了(如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击);
  • 表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。
  • 对数据进行Html Encode 处理
  • 过滤或移除特殊的Html标签,例如:
    <script> , <iframe> , < for < , > for> , &quot for
    
  • 过滤JavaScript 事件的标签,例如 “οnclick=”, “onfocus” 等等。

需要注意的是,在有些应用中是允许html标签出现的,甚至是javascript代码出现。因此,我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求(例如输出需要html代码、javascript代码拼接、或者此表单直接允许使用等等),然后区别处理

18. OSI网络体系结构与TCP/IP协议模型

OSI是一个理论上的网络通信模型,而TCP/IP则是实际上的网络通信模型。

  1. 物理层
    实现相邻计算机节点之间的比特流的透明传输,并尽可能地屏蔽掉具体传输介质和物理设备的差异,使其上层(数据链路层)不必关心网络的具体传输介质。
  2. 数据链路层(data link layer)
    • 接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
    • 将来自上层的数据帧,拆装为位流形式的数据转发到物理层
    • 这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法
  3. 网络层
    将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径
  4. 传输层(transport layer)
    在源端与目的端之间提供可靠的透明数据传输,使上层服务用户不必关系通信子网的实现细节。在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信。
  5. 会话层
    会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。
  6. 表示层
    数据的编码,压缩和解压缩,数据的加密和解密
  7. 应用层(Application layer)
    为用户的应用进程提供网络通信服务

19. 网络层的ARP协议工作原理

地址解析协议(ARP)是通过解析网络层地址来寻找数据链路层地址的,是网络协议包中及其重要的网络传输协议。

网络层的ARP协议完成了IP地址与物理地址的映射。
首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

20. IP地址的分类

整个的因特网就是一个单一的、抽象的网络。IP 地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的 32 位标识符,它是一个逻辑地址,用以屏蔽掉物理地址的差异。IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。

每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。A~E类地址的特点如下:

  • A类地址:以0开头,第一个字节范围:0~127;
  • B类地址:以10开头,第一个字节范围:128~191;
  • C类地址:以110开头,第一个字节范围:192~223;
  • D类地址:以1110开头,第一个字节范围为224~239
  • E类地址:以1111开头,保留地址

1、 A类地址:1字节的网络地址 + 3字节主机地址,网络地址的最高位必须是“0”

A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络

A类IP地址的地址范围1.0.0.0到127.255.255.255(二进制表示为:00000001 00000000 00000000
00000000 - 01111111 11111111 11111111 11111111),最后一个是广播地址。A类IP地址的子网掩码为255.0.0.0)

2、B类地址: 2字节的网络地址 + 2字节主机地址,网络地址的最高位必须是“10”

B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络。

B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000
00000000—-10111111 11111111 11111111 11111111),最后一个是广播地址。B类IP地址的子网掩码为255.255.0.0)

3、C类地址: 3字节的网络地址 + 1字节主机地址,网络地址的最高位必须是“110”

C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络。

C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000- 11011111 11111111 11111111 11111111)。C类IP地址的子网掩码为255.255.255.0

4、D类地址:多播地址,用于1对多通信,最高位必须是“1110

D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从
224.0.0.0到239.255.255.255。

5、E类地址:为保留地址,最高位必须是“1111”

21. IP地址和物理地址

物理地址是数据链路层和物理层使用的地址,是设备的硬件地址,IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。其中ARP协议是用来映射IP地址和物理地址的。

22. Cookie和Session对于HTTP有什么作用?

HTTP协议是无状态协议,无法判断用户身份的。所以需要Cookie或者Session去识别用户的身份。

23. Cookie 与Session的区别

  1. Cookie数据保存在客户单上,安全性较差,Session数据保存在服务器上,安全性较高
  2. 单个Cookie保存的数据不能超过4K,session无限制
  3. session保存在服务器上,当访问增多时,占用服务器性能,所以考虑到服务器性能,应当使用Cookie减少服务器的压力。

1. HTTPS如何保障安全传输的?

在这里插入图片描述

2. TCP的三次握手与四次挥手

在这里插入图片描述

3. 跨域请求是什么?有什么问题?怎么解决?

概念: 跨域请求是指浏览器在发起网络请求时,会检查该请求所对应的协议、域名、端口是否 和当前网页一致,如果不一致则浏览器会限制访问。
问题: 比如在www.baidu.com中的某个网页,如果用Ajax去访问www.jd.com的网页是不行的,假设能够访问的话,那么用户等登录信息cookie会被www.jd.com获取,如果是第三方黑客网站的话就危险了。所以浏览器设置这层限制,是为了用户的信息安全。
解决:

在这里插入图片描述
里面的第三种方法是绕过浏览器,通过调用后台的接口去访问
什么是跨域请求?如何解决跨域请求

4. 什么是SSO?与OAuth2.0有什么关系?

在这里插入图片描述
OAuth2.0:微信账号注册,微信登录天猫,京东,淘宝
SSO:登录淘宝,天猫无需登录(它们都去共同的第三方获取session)
在这里插入图片描述

5. 浏览器发出一个请求到收到响应经历了哪些步骤?

在这里插入图片描述

6. 路由器与交换机的区别与联系

路由器与交换机的区别与联系

7. epoll与poll的区别?

在这里插入图片描述

8. BIO、NIO与AIO分别是什么?

在这里插入图片描述

9. 零拷贝是什么?

在这里插入图片描述
在这里插入图片描述

  1. 第一次拷贝:磁盘读取到内核缓存区
  2. 第二次拷贝:内核缓冲区读取到应用程序缓冲区(比如redis)
  3. 第三次拷贝:应用程序缓冲区读取到socket缓冲区
  4. 第四次拷贝:socket缓冲区写到网络
    现在我们可以看到1->2->3->4的整个过程一共经历了四次拷贝的方式,但是真正消耗资源和浪费时间的是第二次和第三次,因为这两次都需要经过我们的CPU拷贝,而且还需要内核态和用户态之间的来回切换。 想想看,我们的CPU资源是多么宝贵,要处理大量的任务。还要去拷贝大量的数据。如果能把CPU的这两次拷贝给去除掉,岂不快哉!!!既能节省CPU资源,还可以避免内核态和用户态之间的切换。

用户态与内核态的区别

  • 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理器是可被抢占的
  • 处于内核态执行时,进程则能访问所有的内存空间和对象,且所占有的处理器是不允许被抢占的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值