计算机网络八股文

2023-11-10

浏览器输入一个网站后,具体发生了什么

  1. 进行DNS解析操作,根据DNS解析结果查找到服务器IP地址
  2. 通过IP寻址找到服务器,并利用三次握手建立TCP连接
  3. 浏览器生成HTTP保温,发送HTTP请求,等待服务器响应
  4. 服务器处理请求,返回服务器
  5. 根据HTTP是否开启长链接,进行TCP挥手
  6. 浏览器根据静态资源进行页面渲染

了解REST API吗

REST API全称为表述性转移状态,即,利用HTTP中的get、post、put、delete以及其他的HTTP方法构成REST请求中的数据资源增删改查的操作

GET方法参数有大小限制吗

一般的HTTP协议并不限制参数大小,但是GET请求是在浏览器地址栏实现的,由于地址栏有长度限制,所以GET请求在浏览器实现层面有大小限制

GET与POST的区别

GET:向指定资源请求数据,刷新无害,请求参数是放在URL地址栏中,大小受到地址栏长度的限制

POST:向指定资源提交数据。刷新会导致重复提交。在post发送数据前会先将请求头发送给服务器确认,然后才会真正的发送数据。

转发和重定向的区别

转发:转发是服务器行为。服务器直接向目标地址URL进行访问,将访问结果发送给服务器,用户地址栏URL不变,转发页面和转发到的页面可以共享request中的数据。(因为还是同一次请求)

重定向: 重定向是浏览器行为,服务器通过状态码告知服务器进行重定向(301、302),浏览器接收到告知后重新请求新地址资源,用户URL栏改变,不能数据共享(因为是两次不一样的请求)

cookie与session

cookie: HTTP本身是无状态的,为了使其能处理更加复杂的逻辑,HTTP/1.1引入了cookie来保存状态信息。Cookie由服务器产生,在发送给客户端做保存,当用户携带Cookie访问时,HTTP请求就变得有状态了(服务器知道是谁请求了自己)。

Session 用于保存特定的客户端信息,保存在服务器中,一般客户端通过Cookie对服务器进行访问,服务器通过cookie中的session ID 对整个session中有关该客户端的数据进行访问。

OSI七层模型

OSI七层模型包括,从下到上: 物理层,数据链路层,网络层,运输层,会话层,表示层,应用层

TPC/IP五层协议

物理层,数据链路层,网络层,运输层,应用层

物理层的作用

解决两台物理机之间的通信,通过二进制比特流进行数据传输,将二进制流转换问高低电平,到达目的后再将高低电平转换为机器二进制码。 网卡,集线器工作在这一层、

数据链路层的作用

在不可靠的物理介质中提供可靠的传输,接收来自物理层的流数据,封装成帧,传输到上一层,反向的也能将上一层的数据帧,拆分成流发送到物理层。在这一层通过差错控制,流量控制等办法,使有差错的物理线路转变为无差错的数据链路。提供物理寻址的功能。交换机工作在这一层

网络层的作用

将网络地址翻译为对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由算法为分组选择通过子网的最佳路径。路由器工作在这一层

传输层的作用

传输层提供了进程之间的逻辑通信,传输层向高层用户屏蔽了下层的实现细节,使程序看起来向两个传输层之间进行交互的

会话层的作用

建立会话:身份验证,权限鉴定等;保持会话:对该会话进行维护,在会话维持期间二者可以随时使用这条会话传输数据;断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放掉这条会话

表示层的作用

对数据格式进行编译,对发送或接收到的数据根据应用层的特征进行处理,如处理为 文字,图片 等,还可以对压缩文件进行解压缩、对加密文件进行加密等

应用层的作用

提供应用层协议,如HTTP协议,FTP协议等等,方便程序之间进行通信v2-ab66abf58022af02f5638e6e3ad3ccca_720w.jpg

TCP与UDP的区别

TCP:作为面向流的协议提供可靠的、面向连接的运输服务,并且提供点对点通信

UDP:作为面向报文的协议,交付不可靠,不需要面向连接,不仅支持点对点,还支持多播和广播

为何TCP可靠

因为TCP是面向连接的,有三次握手建立连接,四次挥手关闭连接的机制。除此之外还有滑动窗口和拥塞控制算法,保留的超时重传的机制,对每份报文都存在校验,保证了报文的可靠性

为何UDP不可靠

因为UDP是无连接的,数据包发送出去后,就不再保留数据备份了,仅仅在IP数据报头加入了校验和复用。UDP没有客户端服务器的概念。UDP包发送方只考虑发送,而不考虑对方是否接真正收到。

TCP粘包现象

TCP是面向流的协议,发送的单位是字节流,因此会将多个小尺寸的数据封装在一个TCP报文中发送出去的可能性。表现就是,可能客户端调用了两个send,而服务器一个recv就把数据读取出来了

解决: 固定发送信息长度,使用分隔符等

TCP滑动窗口

滑动窗口是传输层进行流量控制的一种措施,通过告知发送方自己的窗口大小,从而控制发送方的发送速度,防止发送过快而淹没自己

TCP三次握手与四次挥手

0_131271823564Rx.jpg

为什么是三次握手?而不是两次或四次

这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致. 而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足"在不可靠信道上可靠地传输信息"这一需求所导致的. 请注意这里的本质需求,信道不可靠, 数据传输要可靠. 三次达到了, 那后面你想接着握手也好, 发数据也好, 跟进行可靠信息传输的需求就没关系了. 因此,如果信道是可靠的, 即无论什么时候发出消息, 对方一定能收到, 或者你不关心是否要保证对方收到你的消息, 那就能像UDP那样直接发送消息就可以了

TCP采用四次挥手关闭连接,为什么建立连接是三次挥握手,而关闭连接却是四次挥手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

简述HTTP协议

http协议是超文本传输协议。它是基于TCP协议的应用层传输协议,即客户端和服务端进行数据传输的一种规则。该协议本身HTTP 是一种无状态的协议。

简述DNS协议

DNS协议是基于UDP的应用层协议,它的功能是根据用户输入的域名,解析出该域名对应的IP地址,从而给客户端进行访问。

DNS解析过程

  1. 客户机向本地缓存查找,若没有找到,就将请求发送到本地DNS服务器
  2. 本地DNS会在本机进行查找,若没用找到,就会将前期发送到根域名的DNS服务器
  3. 根域名服务器解析根域名部分,将下一级DNS服务器地址的响应给客户机
  4. 客户机根据此地址访问此DNS服务器
  5. 递归访问,直到访问到最后有目标IP的DNS服务器
  6. DNS服务器将IP返回本地DNS服务器,本地DNS服务器进结果返回客户机
  7. 客户机通过IP访问目标主机,完成解析过程

http与https的区别

http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到ca申请证书,一般免费证书很少,需要交费。

简述TLS/SSL, HTTP, HTTPS的关系

SSL全称为Secure Sockets Layer即安全套接层,其继任为TLSTransport Layer Security传输层安全协议,均用于在传输层为数据通讯提供安全支持。

可以将HTTPS协议简单理解为HTTP协议+TLS/SSL

简述http1.0

规定了请求头和请求尾,响应头和响应尾(get post)

每一个请求都是一个单独的连接,做不到连接的复用

简述http1.1的改进

HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。

支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

服务端无法主动push

简述HTTP短连接与长连接区别

HTTP中的长连接短连接指HTTP底层TCP的连接。

短连接:客户端与服务器进行一次HTTP连接操作,就进行一次TCP连接,连接结束TCP关闭连接。

长连接:如果HTTP头部带有参数keep-alive,即开启长连接网页完成打开后,底层用于传输数据的TCP连接不会直接关闭,会根据服务器设置的保持时间保持连接,保持时间过后连接关闭。

简述http2.0的改进

提出多路复用。多路复用前,文件时串行传输的,请求a文件,b文件只能等待,并且连接数过多。引入多路复用,a文件b文件可以同时传输。

引入了二进制数据帧。其中帧对数据进行顺序标识,有了序列id,服务器就可以进行并行传输数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络八股文 的相关文章

随机推荐

  • python作业题

    1 输入三个坐标表示三角形的三个顶点 计算三角形的面积 import math x1 y1 x2 y2 x3 y3 eval input x1 y1 x2 y2 x3 y3 如果不在一条直线上就构成了三角形 if x1 x2 y1 y2 x
  • GMM-HMM在语音识别中的应用

    1 语音识别系统的基本结构 2 涉及算法 3 GMM高斯混合模型 3 1高斯混合模型的基本概念 高斯混合模型是指具有如下形式的概率分布模型 p y k 1k k y k p y arrowvert theta sum k 1 k alpha
  • docker redis单例安装

    环境 windows docker desktop 版本 19 03 12 1 下载redis的docker镜像 docker pull redis 6 0 8 2 设置docker共享目录 docker中的共享目录 即能将宿主的文件同步到
  • Pandas

    文章目录 1 什么是Pandas 2 Pandas的数据结构 2 1 Series 2 1 1 Series的创建 2 1 2 Series的属性 2 2 DataFrame 2 2 1 DataFrame的创建 2 2 2 DataFra
  • 在linux上odoo搭建

    一 配置Postgresql数据库 1 安装Postgresql root runner home sg os apt get install postgresql 2 配置postgresql 拷贝 var lib postgresql
  • Centos7五步安装Docker并解决docker官方镜像无法访问问题

    根据官方文档 https docs docker com install linux docker ce centos 搭建docker 1 卸载docker旧版本 sudo yum remove docker docker client
  • C++实现——小孩分糖果问题

    include
  • el-dialog组件实现可以拖拽移动功能

    面向百度编程的小白最近遇到一个el dialog实现拖拽移动的需求 翻了翻饿了么官网发现el dialog并没有关于这一块的属性方法 所以与大家分享一下有关的方法 首先新建一个js文件 directive js文件 用于详情对话框可移动 i
  • python4行代码实现九九乘法表

    九九乘法表是python的循环嵌套 两次利用range 相乘并输出 for i in range 1 10 for j in range 1 i 1 print sx s s j i i j end print
  • QThread线程的运行和退出

    关于QT退出线程 一直迷迷糊糊的 凑活着能用就行 出了问题总觉得莫名其妙 现在静下心来总结一下 感谢 QThread的用法 开启与退出 Qt QThread 这是我 见过解析最全面的一片文章 线程运行有两种方式 include
  • Python图像处理

    1 图像平滑 图像平滑是指受传感器和大气等因素的影响 遥感图像上会出现某些亮度变化过大的区域 或出现一些亮点 也称噪声 这种为了抑制噪声 使图像亮度趋于平缓的处理方法就是图像平滑 图像平滑实际上是低通滤波 平滑过程会导致图像边缘模糊化 图像
  • 关于FlashDB的应用-GD32F450上

    一 介绍 1 FlashDB是什么 是用于嵌入式的数据库存储 2 FlashDB谁整出来的 是armink 朱天龙 3 FlashDB依赖于什么 片内或者片外的Flash存储 FAL 4 FAL什么 FAL Flash Abstractio
  • 制作搭建宠物商城小程序,打造便捷的宠物购物体验

    随着宠物市场的不断发展 宠物商城小程序成为了满足宠物爱好者需求的重要工具 在现代社会 宠物已经成为人们生活中不可或缺的一部分 作为宠物爱好者 我们对于宠物食品 用品 医疗保健品等需求日益增长 而宠物商城小程序则为我们提供了一个便捷高效的购物
  • 在Matlab2018b中配置MinGW-w64 C/C++ 编译器

    在Matlab2018b跑代码时 输入mex setup 报错 错误使用 mex 未找到支持的编译器 您可以安装免费提供的 MinGW w64 C C 编译器 在 https jmeubank github io tdm gcc artic
  • 最详细的堆排序---排序算法,思路清晰动图讲解,五分钟搞懂!

    堆排序 同步微信公众号乐享Coding 欢迎你的关注 介绍 利用堆这种数据结构而设计的一种排序算法 堆排序是一种选择排序 它的最坏 最好 平均时间复杂度均为O nlogn 它是不稳定排序 对于堆排序 难点在于二叉树的顺序数组储存到大顶堆 小
  • psm倾向得分匹配法举例_基于R:使用“lalonde”数据集探讨倾向值匹配方法(PSM)的效果...

    1 导言 PSM 即倾向值匹配法 是处理社会研究反事实问题 以得到因果效应的重要技术之一 胡安宁 2020 概而言之 即先将多维的混淆变量降维成单维的倾向值 然后让接受实验处理的个体与未接受实验处理的个体基于倾向值进行匹配 当倾向值相同时
  • java——equals(),hashCode()重写与不重写区别

    1 总结 1 两个obj 如果equals 相等 hashCode 一定相等 2 两个obj 如果hashCode 相等 equals 不一定相等 2 不重写equals hashCode 不重写的时候 比较两个对象是否 相等 默认跟 效果
  • QT中实现当前时间实时更新

    如果是通过qt designer弄了个lcdNumber 想通过这个控件显示时间 那么你可以这么做 在 h文件中 1 添加头文件 include
  • 龙书学习笔记

    目录 第一章 引论 1 1 语言处理器 1 2 一个编译器的结构 1 2 1 词法分析 1 2 2 语法分析 1 2 3 语义分析器 1 2 4 中间代码生成
  • 计算机网络八股文

    浏览器输入一个网站后 具体发生了什么 进行DNS解析操作 根据DNS解析结果查找到服务器IP地址 通过IP寻址找到服务器 并利用三次握手建立TCP连接 浏览器生成HTTP保温 发送HTTP请求 等待服务器响应 服务器处理请求 返回服务器 根