当前位置:文档之家› 面试常见问题_计算机网络

面试常见问题_计算机网络

计算机网络 OSI与TCP/IP各层的结构与功能,都有哪些协议。

TCP/IP相似之处:基于独立的协议族,层的功能划分相似差异:ISO/OSI:从概念模型到协议实现;TCP/IP:从协议实现到概念描述层次数量差别;2.TCP与UDP的区别。

●UDP(UserDatagramProtocol):不提供复杂的控制机制,利用IP提供面向无连接的通信服务。

并且他是将应用程序发来的数据在收到那一刻,立刻按照原样发送到网络上的一种机制。

即使出现网络拥堵,UDP也无法进行流量控制等避免拥塞的行为。

如果传输途中出现丢包,也不负责重发。

甚至出现包的到达乱序时也没有纠正功能。

如果需要这些细节控制,要交给采用UDP的应用程序处理。

UDP将控制转移到应用程序,只提供作为传输层协议的最基本功能。

●TCP(TransmissionControlProtocol):TCP充分实现了数据传输时的各种控制功能,可以进行丢包的重发控制、对乱序的分包进行顺序控制。

此外,TCP作为一种面向有链接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

●TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

●如何加以区分使用?TCP用于传输层有必要实现可靠性传输的情况。

UDP主要用于对高速传输和实时性有较高要求的通信或广播通信。

区别:1)TCP面向连接;UDP是无连接的,发送数据之前不需要建立连接。

2)TCP提供可靠的服务。

TCP传送的数据无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付。

3)TCP面向字节流,实际上TCP把数据看成一串无结构的字节流;UDP是面向报文的,UDP 没有拥塞控制,网络出现拥塞不会使源主机的发送速率降低。

4)每一条TCP连接只能是点对点的;UDP支持一对一、一对多、多对一和多对多的交互通信5)TCP首部开销20字节;UDP首部开销8字节;6)TCP逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道3.TCP报文结构。

✧IP结构首部固定长度20字节,所有IP数据报必须具有。

可选字段,长度可变。

✓版本:占4位,值IP协议的版本,当前IP协议版本号为4(IPv4)✓首部长度:4位,表示最大数值是15个单位(一个单位4字节),首部最大值为60字节。

✓区分服务:未被使用。

✓总长度:占16位,值首部和数据之和的长度,单位为字节,数据报最大长度65535字节,总长度不超过最大传送单元MTU(1500)✓标识:占16位,它是一个计数器,用来产生数据报标识。

✓标志:占3位,只有前两位有意义。

标志字段最低位MF(morefragment)MF=1表示“还有分片”。

MF=0表示最后一个分片。

标志字段中间位DF(Don’tfragment)当DF=0允许分片。

✓片偏移:12位,较长的分组在分片后某片在原分组中的相对位置。

以8字节为偏移单位。

✓生成时间:TTL,8位,数据报在网络中可通过的路由器的最大值。

✓协议:8位,指出数据报写的数据所用的协议,以便目的主机的IP层将数据上交那个处理过程。

(TCP、UDP、ICMP、IGMP、OSPF)✓首部校验和:16位,只建安数据报的首部。

不采用CRC,采用简单计算方法✓源地址、目的地址:各占4字节✓TCP结构✓源端口、目的端口:各占两个字节。

端口是传输层与应用层的服务接口。

运输层的复用和分用功能都要通过端口实现。

✓序号:4字节。

本报文段所发送的数据的第一个字节的编号✓确认号:4字节,期望收到对方的下一个报文段的数据的第一个字节序号。

✓数据偏移:4位,表示首部长度,以4字节为计算单位。

✓保留:6位,未使用✓URG:为1时,表明紧急指针字段有效。

通知系统此报文段有紧急数据,应尽快传送(优先级高的数据)✓ACK:为1是确认号字段有效,为0时无效.✓PSH:接收到的PSH=1的报文,尽快交付应用进程,不等待整个缓冲区填满。

✓RST:为1表明TCP连接中出现差错,必须释放连接,然后重新建立。

✓SYN:为1表示这是一个连接请求或连接接受报文。

✓FIN:用来释放一个连接。

为1表明该报文段的发送端的数据已经发送完毕,要求释放连接。

✓窗口:2字节,用来让对方设置发送窗口的依据。

✓校验和:2字节,校验范围包括首部和数据。

在计算校验和时,要在TCP报文段前加12个字节的伪首部。

✓紧急指针:16位,指出本报文段中紧急数据有多少字节(放在本报文段数据的最前面)✓选项:MSS,告诉TCP缓存所能接受的报文段的数据字段的最大长度是MSS个字节。

✓填充4.TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用。

TimeWait作用:1)为了保证客户端发送的最后一个ACK报文能够到达B。

2)防止“已失效连接请求报文段”出现在本连接中。

经过2MSL(最大报文段生存时间),可以使本来连接持续时间内产生的所有报文段,都从网络中消失,这样就可以使下一个新的连接中不会出现就得连接请求报文。

5.TCP拥塞控制。

什么是拥塞?在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能变坏,这种情况叫拥塞。

拥塞控制就是防止过多的数据注入网络,使网络中的路由器或链路不至过载。

拥塞控制是一个全局性的过程,和流量控制不同,流量控制是点对点通信量的控制。

拥塞窗口cwnd:发送方维持一个拥塞窗口的状态变量。

其大小取决于网络的拥塞程度,并且动态变化。

发送方让自己的发送窗口等于拥塞窗口。

如果考虑接收方的接收能力,发送窗口可能小于拥塞窗口。

控制拥塞窗口原则:只要网络没有出现拥塞,窗口就增大一些,只要出现拥塞,窗口就减小一些。

✧慢开始与拥塞避免慢开始算法:刚开始发送报文是,设置cwnd=1,每收到一个新的确认,拥塞窗口加1,直到MSS。

慢开始门限状态变量ssthresh:当cwnd<ssthresh,使用慢开始算法;当cwnd>ssthresh时,停止使用慢开始改用拥塞避免算法;cwnd=ssthresh时,两种方法都可以。

拥塞避免算法:让拥塞窗口cwnd缓慢增大,每经过一个往返时间RTT把发送发的拥塞窗口cwnd 加1,不是加倍,是拥塞窗口cwnd线性增长。

当网络出现拥塞时:无论是慢开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞(根据是没有按时收到确认),把慢开始门限ssthresh设置为出现拥塞时发送方窗口的一般。

然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。

这样可以迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把挤压的分组处理完毕。

✧快重传和快恢复快重传:接收方每收到一个失序的报文段就立即发出重复确认。

让发送方及早知道有报文段没有到达接收方。

发送方只要一连接收到三个重复确认就立即重传对方尚未收到的报文段。

快恢复:当发送端收到连续三个重复的确认是,把慢开始门限ssthresh减半,但不执行慢开始算法。

由于发送方现在认为网络很可能没有发生拥塞(因为可以收到三个连续重复确认),因此不执行慢开始算法,而是将cwnd设置为慢开始门限ssthresh减半后的数值,开始执行拥塞避免算法。

发送窗口的上限值:发送方的发送窗口的上限值应当取为接收方rwnd和拥塞窗口cwnd中较小的一个。

当rwnd<cwnd时,是接收方的接收能力限制发送窗口的最大值。

当cwnd<rwnd时,是网络的拥塞限制发送方窗口的最大值。

✧随机早起检测RED路由器的队列维持两个参数,即队列长度最小门限THmin和最大门限THmaxRED对每个到达的数据报先计算平均队列长度Lav.Lav<THmin,则将新到达的数据报放入队列排队。

Lav>THmax,则将新到达的数据报丢弃。

Lav介于之间时,按照概率p将新到达的数据报丢弃。

6.TCP滑动窗口与回退N针协议。

✧TCP滑动窗口:发送方和接收方都会维护一个数据帧的序列,这个序列被称为窗口。

发送方的窗口大小由接收方确定,目的在于控制发送速度,以免接收方的缓冲不够大,导致溢出,同时流量控制可以避免网络拥塞。

✧1比特滑动窗口协议(停等协议):接收方和发送方的窗口大小都是1。

发送方每次只能发送一个,并且必须等待这个数据报的ACK,才能发送下一个。

ARQ(AutomaticRepeatreQuest)自动重传请求。

重传的请求是自动进行的。

接收方不需要请求发送方重传某个出错的分组。

✧回退N(Go-back-N)表示需要再退回来重传已发送的N个分组。

累计确认:不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。

优点是容易实现,即使确认丢失也不必重传。

缺点是:不能向发送方反映接收方已经正确收到的所有分组。

✧选择确认SACK:接收方收到了不连续的字节块。

如果这些字节块的序号在接收窗口内,那么接收方收下这些数据,但要把这些信息准确的告诉发送方,是发送方不再发送重复的数据。

✧选择重传协议:后退N协议的问题是,当有错误帧出现后,要重发之后的所有帧,会是网络状况恶化。

重传协议是用来解决这个问题的。

接收端总会缓存所有收到的帧,当某个帧出错时,值要求重传这一个帧。

缺点在于接收端要更多的缓存。

7.Http的报文结构。

方法:对所请求的对象进行的操作,实际上就是一些命令。

包括getpostoptionheadputdeletetraceconnectURL:所请求的资源的URL。

版本:HTTP的版本。

版本:HTTP的版本状态码:1XX表示通知信息,如请求收到了或正在进行处理。

2XX表示成功,如接受或知道了。

3XX表示重定向,表示要完成的请求还必须采取进一步行动。

4XX表示客户的差错,如请求中有错误的语法或不能完成。

5XX表示服务器的差错,如服务器失效无法完成请求。

8.Http的状态码含义。

状态码:1XX表示通知信息,如请求收到了或正在进行处理。

2XX表示成功,如接受或知道了。

3XX表示重定向,表示要完成的请求还必须采取进一步行动。

4XX表示客户的差错,如请求中有错误的语法或不能完成。

5XX表示服务器的差错,如服务器失效无法完成请求。

9.Httprequest的几种类型。

getpostoptionheadputdeletetraceconnect10.Http1.1和Http1.0的区别HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器也不跟踪每个客户也不记录过去的请求。

HTTP1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求(流水线),但服务器端必须按照收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样显着减少了所需时间。

相关主题