最近准备面试,所以会收集一些不懂得题目然后进行答案的搜索,以下答案基本都是来自网络,然后进行了一点删减和自己的总结,如果有侵权,请评论或者私信联系我,我马上删除


TCP如何保证传输可靠性(校验和,序列号和确认应答号,重传,流量控制,拥塞控制)

答:1、校验和

2、序列号和确认应答号:发送方的数据拥有序列号,接收方发送的已接收信号ACK是应当接收的下一个包的序列号

3、超时重传:发送方等待两个来回时间没收到接收信号,就会重发。接收方接收到重发的包,根据之前是否已经接收到这个包来选择丢弃或者接收,并最终都会发送一个接收信号ACK

4、流量控制:接收端会在确认应答发送ACK报文时,将自己的即时窗口大小填入,并跟随ACK报文一起发送过去。而发送方根据ACK报文里的窗口大小的值的改变进而改变自己的发送速度。如果接收到窗口大小的值为0,那么发送方将停止发送数据。并定期(一个超时重发的时间)的向接收端发送窗口探测数据段,让接收端把窗口大小告诉发送端。

5、拥塞控制:慢启动,指数增长,到达阈值之后线性增长; 发生拥塞之后,拥塞阈值(即开始变成线性增长的阈值)就会变为拥塞发送时窗口的一半
注意:实际的发送窗口大小取决于流量控制的窗口和拥塞窗口中较小的一个


DNS为什么使用udp协议

答:1、DNS不适用于TCP的长连接,只需要单次的数据获取(无上下文要求),用UDP更适用于这种场景

2、如果使用TCP,那么DNS服务器就会有大量的连接,并且需要建立TCP连接的时间

3、DNS传输的数据比较小,使用UDP已经足够,速度够快就行


浏览器输入url后的过程

1、浏览器查找当前URL是否存在缓存,并比较缓存是否过期,如果是就通过DNS解析URL对应的IP。

​ 浏览器DNS缓存—>操作系统DNS缓存—>本地域名服务器—>根域名服务器—>com域顶级域名服务器—>下一个域名服务器—>本地域名服务器—>操作系统DNS缓存—>浏览器DNS缓存—>浏览器得到ip地址
2、根据IP建立TCP连接(三次握手)。

  • ​ 第一次握手: 建立连接时,客户端发送syn包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认
  • ​ 第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态
  • ​ 第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手

3、HTTP发起请求。

​ 完整的HTTP请求包含请求起始行、请求头部、请求主体三部分。

4、服务器处理请求,浏览器接收HTTP响应。

​ 状态码,响应头,响应报文

5、渲染页面,构建DOM树。
6、关闭TCP连接(四次挥手)。

  • ​ 第一次挥手是浏览器发完数据后,发送FIN请求断开连接。
  • ​ 第二次挥手是服务器发送ACK表示同意,如果在这一次服务器也发送FIN请求断开连接似乎也没有不妥
  • ​ 考虑到服务器可能还有数据要发送,所以服务器发送FIN应该放在第三次挥手中
  • ​ 这样浏览器需要返回ACK表示同意,也就是第四次挥手

全连接队列和半连接队列?

答:半连接是指客户端发送一个Syn包企图建立连接,服务器收到这个Syn后把该连接加入到半连接队列,并返回Syn包以求得客户端的最终确认,但是客户端不发生确认,导致多个连接塞满半连接队列,最后不得不抛弃新到的连接请求,又称为DDos攻击。虽然在多次服务器重传失败下,服务器会抛弃认为已经失效的半连接请求,但是只要半连接请求不断打过来,最后还是会崩溃。

解决办法:利用Syn_Cookies方法去减少资源分配(时间戳和序号),不再使用半连接队列

全连接队列是指已经建立完成连接的请求的队列,如果该队列已满,则会抛弃掉新到的请求


Https?

答:Https是http加上SSL,利用了对称加密算法与非对称加密算法,其中数据的交换使用的是对称加密,而对称加密前获取密钥的过程使用的是非对称加密,就是用这个非对称加密过程来保证对称加密的安全。

对称加密:数据交换的双方使用同一把密钥,用该密钥加密的信息只能用该密钥解密。效率比较高

非对称加密:持有一把公钥和一把私钥。公钥加密的信息只有私钥能解,私钥加密的信息只有公钥能解。效率比较低

https数据交换时使用的是对称加密,为了让客户端和服务器端拿到同一把密钥,这个过程就必须保密,如果被他人截取到了这把密钥那后续的信息都暴露了。

先采用非对称加密的方式来获取对称加密的密钥:客户端先生成对称加密的密钥,然后使用服务端的公钥进行加密,把加密后的密钥发送给服务端,服务端利用私钥解密得到密钥,在这个单向的过程中,其他人无法解开这个密钥,因此是安全的。

客户端使用的服务端的公钥其实是一个证书,由CA机构进行颁布,包含了公钥、域名等待信息。如果他人申请了一个CA证书企图替代其他公钥也是不可能的,因为包含了域名信息,可以防伪。

为了防止传输过程中数据被篡改,客户端可以将数据使用哈希算法得到hash值再用自己的私钥加密,服务端收到后用公钥解密然后进行hash,如果hash值不一致则说明被篡改。而其他人一旦篡改了数据就会导致hash值不一样,并且也无法利用公钥加密。


ping主要是使用什么协议?

答:TCP/IP模型中的ICMP协议


Time_wait的作用?

答:在四次挥手的时候,服务器端在接收到客户端发出的FIN M指令并返回一个ACK M+1指令后,会发送完最后一个数据包N,而客户端接收到数据包N之后,会发送一个ACK N+1表示真的关闭连接,并且进入Time_wait状态,会等待2MSL即两个数据包在互联网中最大的存活时间。如果不进入到Time_wait而是直接关闭,服务端可能会因为接收不到ACK N+1而不关闭连接,因为要重发这个数据包N,而客户端的Time_wait就是为了以防服务端没有接收到ACK N+1而重发的这个数据包N,如果接收到了,客户端就要再发一次ACK N+1,直至真的关闭。Time_wait一般持续1到4分钟。


TCP里面遇到滑动窗口为0会发生什么?

答:TCP规范中要求:当接收方窗口为0时,发送方继续发送一个字节数据的报文段。这些报文段将会被接收方确认,这样可以保持TCP连接不中断。


TCP粘包听说过吗?怎么进行分割,还有吗(换行符/记录包大小)?UDP有沾包问题吗(MTU)

答:1、TCP粘包就是指多个数据连续发送,在接收端的缓冲区里无法进行单个数据包的分辨,就像是粘作一团,前一个数据包的尾连着后一个数据包的头。

2、出现粘包的原因可能来自接受端(接收缓冲区存储多个包)也可能来自发送端(默认使用Nagle算法,收集多个小包一起发送)

3、如果这些包本来就是一起的那就不用处理,如果不是那就需要进行处理

4、处理方法:发送方:关闭Nagle算法;接收方:无法解决

应用层:1、开始标记、结束标记,但是得保证数据中不包含这两个标记 2、记录包的大小


TCP和UDP的区别?

答:1、TCP面向连接的,而UDP无连接的,即TCP需要经过三次握手进行连接,四次挥手来断开连接。就像打电话和寄信的区别。

2、TCP利用校验和、序列号、超时重传、确认应答号、流量控制、拥塞控制来保证可靠性,而UDP不保证可靠性,只求尽量交付

3、UDP具有较好的实时性,效率比较高,适合直播、游戏等业务;而TCP的可靠性适合传输文件等数据

4、TCP需要进行连接因此会比较占用系统资源,而UDP占用的资源较少

5、数据头所包含的信息也就不一样,并且最大长度也不一样,UDP是64K,而TCP得看发送接收双方


HTTP详细一点?

答:1、基于TCP/IP协议,来传递超文本信息,如html文件、文件、图片等。

2、允许对数据类型进行标记,Content-Type标记了数据的类型

3、是无状态的,指的是一次请求对应一次响应。如果为了有状态去维护上下文的话会占用资源,并且一次中间错误需要重传前边的信息

4、keep-alive可以使tcp保持连接


hazy的面试小笔记之计网(持续更新)相关推荐

  1. 机器学习算法岗:常见面试问题及解答整理,持续更新

    机器学习算法岗:常见面试问题及解答整理,持续更新 一.决策树ID3和C4.5的差别?各自优点? ID3算法: C4.5算法: 差异: 二.过拟合的原因及如何防止 三.几种模型( SVM,LR,GBDT ...

  2. 微信小程序——小程序开发经验总结(持续更新)

    微信小程序--开发经验总结(持续更新) 部署前端后,刷新页面没有更换效果 情境导入 vue项目打包生成了dist文件,然后进入了/www/server/nginx/html目录中,进行了文件更替 重启 ...

  3. C++学习笔记目录链接(持续更新中)

    学习目标: C++学习笔记目录链接(持续更新中,未完待续) 学习内容: 序号 链接 0 C++ 常见bug记录(持续记录中) 1 C++学习笔记1[数据类型] 2 C++学习笔记2[表达式与语句] 3 ...

  4. 自学it18大数据笔记-第二阶段hadoop-day11——会持续更新……

    笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,欢迎小伙伴们加qq或微博沟通交流(QQ,微博和博客同名) 笔记分享:自学it18大数据笔记-第二阶段hadoop-day11-- ...

  5. 自学it18大数据笔记-第二阶段Hive-day4——会持续更新……

    笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,欢迎小伙伴们加qq或微博沟通交流(QQ,微博和博客同名) 笔记分享:自学it18大数据笔记-第二阶段Hive-day4--会持续 ...

  6. NLP论文笔记合集(持续更新)

    NLP论文笔记合集(持续更新) 经典论文 参考文献 情感分析论文 关键词 综述 参考文献 非综述 参考文献 其他论文 参考文献 经典论文 2003年发表的文章1^11,NLP经典论文:NNLM 笔记 ...

  7. 【第十三届蓝桥杯备战】C/C++解题时的一些个人小技巧和注意事项(持续更新中)

    [第十三届蓝桥杯备战]C/C++解题时的一些个人小技巧和注意事项(持续更新中) 输入输出 数组 数据结构 1. 线段树 调试 References 先说一些废话:我最近觉得写算法题就像是打格斗游戏一样 ...

  8. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  9. 读《计算机网络》——深入浅出——以考研为目标学技术面试知识二刷计网——网络层

  10. 计算机专业面试知识点整理(计网与操作系统)

    计算机网络与网络安全 1.TCP/IP 五层网络架构 物理层:接收识别比特流,透明地传送比特流,数据单位是比特.规定了机械特性.电气特性.功能特性.过程特性. 数据链路层:在两个相邻结点间的链路上传送 ...

最新文章

  1. linux parted rpm,为Everest Linux构建QtParted的rpm包(四)
  2. Halcon与QT的联合编程(2)
  3. java process 重定向_java – 没有重定向StdOut的Processbuilder
  4. 这家中国AI公司,正在打入新加坡AI“腹地”
  5. python面试-10个Python面试常问的问题(小结)
  6. python中and与or的执行顺序-关联子查询的执行顺序是什么
  7. 【转载】yolo数据增强和评价方法
  8. fpga mysql_FPGA的一些琐碎知识整理
  9. 27、简述redis的有哪几种持久化策略及比较?
  10. Uploadify 3.2 参数属性、事件、方法函数详解以及配置
  11. python对于设计师有什么用-如果你有设计师朋友,请对他好一些...
  12. linux下查看当前shell方法。
  13. MYSQL之数据库高级SQL语句详细操作步骤详情介绍
  14. 为什么我不建议你裸辞做自媒体?
  15. HTML为什么称为超文本标记语言?< DOCTYPE html>什么意思?
  16. 计算机一个远程控制用户怎么回事,电脑不能被远程控制怎么办
  17. Gitlab访问突然出现 403 forbidden解决方案
  18. *转载*耶鲁大学校长给计算机学生的建议
  19. ecshop百度收录和ecshop百度快照规律
  20. Vuepress2版本打包报错:TypeError: Invalid value used as weak map key

热门文章

  1. OLT 的PON口拆分流程
  2. 黑苹果EFI引导启动文件,技嘉Z77P-D3+E3-1230 V2+蓝宝石RX560D+Macos10.15.x(5)
  3. ImageNet中1000类目标的编号所对应的具体类别
  4. 谷歌SEO专业术语指南
  5. 解决ssh_exchange_identification:read connection reset by peer 原因
  6. Linu中的网络配置(设置ip,网关(路由功能),dns),虚拟机上网
  7. 【历史上的今天】4 月 18 日:第一款交互式电子游戏;IBM 率先研发兆位芯片;硬件公司 Roland 成立
  8. JQ实现一个放大镜效果
  9. WebStorm调试
  10. 如何解决Windows10系统空闲时间CPU占用高,风扇很响的问题?