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

news/2024/5/18 16:37:17 标签: udp, 网络

网络分层结构

计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。

TCP/IP五层模型:应用层、传输层、网络层、数据链路层、物理层。

  • 应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。
  • 传输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。
  • 网络:选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。
  • 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
  • 物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。

TCP有哪些特点?

  • TCP是面向连接的传输层协议。
  • 每一条TCP连接只能有两个端点。
  • TCP提供可靠交付的服务。
  • TCP提供全双工通信
  • 面向字节流

TCP和UDP的区别?

  1. TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
  2. TCP提供可靠的服务;UDP不保证可靠交付。
  3. TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的。
  4. TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。
  5. 每一条TCP连接只能是一对一的;UDP支持一对一、一对多、多对一和多对多的通信方式。
  6. TCP首部开销20字节;UDP的首部开销小,只有8个字节。

HTTP协议的特点?

  1. HTTP允许传输任意类型的数据。传输的类型由Content-Type加以标记。
  2. 无状态。对于客户端每次发送的请求,服务器都认为是一个新的请求,上一次会话和下一次会话之间没有联系。
  3. 支持客户端/服务器模式

HTTP报文格式

HTTP请求由请求行、请求头部、空行和请求体四个部分组成。

  • 请求行:包括请求方法,访问的资源URL,使用的HTTP版本。GETPOST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE
  • 请求头:格式为“属性名:属性值”,服务端根据请求头获取客户端的信息,主要有cookie、host、connection、accept-language、accept-encoding、user-agent
  • 请求体:用户的请求数据如用户名,密码等。

HTTP响应也由四个部分组成,分别是:状态行、响应头、空行和响应体

  • 状态行:协议版本,状态码及状态描述。
  • 响应头:响应头字段主要有connection、content-type、content-encoding、content-length、set-cookie、Last-Modified,、Cache-Control、Expires
  • 响应体:服务器返回给客户端的内容。

POST和GET的区别?

  • GET请求参数通过URL传递,POST的参数放在请求体中。
  • GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把请求头和请求体一并发送出去;而对于POST,浏览器先发送请求头,服务器响应100 continue,浏览器再发送请求体。
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

HTTP长连接和短连接?

HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

HTTP/1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。

HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗。

DNS 的解析过程?

  1. 浏览器搜索自己的DNS缓存
  2. 若没有,则搜索操作系统中的DNS缓存和hosts文件
  3. 若没有,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询请求,最终返回IP地址给本地域名服务器
  4. 本地域名服务器将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来
  5. 操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来
  6. 浏览器得到域名对应的IP地址

Cookie和Session的区别?

  • 作用范围不同,Cookie 保存在客户端,Session 保存在服务器端。
  • 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
  • 隐私策略不同,Cookie 存储在客户端,容易被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
  • 存储大小不同, 单个 Cookie 保存的数据不能超过 4K;对于 Session 来说存储没有上限,但出于对服务器的性能考虑,Session 内不要存放过多的数据,并且需要设置 Session 删除机制。

了解网络编程协议吗?客户端发送给服务器的请求,怎么确定具体的协议?

了解,客户端发送给服务器端的请求,可以根据统一资源定位系统(uniform resource locator,URL)来确定具体使用的协议。

补充

一个完整的URL包括–协议部分、网址、文件地址部分。协议部分以//为分隔符,在interner中,我们可以使用多种协议:

HTTP——HyperText Transfer Protocol(超文本传输协议)

FTP——File Transfer Protocol(文件传输协议)

Gopher——The Internet Gopher Protocol(网际Gopher协议)

File——本地文件传输协议

HTTPS——安全套接字层超文本传输协议(http的安全版)

例如百度网址:https://baidu.com,可以看出使用的是https协议。

IP协议包含哪些字段?

IP所包含字段结构图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNPVnJ8D-1676378262071)(img/BD33841E8034815033F8177D23000A45.png
)]

IP协议包含字段如下:

​ **4位版本号:**指定IP协议的版本,对于IPv4来说就是4

​ **4位头部长度:**IP头部长度有多少个4字节,所以头部最大长度就是15*4=60字节

​ **8位服务类型:**3位优先权(已弃用),4位TOS字段,1位保留字段(必须设置为0)。4为TOS为:最小延时,最大吞吐量,最高可靠性,最小成本,这四个只能选择一个

​ **16位总长度:**IP数据报整体占多少字节

​ **16为标识:**唯一的标识主机发送的报文,IP报文在数据链路层被分片,那么每一个片中的标识都是相同的

​ **3位标志字段:**第一位保留,第二位置1表示进制分片(报文长度超过MTU,丢弃报文),第三位更多分片,最后一个分片是1,其他是0

​ **13位分片偏移:**相对于原始IP报文开始处的偏移

​ **8位生存时间:**数据报到达目的地的最大报文跳数,每经过一个路由,TTL-=1,一直到0都没有到达目的地,报文丢弃。

8位协议:表示上层协议类型,把IP交给TCP还是UDP,其中ICMP是1,TCP是6,UDP是17

​ **16位头部校验和:**使用CRC校验,鉴别头部是否损坏

​ **32位源地址和32位目标地址:**表示发送端和接收端

应用层都包含什么协议?

应用层包含的协议有DNS、FTP、SMTP、HTTP、SNMP、Telnet等,其作用分别如下:

  1. 域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。
  2. 文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
  3. 简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。
  4. 超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。
  5. 简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
  6. 远程登录协议(Telnet):用于实现远程登录功能。

http://www.niftyadmin.cn/n/66968.html

相关文章

Linux Shell脚本讲解

目录 Shell脚本基础 Shell脚本组成 Shell脚本工作方式 编写简单的Shell脚本 Shell脚本参数 Shell脚本接收参数 Shell脚本判断用户参数 文件测试与逻辑测试语句 整数测试比较语句 字符串比较语句 Shell流程控制 if条件判断语句 单分支 双分支 多分支 for循环语句…

react路由详解

在学习react路由之前,我们肯定需要安装路由。大家先运行如下命令安装路由。安装之后随我一起探索react路由。 安装 版本v6 npm i react-router-dom -S 页面准备 创建两个文件夹 pages和 router pages文件夹里面放的是页面 router文件夹里面是进行路由配置 路由…

Java 入门教程||Java String类||Java StringBuffer 和 StringBuilder 类

Java String类 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。 创建字符串 创建字符串最简单的方式如下: String greeting "Hello world!";在代码中遇到字符串常量时,这里的值是 …

突破压缩极限的AI语音编解码器

I. Speech Codecs语音编码的目的是在保持语音质量的前提下尽可能地减少传输所用的带宽,主要是利用人的发声过程中存在的冗余度和人的听觉特性达到压缩的目的。经过了多年的发展,目前语音编解码器大致可以分为以下几类:波形编码,将…

JavaScript HTML DOM 集合(Collection)

HTML DOM 集合(Collection) 是 JavaScript 中一个重要的概念,它代表了一组 HTML 元素,并提供了访问和操作这些元素的方法。在本文中,我们将详细介绍 HTML DOM 集合 (Collection) 的作用和用途。 HTML DOM 集合 (Collection) 概述 HTML DOM …

nginx location和rewrite配置语法

nginx location和rewrite正则匹配表达式 文章目录1、nginx支持的正则表达式1.1、支持的正则表达1.2、常用匹配修饰符2、location配置示例和优先级3、rewrite3.1、rewrite使用语法3.2、rewrite常用判断表达式3.3、rewrite示例1、nginx支持的正则表达式 1.1、支持的正则表达 ^ …

[CVPR‘22] EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks

paper: https://nvlabs.github.io/eg3d/media/eg3d.pdfproject: EG3D: Efficient Geometry-aware 3D GANscode: GitHub - NVlabs/eg3d总结: 本文提出一种hybrid explicit-implicit 3D representation: tri-plane hybrid 3D representation,该方法不仅有…

yaml配置文件

最近在写代码,发现随着网络的增加,代码变得越来越冗余,所以就想着写一个网络的配置文件,把网络的配置放到一个文件中,而不再主函数中,这样代码开起来就好看了,调试的时候也方便了。之前写过一篇…