首页 > 编程知识 正文

接口测试常见面试题,计算机网络常见面试题大全

时间:2023-05-06 12:01:21 阅读:163109 作者:199

TCP协议1.OSI和TCP/IP各层的结构和功能、协议和作用。 OSI七层模型对应TCP/IP四层模型,只是划分方法不同。 APP应用层—提供APP应用层服务、文件传输(FTP )、电子邮件(SMTP )。 主要协议是HTTP )、DNS、telnet表示层)用于数据格式、代码转换和数据加密。 无协议会话层)断开或建立与另一触点的连接。 无协议传输层: TCP UDP网络层: IP icmp (主要用于ping )、OSPF (全局泛洪,主要用于IP网关)、数据链路层ARP (地址解析协议)、IP地址很容易记住呢。 还有APP应用层、传输层、网络层【包括物理层和数据链路层】2.TCP和UDP有什么区别? TCP是传输控制协议,提供面向连接并且可靠的字节流服务。 在实际数据传输之前,服务器和客户端进行三次握手,会话结束后结束连接。 UDP是用户数据报协议,未连接。 因为没有连接,没有超时重发机制,所以UDP传输速度很快。 主要用于视频传输。 但实际上,各大视频制造商都在使用HTTP协议,而HTTP是基于TCP的。 )、实时视频。 TCP确保数据按顺序到达,提供业务控制和拥塞控制,UDP无论网络是否拥塞,如果网络拥塞,则降低发送字节数。 因为TCP是连接的,所以服务是一对一的服务,但UDP可以是一对一、一对多(组播)或多对多。 3.TCP的3次握手和4次挥手过程,各状态的名称和含义,TIMEWAIT的作用。 TCP的三次握手过程? 为什么要采用三次握手,采用两次握手就可以了吗? 假设a是客户端,b是服务器端。 a首先向b发送连接请求报文段,此时设开头的同步位SYN=1,同时选择一个初始的编号x。 此时消息段无法携带数据。 此时,a将处于SYN_SENT (已同步发送)状态。 b接收到连接请求消息,同意建立连接,向a发出确认。 在确认消息中,SYN和ACK都被设置为1,确认号码为x 1,同时即使自己选择初始号码y,该消息也不能携带数据。 此时,b进入SYN_RCVD (同步接收)状态。 如果a接受了b的确认,也会向b确认。 此时,可以携带数据,a进入ESTABLISHED状态。 这就是三次握手的过程。 那握手两次会怎么样? a为什么要再发送一次确认呢? 这是为了防止失效的连接请求消息突然发送到b,从而导致错误。 作为异常之一,假设来自a的请求因为网络拥塞没有马上到达b,然后再发送请求,之后b做出响应,并且建立连接,之后连接被解除。 假设此时,来自a的第一个请求到达了b。 b误以为a再次请求连接,b建立了连接。 如果采用两次握手,此时将建立连接,a不会发送数据,浪费b的资源。 在TCP的4次挥手传输数据后,通信双方都可以解除连接。 现在,a和b都处于ESTABLISHED状态,a的应用进程向其TCP发出连接释放报文段,并自行关闭TCP连接。 a变为FIN_WAIT1(等待结束1 )状态。 然后,b确认进入CLOSE_WAIT (等待关闭)状态。 此时,TCP为半封锁状态,a已经不需要发送数据,如果b还没有发送数据,则b仍然接收。 a在收到b的确认后,进入FIN_WAIT2(等待结束2 )状态,等待b发出连接释放信息。 如果b没有已经向a发送的数据,b请求释放信息,b进入LAST_ACK (最终确认)阶段,等待a的确认。 a在收到b的请求后,发出确认,进入TIME_WAIT (超时)状态。 此时,连接尚未释放,等待计时器设定的时间2MSL后,a进入CLOSED状态。 为什么最后要等TIME_WAIT时间呢? (一)为了使最后的ACK到达b,防止丢失,b不能重发,a不能回答确认。

二是为了防止之前叙述的“无效的连接请求消息段“出现在连接中”。 A在发送最后的ACK后,如果经过2MSL的时间,就可以从网络上删除正式连接上发生的所有请求信息。

4.TCP拥塞控制拥塞控制是指避免向网络注入过多的数据,以避免网络中的路由器或链路过载。 TCP拥塞控制方法主要是慢启动、拥塞避免、高速重发和高速恢复。 慢启动意味着发送方首先设定cwnd=1,然后一次发送一个消息段,然后每次通过一个转移回合,拥塞串行cwnd将加倍,实际上并不慢,而是以指数方式增加。 另外,设定慢启动阈值,在cwnd阈值的情况下,切换为拥塞避免算法。 拥塞避免算法使cwnd按照线性规律缓慢增长。 如果网络发生延迟,阈值将减半,拥塞窗口将执行慢启动算法。 然后,提出快速重发和快速恢复,如果接收方收到失序的消息段,需要根据快速重发,尽快发送对未收到的消息段的重复确认。 快速恢复是指当拥塞的串行端口达到阈值时,不直接打开慢速启动算法,而是进行快速恢复。 快速恢复是指接收三个重复的确认。 此时,不执行低速开始算法,而是执行高速恢复。 也就是说,新阈值减半,直接进入避免拥塞阶段。

5 .滑动窗口和returnnpin协议的发送方和接收方维护数据帧序列,称为窗口。 拿出来

送方的窗口由接收方确定,目的在于控制发送速度,以免接受方缓存不够大,而导致溢出。这其实属于流量控制范畴。如图,接收方告诉发送方,建议滑动窗口为6,(否则太大一次发送太大,我接收缓冲区太小,处理不过来),然后发送方可以一次发送6个数据帧,假设已经发送了4,5,6,但是没收到关联的ACK,7,8,9则等待发送,如果此时发送端收到4号ACK,则窗口向右收缩,此时窗口就“滑动”了           滑动窗口协议是理论,可以用的是后退n针协议。发送方一次发送比如说10个帧,前两个针都返回了对应的ACK,数据帧2出现了错误,这时发送方被迫重新发送2-8这七个帧,这就是回退n帧协议。但是如果接收方已经接收到了3-8帧,只是丢失了2帧,全部重传太浪费网络条件了,所以有时候会选择重传丢失的的帧。这就是选择重传协议。            HTTP协议      HTTP报文结构         HTTP有两类报文:        1)请求报文        2)响应报文               HTTP的请求报文和响应报文由三个部分组成。       1)开始行。用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,在响应报文中的开始行叫做状态行       2)首部行,用于说明浏览器,服务器或报文主体的一些信息       3)实体主体     常见状态码和含义       状态码都是三位数字的,分为5大类共33种      1xx:表示通知消息,如请求收到了或者正在进行处理      2xx:表示成功,如接受或知道了      3xx:表示重定向,如要完成请求还要继续采取行动      4xx:表示客户的差错,如请求由错误的语法或不能完成      5xx:表示服务器差错      200:客户端请求成功      400:bad request 客户端请求错误      403:Forbidden 服务器收到请求,但是拒绝提供服务       404:Not found 请求资源不存在      500:Internal Server Error 服务器发生不可预期错误      503:服务器当前不能处理客户端请求     HTTP请求的几种类型       GET  请求读取由URL所标志的信息       HEAD 请求读取由URL所标志的信息的首部       POST 给服务器添加信息       PUT在指明的URL下存储一个文档       CONNECT 用于代理服务器     HTTP1.1和HTTP1.0的区别        HTTP1.0每请求一个文档就要建立TCP连接,有几次握手的时间花销,如果一个主页上有很多链接的对象需要依次进行连接,每次连接下载都要消耗这些开销。       HTTP1.1采用持续连接。所谓持续连接就是服务器在发送响应后仍然在一段时间内保持这条连接。使得后序的请求和响应报文都在这条连接上进行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。