首页 > 其他分享 >计算机网络常见面试题总结(上)

计算机网络常见面试题总结(上)

时间:2024-05-14 12:29:53浏览次数:21  
标签:总结 面试题 HTTP 请求 TCP 计算机网络 DNS 服务器 WebSocket

计算机网络常见面试题总结(上)

OSI七层模型

应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。每一层都为上一层提供服务

TCP/IP四层模型

应用层,传输层,网络层,网络接口层,各层相互独立,为上层提供服务

常见的网络协议

应用层:HTTP,超文本传输协议,浏览器网页使用的就是HTTP请求加载的。SMTP,简单邮件发送协议,只复制发送电子邮件,不负责接收。FTP,文件传输协议,可以传输文件,但是是一种不安全的协议

传输层:TCP(传输控制协议),面向连接的可靠的数据传输服务。UDP(用户数据协议)提供无连接的数据传输服务,不保证可靠性,简单高效

网络层:IP(网际协议)定义数据包的格式,对数据包进行路由找到正确的目的地,IPv4和IPv6都有在使用

从URL到页面展示发生了什么

在浏览器输入指定的URL ==> 浏览器通过DNS协议,获取域名对应的IP地址 ==> 浏览器通过IP地址和端口号,向目标服务器发送一个TCP连接请求 ==> 建立TCP连接后,发送HTTP请求,请求获取网页数据 ==> 服务器收到HTTP请求并处理请求,响应给浏览器HTTP报文 ==> 浏览器接收到响应之后解析响应中的HTML,同时根据HTML中的其他URL获取相应资源知道网页全部加载 ==> 浏览器不需要和服务器通信时,可以主动关闭TCP连接,或者等待服务器的关闭请求。

HTTP状态码

1XX 接收的请求正在处理。2XX 请求正常处理完毕。3XX 重定向状态码。 4XX 客户端错误状态码。 5XX服务端后端错误状态码

HTTP和HTTPS区别

端口号:HTTP默认是80,HTTP默认是443。

URL前缀:HTTP前缀是http://,HTTPS是https://。

安全:HTTP运行再TCP之上,传输内容都是明文,客户端和服务端都无法验证对方身份。SSL/TLS运行在TCP上,HTTPS是运行在SSL/TLS上的HTTP协议,传输内容都使用了对称加密,对称加密的密钥用服务器证书进行了非对称加密,HTTPS安全性更高,但会耗费更多的服务器资源。

搜索引擎优化(SEO):搜索引擎通常会在搜索结果中展示HTTPS协议的网站,因为其安全性和隐私性。

HTTP1.1和HTTP1.0区别

连接方式:HTTP/1.0为短连接,HTTP/1.1为长连接,HTTP长短连接实际上是TCP协议的长短连接

状态响应码:HTTP1.1加入了大量的状态码,比如100 请求大资源前的预热请求,410,资源已被永久转移而且没有任何已知转发的地址

缓存机制:HTTP1.1有更多的缓存控制策略

带宽:HTTP1.0存在浪费带宽,不支持断点续传,HTTP1.1引入了range头域,运行只请求资源的某个部分,方便开发,充分利用带宽

Host头:HTTP1.1允许一个IP托管多个域名,实现虚拟主机的功能。

HTTP1.1和HTTP2.0区别

多路复用:HTTP2.0在同一连接上同时传输和响应多个请求,互不干扰,HTTP/1.1使用串行方式,需要独立的连接。HTTP2.0更加高效,减少了网络延迟,提高了性能。

二进制帧:HTTP2.0使用二进制帧传输数据,而HTTP1.1使用的是文本格式的报文,二进制帧更加紧凑和高效,减少了传输数据量和带宽消耗

头部压缩:HTTP1.1仅支持body压缩,HTTP2.0提供了对Header的压缩和对其压缩的算法HPACK算法,减少了网络开销

服务器推送:HTTP2.0支持服务器推送,当请求一个资源时,将其他资源一并推送给客户端,减少了客户端的请求次数和延迟,而HTTP1.1需要客户端自己去请求相关资源,、

HTTP2.0和HTTP3.0区别

传输协议:HTTP2.0是基于TCP协议实现的,HTTP3.0是QUIC实现的,提供与TLS/SSL相当的安全性,具有较低的连接和传输延迟,可以将QUIC看作UDP的升级版本,新增了比如加密重传等功能

连接建立:HTTP2.0需要TCP三次握手,TLS还需要握手,共需要大概3个RTT,HTTP3.0只需要0,1个RTT就可以建立连接

队头阻塞:HTTP2.0多请求复用一个TCP连接,一旦发生丢包,会阻塞所有的HTTP请求,HTTP3.0一个连接建立多个数据流,多个数据流之间独立不影响,本质上是多路复用加轮询

错误传输:HTTP3.0可以更快恢复很重传,HTTP2.0则需要依赖TCP的错误恢复机制

安全性:HTTP3.0QUIC HTTP2.0TLS,3.0能提供更好的安全性

HTTP如何保存用户状态

HTTP是一种无状态协议,使用session保存用户状态

URL和URI的区别

URI:统一资源标识符,可以唯一标识一个资源。URL:统一资源定位符,用于定位一个资源。URL可以理解为一种具体的URI。

GET和POST的区别

语义:GET通常用于获取资源,POST通常用于修改资源

幂等:GET幂等,多次重复请求不改变资源,POST不幂等,每次请求产生不同结果

格式:GET请求参数放在URL中(URL长度收到限制),POST请求参数放在请求体(body)中,body没有明确限制

缓存:GET请求会被浏览器获取网关,代理缓存,POST不会,需要实时的响应

安全性:如果使用HTTP协议的话都不安全,必须使用HTTPS来加密传输协议,GET比POST更容易泄露数据,因为其数据都在URL中

什么是WebSocket

是一种基于TCP的全双工通信协议,客户端和服务端可以同时发生和接收数据,可以在浏览器,很多编程语言,框架和服务器都能使用,WebSocket是应用层的协议,仅需一次握手,即可建立持久性连接,并进行双向数据通信。

常用应用场景,视频弹幕,实时消息推送,社交聊天

WebSocket和HTTP有什么区别

都是基于TCP的应用层协议

区别如下

WebSocket是双向实时通信,HTTP是单向通信协议,HTTP通信只能由客户端发起,服务端无法主动通知客户端。

WebSocket使用 ws:// 或 wss:// HTTP使用http:// 和 https://作为协议前缀

WebSocket可以支持扩展,用户可以扩展协议,支持自定义协议

WebSocket通信数据格式轻量,协议控制数据包头部小,网络开销小,HTTP网络开销大

WebSocket工作过程

  1. 客户端向服务器发送一个HTTP请求,请求头中包含Upgrade:websocket等字段,表示升级协议为WebSocket

  2. 服务端收到请求,如果支持该协议,回复HTTP101,响应头包含一些字段,表示升级成功

  3. 建立了一个WebSocket连接,以帧为单位进行双向数据传输,,接收端将帧重新组装成完整消息

SSE与WebSocket有什么区别

两者都可以建立服务端和浏览器之间的通信,实现服务端向客户端的消息推送

区别

  1. SSE基于HTTP,不需要特殊的服务器和协议,WebSocket需要单独的服务器处理协议

  2. SSE单向通信,只能服务端给客户端,WebSocket双向通信

  3. SSE无需引入组件,WebSocket传输数据需要二次解析

  4. SSE支持断线重连,WebSocket断线需要自己连接

  5. SSE只能传文本,二进制数据需要编码,WebSocket默认支持二进制数据

某些情况,不需要客户端发送数据,只需要服务器操作的更新,比如状态更新,股票行情,SSE更有优势,自动重新连接等

PING命令

网络诊断工具,用于测试主机间的连通性和网络延迟

ICMP Echo Request 请求报文:序列号,TTL

目标主机的域名或者IP地址

往返时间,发送请求报文到接收响应报文的时间

统计结果,丢包率,往返时间,最大,最小,平均等数据

如果无法得到正确的响应,连通性存在问题

PING命令的工作原理

基于网络层的ICMP,主要原理就是,在网络上发送和接收ICMP报文实现的

ICMP有类型字段,标识报文类型。查询报文类型:向目标主机发送请求期望响应。差错报文类型:向源主机发送错误信息,用于报告网络中的错误情况

PING用的属于查询报文类型,PING命令向目标主机发送ICMP Echo Request 类型为 8,如果连通正常,目标主机会返回ICMP Echo Reply

DNS

DNS是浏览器访问网址用到的第一个协议,用户结局域名和IP映射,浏览器DNS缓存,操作系统DNS缓存,路由器DNS缓存,如果都查询不到,就会使用到DNS,设计是分布式,层次数据库结构,是应用层协议,运行在TCP或UDP之上,端口为53

DNS服务器有哪些

自底向上分为以下几个层级

  • 根DNS服务器:提供TLD服务器的IP地址

  • 顶级域DNS服务器(TLD服务器):指域名后缀,如com,org,net,edu等TLD服务器提供了权威的DNS服务器IP地址

  • 权威DNS服务器:在因特网上具有公共主机的组织必须提供DNS记录,用于将主机名映射为IP地址

  • 本地DNS服务器:每个ISP都有本地的DNS服务器,将主机发的请求将请求转发到DNS层次结构中,严格讲不属于DNS层次结构

DNS劫持

是一种网络攻击,会修改DNS的解析结果,将用户的访问的域名指向错误的IP地址,导致用户无法访问正常的网站,或背引到恶意的网站

标签:总结,面试题,HTTP,请求,TCP,计算机网络,DNS,服务器,WebSocket
From: https://www.cnblogs.com/zwmBlog/p/18191063

相关文章

  • 一道需要仔细看的java面试题
    publicstaticvoidmain(String[]args){ Map<String,Object>resultMap=newHashMap<String,Object>(); Stringstr=MapUtil.getStr(resultMap,"yyyy"); System.out.println("++"+str); System.out.println(&......
  • 程序员的AI编程小助手,CodeGeeX在vscode,vs2022,IDEA2023使用体验总结
    程序员的AI编程小助手,CodeGeeX使用体验总结一、1.CodeGeeX是什么?能做什么?CodeGeeX是一个智能编程软件工具,目前CodeGeeX支持多种主流IDE,如VSCode、visualstudio2022,IntelliJIDEA、PyCharm、Vim等,同时,支持Python、Java、C++/C、JavaScript、Go等多种语言。CodeGeeX如何......
  • SQL经典面试题
    一、连续问题▶如下数据为蚂蚁森林中用户领取的减少碳排放量问题:找出连续3天及以上,减少碳排放量在100以上的用户。思路:① t1②t2③ t3④最终版 二、分组问题▶如下电商公司用户访问时间数据  (ts单位:秒)问题:某个用户连续的访问记录,如果时间间隔<60秒......
  • http及https模拟工具使用总结及客户端及服务端模拟代码样例
      一、工具介绍1、restclient-1.2.jar为客户端请求工具,可以调用任何的http及https的服务,可以任意调用https的网页地址(比入百度等)及postman模拟的服务。 2、HttpMockServerTool.jar只能模拟http的服务端,不能模拟https的。 需要自己造个返回响应文档 1.txt使用参考......
  • 程序员的AI编程小助手,CodeGeeX使用体验总结
    程序员的AI编程小助手,CodeGeeX使用体验总结:::warning一、1.CodeGeeX是什么?能做什么?CodeGeeX是一个智能编程软件工具,目前CodeGeeX支持多种主流IDE,如VSCode、visualstudio2022,IntelliJIDEA、PyCharm、Vim等,同时,支持Python、Java、C++/C、JavaScript、Go等多种语言。::......
  • vllm使用总结
    核心问题点60%内存存放参数,30%存放缓存的key,value向量,10%存放其他参数。LLM相对传统深度学习,对cache的管理较差。深度学习要求tensor内存连续,一般深度学习内存参数几乎不动,但LLM参数长度动态变化且周期无法预知导致cache内存碎片化共享内存做的比较差。LLMpredictnext......
  • THUSC总结PART1-比赛总结/题解
    第一次参加\(THU\)的营,战绩惨不忍睹.D1T1给出\(d\),\(n_1\cdotsn_d\),\(l\),求\[\sum_{i_1=0}^{n_1-1}\sum_{2_1=0}^{n_2-1}\cdots\sum_{i_d=0}^{n_d-1}\max(0,(i_1\oplusi_2\oplus\cdotsi_d)-l)\]其中\(d<=10\),\(n_i<=1e18\),\......
  • pyFlink 入门总结
    一整体流程1.初始化pyFlink执行环境2.加载数据集3.执行数据分析4.导出分析结果 二初始化执行环境2.1初始化参考代码如下frompyflink.tableimportEnvironmentSettings,StreamTableEnvironmentes=EnvironmentSettings.new_instance().in_batch_mode().bui......
  • CTF总结
    CTFmisccryptorepyjail总结MISC常见文件16进制头尾一些CTF题目的附件会去掉文件头,需要补全文件头,在一些文件里也可能隐藏多个文件,这就需要熟悉文件尾/文件头以方便提取或做判断,题目附件在下载的时候可能会没有文件后缀,无法判断是那种文件,由于各文件的16进制都有规定格式,在......
  • 代码随想录算法训练营第第二天 | 24. 两两交换链表中的节点 、19.删除链表的倒数第N
    两两交换链表中的节点用虚拟头结点,这样会方便很多。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.两两交换链表中的节点.html/***Definitionforsingly-li......