【计网】07.其他+总结
【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM
【嵌入式八股】二、计算机基础篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym
【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM
【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0
其他
其他
114.抓包工具
- Wireshark:Wireshark 是一个功能强大的开源网络分析工具,可捕获和分析各种网络数据包。它支持多种操作系统,包括Windows、macOS和Linux。
- tcpdump:tcpdump 是一个基于命令行的网络抓包工具,可在多种Unix-like操作系统上使用。它能够以文本形式显示捕获的数据包,并提供丰富的过滤功能。
- Fiddler:Fiddler 是一个跨平台的网络调试代理工具,可以用于捕获和分析HTTP和HTTPS流量。它提供了一个用户友好的图形界面和丰富的调试功能。
- Charles:Charles 是一款跨平台的代理工具,可用于捕获和分析HTTP和HTTPS流量。它支持多种操作系统,并提供了SSL代理和重写功能,方便进行网络调试和修改流量。
- Burp Suite:Burp Suite 是一套用于渗透测试和应用程序安全评估的工具,其中包含一个功能强大的抓包工具。它可以捕获和修改HTTP和HTTPS流量,并提供各种安全测试和漏洞扫描功能。
115.查看网络状态
要查看网络状态,您可以使用以下方法之一:
- 使用命令行工具(如Windows的命令提示符或macOS和Linux的终端)来执行网络状态命令。以下是一些常用的命令:
- 在Windows上,您可以使用
ipconfig
命令来查看本地网络适配器的IP地址、子网掩码和网关等信息。使用ping
命令可以测试与特定主机的连接。 - 在macOS和Linux上,可以使用
ifconfig
命令来查看网络接口的配置信息。使用ping
命令可以测试与特定主机的连接。此外,您还可以使用netstat
命令来查看当前的网络连接和端口占用情况。
- 使用图形界面工具来查看网络状态。大多数操作系统都提供了图形化的网络管理工具,您可以通过它们来查看网络连接、IP配置和其他相关信息。例如,在Windows上,您可以打开“控制面板”并选择“网络和Internet”>“网络和共享中心”,在此处可以查看当前网络连接的状态和详细信息。在macOS上,您可以打开“系统偏好设置”并选择“网络”,以查看当前网络接口的状态和配置。
- 使用网络监控工具。有一些第三方工具可以提供更详细和实时的网络状态信息。例如,PingPlotter 是一个用于监控网络连接和测试延迟的工具,它可以显示路由跟踪和网络质量图表等信息。
116.ping 和 traceroute
ping
和 traceroute
是常用的网络诊断工具,用于测试网络连接和跟踪数据包的路径。
ping
命令用于测试与目标主机之间的连接,并测量往返时间(Round-Trip Time,RTT)。它发送一个ICMP回显请求(ping请求)到目标主机,并等待目标主机返回ICMP回显应答(ping响应)。通过检查响应时间和丢包情况,可以评估与目标主机之间的网络延迟和可达性。
使用方式:
ping <目标主机或IP地址>
示例:
ping www.example.com
traceroute
命令用于跟踪数据包从本地主机到目标主机的路径。它通过发送一系列的UDP数据包,每个数据包在网络中经过不同的路由器,从而确定数据包的路径和经过的网络节点。traceroute
命令会显示每个节点的IP地址和往返时间。
使用方式:
traceroute <目标主机或IP地址>
示例:
traceroute www.example.com
请注意,具体的命令和输出格式可能因操作系统而有所不同。在Windows系统上,ping
和 tracert
是对应的命令。在macOS和Linux系统上,ping
和 traceroute
是常用的命令。执行这些命令时,可以使用目标主机的域名或IP地址。
TCP与HTTP
117.一个TCP连接可以对应几个HTTP请求?
一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?
如果Connection为close,则一个TCP连接只对应一个HTTP请求。
如果Connection为Keep-alive(持久连接),则一个TCP连接可对应一个到多个HTTP请求。
HTTP/1.0中,每个HTTP请求都需要单独建立一个TCP连接,这样会带来额外的开销和延迟。
HTTP/1.1中,引入"持久连接"+Pipeline流水线机制。持久连接机制允许客户端和服务器在同一个TCP连接上进行多次HTTP请求和响应,从而减少了TCP连接的建立和关闭的次数,提高了性能和效率。HTTP/1.1在RFC 2616中规定:一个支持持久连接的客户端可以在一个连接中发送多个请求(不需要等待任意请求的响应)。收到请求的服务器必须按照请求收到的顺序发送响应。Pipeline本身存在一些问题(首个请求耗时过长,阻塞其他请求)。所以,浏览器默认关闭该功能。
HTTP/2.0提供了多路复用技术Multiplexing,一个TCP可以并发多个HTTP请求(理论无上限,但是一般浏览器会有TCP并发数的限制)。
结论:HTTP/1.1中存在Pipeline技术支持一个连接发送多个请求,但存在弊端,浏览器默认关闭。HTTP/2.0中通过多路复用技术支持一个TCP连接中并发请求多个HTTP。
118.浏览器对同一 Host 建立 TCP 连接到的数量有没有限制?
浏览器对同一Host 建立 TCP 连接到的数量是有限制的,这是为了避免浏览器过度消耗资源,导致性能下降。
不同的浏览器对于同一 Host 建立TCP连接的数量的限制是不同的。浏览器会根据服务器的性能和网络情况来调整并发连接数的数量,以确保浏览器的性能和网络的负载平衡。
例如,早期版本的浏览器(如IE6)只支持最多两个TCP连接,而现代的浏览器(如Chrome、Firefox、Safari等)则支持更多的并发连接数。在HTTP/1.1中,客户端可以通过修改请求头部中的"Connection"字段来控制TCP连接的使用情况,例如可以设置"Connection: keep-alive"来启用持久连接,从而减少TCP连接的建立和关闭次数,提高性能和效率。
如果在同一页面中存在大量的资源(如图片、CSS、JS等)需要从同一Host中获取,浏览器可能会对TCP连接数量进行限制,这时可以使用CDN等技术来解决这个问题。
119.浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?
在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。每次请求都会重新建立和断开 TCP 连接,代价过大。
在HTTP/1.1和2中,在建立了一个TCP连接后,浏览器并不会在一个HTTP请求完成后立即断开连接。浏览器默认使用了Connection: keep-alive持久连接,也就是说,在同一个TCP连接中,多个HTTP请求和响应可以复用这个连接,这样可以减少TCP连接的建立和关闭次数,提高网络传输的效率和性能。当HTTP请求中包含了"Connection: close"字段时,表示这个请求完成后应该关闭TCP连接。
数据链路层
120.以太网的帧格式
其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。可在shell中使用ifconfig命令查看,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧尾是CRC校验码。
以太网中的类型字段指的是接下来数据的类型,常见的类型有以下几种:
- IPv4类型(0x0800):表示接下来的数据是IPv4协议数据。
- ARP类型(0x0806):表示接下来的数据是ARP协议数据。如果只知道IP地址,想要获得相应的MAC地址就需要使用RARP协议。
- ARP类型(0x0835):表示接下来的数据是ARP协议数据。如果只知道MAC地址,想要获得相应的IP地址就需要使用RARP协议。
- VLAN类型(0x8100):
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础【本专栏】 3.硬件篇 4.嵌入式Linux (建议PC端查看)