首页 > 其他分享 >网络-常见的面试- 高频-1

网络-常见的面试- 高频-1

时间:2022-10-28 13:02:25浏览次数:53  
标签:常见 TCP 发送 面试 服务器 高频 数据 连接 客户端


文章目录

1.TCP三次握手机制是什么?为什么三次?

三次握手是确保服务端发出的消息,客户端能收到。目的是确认自己和对方的发送和接收都是正常的,从而保证了双方能够进行可靠通信。第三次握手可以携带数据。

若采取两次握手的话,当第二次握手后就建立连接的话,此时客户端知道服务器能够正常接收到自己发送的数据,而服务器并不知道客户端是否能够收到自己发送的数据。

如果没有第三次握手告诉服务端,客户端已经收到了服务端传输的数据的话,服务器端的端口就会一直开着,等到客户端因超时重新发出请求时,服务器端就会重新开启一个端口连接。长此以往,这样的端口越来越多,就会造成服务器开销的浪费。

总结:如果没有第三次握手,由于第二次的握手过程中数据可能存在丢失问题,导致客户端没有收到,但是服务器端以为客户端收到了,实际上客户端没有收到,因此客户端就在一直等服务器发送数据,如果超时,就会重新发起新的三次握手连接请求。但是服务端在第二次握手完成后,即服务端发送完报文后,它以为客户端能够接收到自己发送的报文段,它以为他们之间已经建立了连接,所以就一直在等客户端发送数据,导致整个过程循环,由于客户端在不停的创建连接,服务端的会一直打开新的端口,长此以往,这样的端口越来越多,造成服务端资源的浪费。

2.能否简单介绍下HTTP协议中缓存的处理流程?

1.浏览器第一期请求URL,若此资源正常,服务器将返回状态200,并获取存储与缓存相关的属性,用于以后的请求;

2.浏览器第二次请求URL,首先会比较Expires(记录超时时间)的时间与当前请求时间,若未超时,则直接读取缓存,不与服务器交互;

3.若已经超时或缓存失效,浏览器将请求URL。同时带了属性,用于检测文件是否更新;

4.若If-None-Match(即ETag(服务器中此URL对应文件的唯一标识))未改变,且If-Modified-Since(此URL对应文件在服务器的最近更新时间)该事件之后文件未被修改过,则服务器仅返回状态304,意思就是,不用更新,从缓存中拿。这样做的好处是,不用重复传输文件内容了,提高了加载速度又确定了文件与服务器一致,另外,也重新计算Expires的值;

5.若If-None-Match值改变,或比较If-Modified-Since时间发现文件被修改,则文件已更新,服务器将重新发出资源,返回和第一次请求流程类似。

3.在地址栏键入URL后,网络世界发生了什么?

1.浏览器拿到网页URL之后,通过DNS服务器找到URL中域名对应的IP地址;

2.拿到IP地址后,即可通过IP地址和默认端口号与对应的服务器建立TCP连接;

3.发送数据(封装过程):

1.**应用层:**为数据加上对应的应用层协议头;

2.**传输层:**将数据分段,标序号,添加端口号;

3.**网络层:**添加IP协议头,源IP,目的IP;

4.**数据链路层:**为数据添加帧头帧尾以及MAC地址。

4.接收数据(解封过程):与封装过程相反;

5.传输完毕后断开TCP连接。

4.使用HTTP长连接有哪些优点?

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来数,较适用长连接。

短连接对于服务器来书管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和宽带。

5.介绍下CLOSE_WAIT状态产生原因

在被动关闭连接情况下,在已经接受到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。

出现大量CLOSE_WAIT的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙于读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。

6.服务器的最大并发连接数是多少?

由TCP四元组决定

2^48个

7.TCP和UDP协议如何选择?

TCP与UDP的基本区别

1.基于连接与无连接

2.TCP要求系统资源较多,UDP较少

3.UDP程序结构较简单

4.流模式(TCP)与数据报模式(UDP)

5.TCP保证数据正确性,UDP可能丢包

6.TCP保证数据顺序,UDP不保证

UDP应用场景

1.面向数据报方式

2.网络数据大多为短消息

3.拥有大量Client

4.对数据安全性无特殊要求

5.网络负担非常重,但对响应速度要求高

如何选择

1.要求数据完整,不允许任何错误发生

(1)应用层协议开放模式:建议选择tcp

(2)应用层协议封闭模式:

(a)大量连接

1)长连接

a)少量数据传输:优先使用可靠udp传输,

b)大流量数据传输:只有在10000连接以下可以考虑tcp,其 他优先使用udp可靠传输

2)短连接

a)少量数据传输:使用udp标准模式加入序列号

b)大流量数据传输:10000以下考虑tcp

(b)有线连接

1)长连接:tcp

2)短连接:tcp

2.允许数据丢包,甚至可以乱序

(1)对实时性要求较高的使用udp

(2)部分数据允许丢包,部分数据要求完整,部分有实时性要求,使用基于udp协议改造的udp多路可靠传输。

(3)部分数据优先传输,部分可丢失数据在规定时效内传输,udp。

8.TLS/SSL协议是怎样保障信息安全的?

1.TLS/SSL数据加密:

(1)对称加密:加密解密使用同一个密钥,这个密钥既能加密又能解密;

(2)非对称加密:加解密使用一对密钥,密钥分公钥和私钥,公钥加密只有私钥能解,私钥加密只有公钥能解。

9.HTTP2协议有哪些优点?

1.二进制传输:HTTP2传输数据量的大幅减少,主要要有两个原因:以二进制方式传输和Header压缩。HTTP2采用二进制格式传输数据,而不是HTTP1中的纯文本形式的报文,二进制协议解析起来更高效。HTTP2将请求和响应数据分割成更小的帧,并且它们采用二进制编码。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。

2.**Header压缩:**在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;首部表在HTTP2的连续存储区内始终存在,有客户端和服务器共同渐进的更新。

3.**多路复用:**很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也更容易实现全速传输。

4.**服务器推送:**服务器不再是完全被动地响应请求,也可以新建“流”主动给客户端发送消息。当然,客户端也有权利选择是否接收。

5.**提高安全性:**但是不强制加密。

10.TCP连接是怎样保证安全传输的?

1.应用数据被分割成TCP认为最合适发送的数据块;

2.超时传送:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

3.TCP给发送的每个包进行编码,接收方对数据包进行排序,把有序数据传送给应用层;

4.校验和:TCP将保持它首部和数据的校验和。这是一个端到端的校验和目的是检验数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段;

5.TCP的接收端会丢弃重复的数据;

6.流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用流量控制协议是可变大小的滑动窗口协议;

7.拥塞控制:当网络拥塞时,减少数据的发送。


标签:常见,TCP,发送,面试,服务器,高频,数据,连接,客户端
From: https://blog.51cto.com/u_15850876/5804539

相关文章

  • 网络-高频面试题-2
    文章目录​​DNS域名解析器​​​​APR地址转换协议​​​​一次完整的HTTP请求过程:​​​​当前读,快照读和MVCC的关系​​​​数据库并发场景有三种,分别为:​​​​MVCC带......
  • 剑指offer - 面试题6:重建二叉树
    packageChapter2;/***面试题6:重建二叉树*输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。*假设输入的前序遍历和中序遍历的结果中都不含重复的数字。*......
  • 剑指offer - 面试题10:二进制中1的个数
    packageChapter2;/***面试题10:二进制中1的个数*输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。**内存中的那个数(补码)1的个数*/publicclass_10_b......
  • 剑指offer - 面试题9:斐波那契数列
    packageChapter2;/***面试题9:菲波那切数列*输入一个整数n,请你输出斐波那契数列的第n项。*1、1、2、3、5、8、13、21、34、*//**变形题:*一只青蛙一次可以跳上1级......
  • 腾讯前端经典react面试题汇总
    概述一下React中的事件处理逻辑。为了解决跨浏览器兼容性问题,React会将浏览器原生事件(BrowserNativeEvent)封装为合成事件(SyntheticEvent)并传入设置的事件处理程序......
  • 教你处理数仓慢SQL常见定位问题
    摘要:通常在运维监控出现CPU使用率较高、P80/P95指标较高、慢SQL数量上升等现象,或者业务出现超时报错时,优先应排查是否出现慢SQL。本文分享自华为云社区《GaussDB慢SQL常见......
  • 京东云开发者|京东云RDS数据迁移常见场景攻略
    云时代已经来临,云上很多场景下都需要数据的迁移、备份和流转,各大云厂商也大都提供了自己的迁移工具。本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决......
  • 面试题网络相关知识
    原博客地址01、HTTP常见的状态码参考答案:1xx服务器收到请求2xx请求成功3xx重定向4xx客户端错误5xx服务器错误200请求成功301永久重定向,浏览器下次自动......
  • 面试题 JS 不能不会的内容
    原博客地址01、描述事件冒泡的流程,可画图考察点:事件基础知识参考答案://基于DOM树结构,事件会顺着触发元素向上冒泡//阻止冒泡event.stopPropagation();点击一个......
  • 前端面试题(基础)
    平时用的代码托管平台 以及基本指令? 初始化仓库gitinit查看当前状态status克隆仓库ssh地址 Gitclone“仓库连接”拉取仓库数据gitpull将代码上传到缓存git......