大家都知道计算机网络对于我们计算机专业的人来说是很重要的,现在给大家整理了以下面试常问的希望对大家有所帮助。
1、OSI七层模型是什么?TCP/IP四层体系结构?五层协议体系结构?
物理层: 主要解决两台物理机之间的通信,通过二进制比特流的传输来实现,二进制数据表现为电流电压上的强弱,到达目的地再转化为二进制机器码。网卡、集线器工作在这一层。
数据链路层: 在不可靠的物理介质上提供可靠的传输,接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路。提供物理地址寻址功能。交换机工作在这一层。
网络层: 将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由选择算法为分组通过通信子网选择最佳路径。路由器工作在这一层。
传输层: 传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。
会话层: 建立会话:身份验证,权限鉴定等; 保持会话:对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局; 断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。
表示层: 对数据格式进行编译,对收到或发出的数据根据应用层的特征进行处理,如处理为文字、图片、音频、视频、文档等,还可以对压缩文件进行解压缩、对加密文件进行解密等。
应用层: 提供应用层协议,如HTTP协议,FTP协议等等,方便应用程序之间进行通信。
2、在浏览器中输入网址比如(www.juejin.cn)后执行的全过程?
①首先浏览器获取输入的域名www.juejin.cn
②浏览器向域名系统DNS请求解析www.juejin.cn的IP
③DNS解析出juejin服务器的IP地址
④浏览器与服务器建立TCP连接(默认端口80)
⑤浏览器发出HTTP请求,请求掘金页面
⑥服务器通过HTTP请求把首页文件发给浏览器
⑦TCP连接释放
⑧浏览器解析首页文件,展示web界面给用户
3、TCP简介
1、TCP(传输控制协议)是一种面向连接、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。
2、客户端在收发数据前要使用connect()函数和服务器建立连接,建立连接的目的是保证IP地址,端 口,物理链路等正确无误,为数据的传输开辟通道。
3、TCP建立连接时,要传输三个数据包,俗称三次握手。
4、UDP简介
UDP(用户数据报协议)是一种面向无连接、不可靠、面向报文、数据在传输前不需要建立连接
5、为什么TIME_WAIT状态需要经过2MSL(最大报文段的生存时间)才能返回到CLOSE状态?
虽然四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可 能最后一个ACK丢失,所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的 ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立 即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client 会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等 待2MSL。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。 如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
6、为什么连接的时候是三次握手,关闭的时候却是四次挥手?
因为当服务端收到来自客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文,其中ACK报文是用来应答的,SYN是用来同步的。
但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭socket,所以只能先回复一个ACK报文,告诉客户端,”你发起的FIN报文我收到了“。只有等我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。所以要四步。
7、TCP三次握手过程
第一次握手:客户端将标志位SYN置为1,随机产生一个值序列号seq=x,并将该数据包发送给服务端,客户端 进入syn_sent状态,等待服务端确认。 第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和 ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入syn_rcvd状态。 第三次握手:客户端收到确认后检查,如果正确则将标志位ACK为1,ack=y+1,并将该数据包发送给服务端,服务端进行检查如果正确则连接建立成功,客户端和服务端进入established状态,完成三次握手,随后客户端和服务端之间可以开始传输数据了。 8、为什么TCP握手需要三次,两次行不行?
不行。TCP进行可靠传输的关键就在于维护一个序列号,三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值。如果只是两次握手, 至多只有客户端的起始序列号能被确认, 服务器端的序列号则得不到确认。
9、TCP四次挥手过程
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入finwait1状态。 第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1,服务端进入Close_wait状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。 第三次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入Last_ack状态。 第四次挥手:客户端收到FIN后,客户端进入Time_wait状态,接着发送一个ACK给服务端,确认后,服务端进入Closed状态,完成四次挥手。 10、为什么TCP挥手需要4次
主要原因是当服务端收到客户端的 FIN 数据包后,服务端可能还有数据没发完,不会立即关闭。所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点时间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。之后客户端需要收到 FIN 包后发送 ACK 确认断开信息给服务端。
11、TCP的三次握手一定能保证传输可靠吗?
三次握手比两次更可靠,但也不是完全可靠,而追加更多次握手也不能使连接更可靠了,因此选择 了三次握手。 世界上不存在完全可靠的通信协议。从通信时间成本空间成本以及可靠度来讲,选择了“三次握手” 作为点对点通信的一般规则。 TCP粘包,拆包 TCP报文最大长度:1518Bytes 最小长度:64Bytes
12、简述TCP粘包现象
TCP是面向流协议,发送的单位是字节流,因此会将多个小尺寸数据被封装在一个tcp报文中发出去的可能性。 可以简单的理解成客户端调用了两次send,服务器端一个recv就把信息都读出来了。
13、TCP粘包现象处理方法
固定发送信息长度,或在两个信息之间加入分隔符。
14、为什么TCP可靠
TCP有三次握手建立连接,四次挥手关闭连接的机制。 除此之外还有滑动窗口和拥塞控制算法。最最关键的是还保留超时重传的机制。 对于每份报文也存在校验,保证每份报文可靠性。
15、为什么UDP不可靠
UDP面向数据报无连接的,数据报发出去,就不保留数据备份了。 仅仅在IP数据报头部加入校验和复用。 UDP没有服务器和客户端的概念。 UDP报文过长的话是交给IP切成小段,如果某段报废报文就废了。
16、TCP和UDP的区别
TCP是面向连接的,UDP是面向无连接的 UDP程序结构比较简单 TCP是面向字节流的,UDP是面向数据报的 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证
17、TCP拥塞避免控制算法
慢开始:由小到大逐渐增加拥塞窗口的大小,每接一次报文,cwnd指数增加。 拥塞避免:cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1。 快速重传:使发送方尽快进行重传,而不是等待超过重传计时器超时再重传。 接收方应立即发送确认; 收到失序报文时也要对已收到的报文段重复确认; 发送方一旦收到了3个连续的重复确认,就将相应的报文进行重传,而不是等待超时重传计时器超 时再重传; 对于个别丢失的报文段,发送方不会出现超时重传,也不会误认为出现了拥塞。 快速恢复:一旦发送方收到了3个重复确认,就知道丢失了个别报文段,于是不启动慢开始算法, 而执行快恢复算法;发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半,开始拥 塞控制算法。 也可以把拥塞窗口cwnd值再增大一些,即等于ssthresh+3。
18、简述TCP协议的滑动窗口
滑动窗口是传输层进行流量控制的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,防止发送方发送速度过快而导致自己被淹没。
19、HTTP请求的几种类型
GET 请求读取URL所标志的信息 HEAD 请求读取URL所标志的信息的首部 POST 给服务器添加信息 PUT 在指明的URL下存储一个文档 CONNECT 用于代理服务器
20、简述HTTP协议
http协议是超文本传输协议。它是基于TCP协议的应用层传输协议,即客户端和服务端进行数据传输的一种规则。该协议本身HTTP 是一种无状态的协议。
21、HTTP和HTTPS
超文本传输协议HTTP是明文传输,所有当请求被拦截时,用户输入的信息可能会被泄露 HTTP是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据 安全套接字层超文本传输协议为了保证数据安全的传输,HTTPS在HTTP的基础上加上了SSL/TLS的协议 HTTPS的作用主要有两种,一种是 建立一个信息安全通道,保证数据安全性,第二种是确认网站的真实性。 http与https的区别
http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。 https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到ca申请证书,一般免费证书很少,需要交费。
22、简述http状态码和对应的信息
1XX:接收的信息正在处理 2XX:请求正常处理完毕 3XX:重定向 4XX:客户端错误 5XX:服务端错误 常见错误码: 301:永久重定向 302:临时重定向 304:资源没修改,用之前缓存就行 400:客户端请求的报文有错误 403:表示服务器禁止访问资源 404:表示请求的资源在服务器上不存在或未找到。