首页 > 其他分享 >【面试突击】计算机网络面试实战(下)

【面试突击】计算机网络面试实战(下)

时间:2024-01-29 21:32:19浏览次数:34  
标签:实战 协议 HTTP 传输 握手 TCP 计算机网络 面试 加密

欢迎关注公众号【11来了】,及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书

在我后台回复「面试」可领取硬核面试笔记


Https 的工作原理

Http 的内容是明文传输的,铭文数据经过中间代理服务器、路由器、wifi 热点等多个物理节点,如果被劫持会导致传输内容完全暴露,因此需要对信息进行加密

Https 是一种通过计算机网络进行安全通信的传输协议,Https 经由 Http 进行通信,利用 SSL/TLS 来加密数据包,HTTPS 在内容传输的加密上使用的是 对称加密非对称加密 只作用在证书验证阶段

Https 的信任基于预先安装在操作系统中的证书颁发机构(CA)

那么通过 Https 进行通信的流程如下:

证书验证阶段

  1. 浏览器发起 Https 请求
  2. 服务端返回 Https 证书
  3. 客户端验证证书是否合法,如果不合法则提示告警

数据传输阶段

  1. 当证书验证合法后,在本地生成随机数
  2. 通过公钥加密随机数,并把加密后的随机数传输到服务端
  3. 服务端通过私钥对随机数进行解密
  4. 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

具体的一些细节可以了解一下,我也发现了一篇比较好的文章,可以看一下:彻底搞懂HTTPS的加密原理


为什么要网络分层?

网络分层可以简化复杂性,提高 模块化程度可维护性

分层之后,各个层次负责特定的功能,每一层不需要关心上层或下层的具体细节,如果需要修改,直接对某个层进行修改即可,不会影响到其他层,这种模块化设计可以使网络系统扩展性更强

并且在网络出现问题时,由于分层的设计,可以根据每一层的职责更容易地定位到问题所在的层次,而不需要了解整个系统




网络模型中各层都有哪些协议?

物理层和数据链路层比较偏向于底层,就不说了

网络层主要的协议有:

  • IP 协议:互联网协议(IP)是网络层的核心协议,负责将数据包从源地址传输到目的地址
  • ICMP 协议:互联网控制消息协议(ICMP)用于在网络设备之间传递控制消息,如错误报告、网络不可达、重定向等。它帮助网络设备诊断和处理网络问题
  • IGMP 协议:互联网组管理协议(IGMP)用于在主机和相邻的路由器之间建立多播组成员关系。它允许主机加入或离开多播组,以便接收特定类型的数据包
  • OSPF 协议:开放最短路径优先(OSPF)是一种内部网关协议(IGP),用于在自治系统(AS)内部的路由器之间交换路由信息,以确定最短路径

传输层主要的协议有:

  • TCP 协议:传输控制协议(TCP)提供了一种可靠的、面向连接的服务。它确保数据按顺序到达目的地,并且没有丢失或损坏
  • UDP 协议:用户数据报协议(UDP)提供了一种无连接、不可靠的服务。它比TCP更快,但不保证数据的完整性和顺序

会话层主要的协议有:

  • RPC(Remote Procedure Call):远程过程调用(RPC)允许程序在一个网络上的客户端请求另一个网络上的服务器执行特定的任务或操作
  • NCP 协议:网络控制协议(NCP)是早期网络协议,用于在客户端和服务器之间建立会话。它在现代网络中已经很少使用

表示层主要的协议有:

  • ASCII:美国信息交换标准代码(ASCII)是一种字符编码标准,用于表示文本数据
  • JPEG:联合图像专家组(JPEG)是一种用于压缩图像的格式,它提供了良好的图像质量和相对较小的文件大小
  • GIF:图形交换格式(GIF)是另一种图像格式,支持动画和透明背景

应用层:

  • FTP:文件传输协议(FTP)用于在网络上传输文件
  • Http:超文本传输协议(HTTP)用于网页的传输,是互联网上最常用的协议之一
  • SMTP:简单邮件传输协议(SMTP)用于发送电子邮件
  • SSH:安全外壳协议(SSH)提供了一种加密的网络服务,用于安全地访问远程计算机
  • DNS:域名系统(DNS)用于将人类可读的域名转换为IP地址,使得用户可以通过网址而不是IP地址来访问网站


三次握手

TCP 三次握手和四次挥手也是网络中比较常问的问题,因为两台机器之间需要通信就需要去建立 TCP 连接,建立 TCP 连接就是通过 TCP 三次握手建立的,通过四次挥手关闭 TCP 连接

TCP 三次握手和四次挥手的细节这里就不说了,之前写过一篇文章,TCP 三次握手和四次挥手


那么面试官可能会问,问什么一定要三次握手呢?

首先,简单来理解的话,通过三次握手,客户端和服务器端都可以证明自己的 接收发送 能力都是正常的,之后才可以正常通信

如果非要举出一个例子,在谢希仁版《计算机网络》中是这样说的,如果 client 发送的第一个 SYN 包并没有丢失,只是在网络中滞留,以致于延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文,但 server 收到此失效报文后,就误认为是 client 再次发出的一个新的连接,于是向 client 发出 SYN+ACK 包,如果不采用三次握手,只要 server 发出 SYN+ACK 包,就建立连接,会导致 client 没有发出建立连接的请求,因此不会理会 server 的 SYN+ACK 包,但是 server 却以为新的连接建立好了,并一直等待 client 发送数据,导致资源被浪费

那么为什么不四次握手呢?

因为三次握手后,建立正常通信就没有问题了,没有必要再继续握手,浪费网络资源



HTTP 是基于 TCP 还是 UDP 呢?

HTTP 协议在 HTTP/1.1 和 HTTP/2 版本都是 基于 TCP 协议 的,而 HTTP/3 是 基于 UDP 协议 传输的,可以根据浏览器查看 HTTP 协议到底是哪个版本的

F12 打开控制台,右键记得选择 Protocol,h2 则代表是 HTTP/2 版本的

【面试突击】计算机网络面试实战(下)_TCP


HTTP/1 、HTTP/2 和 HTTP/3 的区别如下:

  • HTTP/1(1997 年推出) 有连接无法复用、队头阻塞、协议开销大和安全因素等多个缺陷
  • HTTP/2(2015 年推出) 通过多路复用、二进制流与 Header 压缩等技术,极大地提高了性能,但是还是存在一些问题
  • HTTP/3(2022 年发布标准) 抛弃 TCP 协议,以全新的视角重新设计 HTTP。其底层支撑是 QUIC 协议,该协议基于 UDP,有 UDP 特有的优势,同时它又取了 TCP 中的精华,实现了即快又可靠的协议

虽然 HTTP/3 版本出现了,但是我们通过浏览器发现,常用的版本还是 HTTP/1.1 和 HTTP/2,为什么呢?(历史原因,比较老的系统使用的还是 1.1 和 2 版本较多,不过目前版本 3 也在逐步推广)

【面试突击】计算机网络面试实战(下)_TCP_02




标签:实战,协议,HTTP,传输,握手,TCP,计算机网络,面试,加密
From: https://blog.51cto.com/u_16186397/9472945

相关文章

  • 【TiDB 实战】使用 HyBench 测试 TiDB
    本文将介绍如何使用HyBench对TiDB进行测试,并简述HyBench适配TiDB的注意事项。Hybench是一款由中国软件评测中心、清华大学联合牵头,多家公司共同研发的HTAP数据库基准测试工具。TiDB是一款兼容MySQL的数据库,Hybench已在Gitee开源,支持MySQL数据库,通过修改HyBe......
  • 软件测试学习笔记丨Charles_Mock实战
    Charles_Mock实战1.电脑端抓包抓取雪球Web端搜索接口数据查看接口响应状态码与使用的协议版本查看请求参数与json格式的响应内容快速过滤雪球域名的接口进行弱网测试,选择弱网模式为256kbpsProxy→ThrottleSetting,然后选择EnableThrottling弱网前弱网后2.App抓包抓取......
  • 通达信【金钻天启2210】幅图选股公式 全新思路的超短线操作实战模式指标,成熟实战的思
    原公式某地售价1500元哦,完全加密,股海网和谐源码文件分享本指标一个幅图信号公式,一个选股公式全新思路的超短线操作实战模式指标,本指标是一款以低吸判断最近洗盘结束后,捕捉强势龙头信号介入点提示,自动过滤近期市场弱势股与不活跃股;成熟实战的思路策略设计,快速提升选股能力;贴近......
  • 面试官:说一下零拷贝技术的实现原理?
    零拷贝(Zero-copy)技术是一种计算机操作系统中用于提高数据传输效率的优化策略。在传统的数据传输过程中,需要将数据从一个缓冲区拷贝到另一个缓冲区,然后再传输给目标。这涉及到多次的CPU和内存之间的数据拷贝操作,会消耗CPU的时间和内存带宽。而零拷贝技术通过直接共享数据的内......
  • 每日一道面试题:Java中序列化与反序列化
    写在开头哈喽大家好,在高铁上码字的感觉是真不爽啊,小桌板又拥挤,旁边的小朋友也比较的吵闹,影响思绪,但这丝毫不影响咱学习的劲头!哈哈哈,在这喧哗的车厢中,思考着这样的一个问题,Java中的对象是如何在各个方法,或者网络中流转的呢?通过这个问题便引出了我们今天的主人公:序列化与反序列化!......
  • 【COM3D2Mod制作教程】第七章:实战!制作衣服部分(下)
    【COM3D2Mod制作教程】第七章:实战!制作衣服部分(下)制作袜子Mod体会了裙子Mod的制作流程,不知道你有没有被麻烦的权重和形态键搞崩溃过,现在做袜子难道还得在来一遍?而且裆下的权重和形态键因为靠的太近做起来也很麻烦。不用害怕,袜子有一个裙子没有的特征:它够简单,没用复杂的装饰布线,......
  • git笔试面试题
     收集整理几个git相关的笔试面试题 1、你们公司版本是如何管理的?细说一下 2、如何创建分支? 3、gitclone、gitpull、gitfetch、gitpush的区别是? 4、merge和rebase的区别是? 5、gitpull和gitpull--rebase的区别是? 6、代码提交到本地仓库后,发现提交日志写错了,如何修改? ......
  • 三级计算机网络大题60分——来自B站“吃饭不留名”(综合题4:sniffer抓包分析 10分)
    https://www.bilibili.com/video/BV1hE411x7RT?p=6&vd_source=2bddda168481f778f8f92561c7e55574方法技巧考点1考点2考点3考点4考点5考点6考点7考点8考点9考点9考点10考点11考点12考点13考点14考点15......
  • NGINX 实战操作(yarn-proxy)
    目录一、概述二、部署Hadoop环境三、部署yarn-proxyondocker1)部署docker2)部署docker-compose3)部署dnsmasq4)下载yarn-proxy5)修改配置6)开始部署7)通过subs_filter进行改进四、部署yarn-proxyonk8s一、概述NGINX代理是非常常见的,内网生成环境一般不让在本机直接访问,......
  • 面试简历指导 —— 转岗程序员都有哪些问题?EG3
    这是一个面试指导系列:#咸鱼-简历指导系列第1篇传送门:#面试简历指导——刚毕业大学生前端简历怎么写?EG1第2篇传送门:#面试简历指导——1年工作经验的前端简历怎么写?EG2背景在前篇都介绍了,就不重复了。有人问:怎么最后都好像开始做面试改简历、卖课这种割韭菜的活了??额。。。......