计算机网络八股文

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

  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,服务器就可以进行并行传输数据。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络八股文 计算机网络是现代信息技术的核心基础之一,它涉及了计算机通信和数据传输技术等多个方面。下面将从网络体系结构、网络协议、网络安全和网络性能等方面对计算机网络进行阐述。 首先,计算机网络的体系结构包括了物理层、数据链路层、网络层、传输层和应用层。物理层负责传输比特流,数据链路层提供可靠的点对点数据传输,网络层负责数据包的路由与转发,传输层提供端到端的可靠或不可靠的数据传输服务,而应用层则为用户提供网络应用服务。 其次,网络协议是计算机网络中的重要组成部分。常见的网络协议包括TCP/IP协议、HTTP协议、FTP协议等。TCP/IP协议是互联网的核心协议,它包括了IP地址分配、路由选择和数据传输等功能。HTTP协议用于在Web浏览器与Web服务器之间传输超文本数据,FTP协议用于文件传输。 此外,网络安全是计算机网络中不可忽视的问题。常见的网络安全措施包括防火墙、入侵检测系统和加密技术等。防火墙可以过滤网络流量,保护内部网络免受外部攻击;入侵检测系统可以检测和阻止恶意行为;加密技术可以保护数据的机密性和完整性。 最后,网络性能是衡量计算机网络好坏的重要指标之一。网络性能包括带宽、时延、吞吐量和丢包率等。带宽是指网络传输数据的能力,时延是数据从发送到接收所需的时间,吞吐量是单位时间内传输的数据量,丢包率是指在传输过程中丢失的数据包比例。 综上所述,计算机网络是一门涉及广泛的学科,它的体系结构、协议、安全和性能等方面都需要深入研究和理解。通过不断提高网络技术和加强网络安全措施,我们可以更好地应对计算机网络发展带来的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值