面试常见问题计算机网络Word格式文档下载.docx
《面试常见问题计算机网络Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《面试常见问题计算机网络Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层
比特传输
实现相邻节点之间比特数据流的透明传送,尽可能屏蔽具体传输介质和物理设备的差异。
建立、维护和拆除物理链路连接
ISO2110,IEEE802,IEEE802.2
TCP/IP
TCP/IP模型
HTTP:
超文本传输
FTP:
文件传输
SMTP:
电子邮件
Telent:
远程登录
SNMP:
网络管理
DNS:
域名管理
使源主机和目标主机对等实体之间会话,端到端链接。
传输控制协议TCP(链接):
误差、流量控制
用户数据报协议UDP(无连接)
IP层
网络间属地传输主要依赖于网间网层中的IP协议
IP(无连接的最佳传送路由选择):
1.管理Internet中地址;
2.路由选择;
3.数据报分片与重组
ICMP:
报告差错、传输控制信息;
ARP:
将IP地址转换成物理地址;
RARP:
物理地址到IP地址
网络接口层
用某种协议与网络连接,以便通过网络传递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时,是接收方的接收能力限制发送窗口的最大值。
rwnd时,是网络的拥塞限制发送方窗口的最大值。
✧随机早起检测RED
路由器的队列维持两个参数,即队列长度最小门限THmin和最大门限THmax
RED对每个到达的数据报先计算平均队列长度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的报文结构。
方法:
对所请求的对象进行的操作,实际上就是一些命令。
包括getpostoptionheadputdeletetraceconnect
URL:
所请求的资源的URL。
版本:
HTTP的版本。
HTTP的版本
状态码:
1XX表示通知信息,如请求收到了或正在进行处理。
2XX表示成功,如接受或知道了。
3XX表示重定向,表示要完成的请求还必须采取进一步行动。
4XX表示客户的差错,如请求中有错误的语法或不能完成。
5XX表示服务器的差错,如服务器失效无法完成请求。
8.Http的状态码含义。
9.Httprequest的几种类型。
getpostoptionheadputdeletetraceconnect
10.Http1.1和Http1.0的区别
HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器也不跟踪每个客户也不记录过去的请求。
HTTP1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求(流水线),但服务器端必须按照收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样显著减少了所需时间。
HTTP1.0不支持Host请求头字段,在HTTP1.1中增加了Host请求头字段,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
HTTP1.1还提供了与身份认证、状态管理和Cache缓存机制相关的请求头和响应头。
11.Http怎么处理长连接。
判断长连接是否需要结束?
Keep-Alive:
timeout=20,表示这个TCP通道可以保持20秒。
另外还可能有max=XXX,表示这个长连接最多接收XXX次请求就断开。
对于客户端来说,如果服务器没有告诉客户端超时时间也没关系,服务端可能主动发起四次握手断开TCP连接,客户端能够知道该TCP连接已经无效;
另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。
12.Cookie与Session的作用于原理。
13.电脑上访问一个网页,整个过程是怎么样的:
DNS、HTTP、TCP、OSPF、IP、ARP。
14.Ping的整个过程。
ICMP报文是什么。
✧ICMP(InternetControlMessageProtocol)报文:
网际控制报文协议。
通过它可以知道故障的具体原因和位置。
✧由于IP不是为可靠传输服务设计的,ICMP的目的主要是用在TCP/IP网络中发送出错和控制消息。
ICMP数据包是封装在IP数据包里的。
ICMP的错误报告只能通知出错数据报的源主机。
✧ICMP报文三种:
差错报告(IP不可靠传输)、控制报文(用于重定向)、请求应答报文(测试路由是否可达ping)。
Ping的整个过程:
1)同一网段内:
如果主机A要去ping主机B。
主机A就要查询自己的MAC地址表,如果没有找到B的MAC地址,就会向外发送一个ARP广播包。
首先,交换机会收到这个报文,交换机有学习MAC地址的功能,他会检索自己有没有保存主机B的MAC地址,如果有,就返回给主机A,没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是找自己,就丢弃报文。
主机B收到报文后,就立即响应,发送自己的MAC地址,同时学习到主机A的MAC地址,并按照同样的ARP报文格式返回主机A。
这时,主机A学到了主机B的MAC地址,就把这个MAC地址封装到ICMP协议的二层报文中向B发送,B收到这个报文后,发现是A的ICMP回显请求,就按同样格式返回一个值给A,完成ping.
2)不同网段内
主机A要ping主机C,两者不在一个网段,A需要找网关转发,为了学习网关的MAC地址,A发送一个ARP广播,学到后,再发封装ICMP报文给网关路由器。
路由器接收到A的ICMP报文,查找路由表的目的IP,得到一个出口指针,加上自己的MAC地址向主机C转发。
路由器端口2和主机C相互学习MAC地址,路由器2端口转发非1端口,1已经学到A的MAC地址,将ICMP的回显请求回复。
15.C/S模式下使用socket通信,几个关键函数。
✧什么是Socket?
WinSock(WindowsSockets)是处理网络通信的WindowsAPI。
许多函数与在BSD中使用的Berkely套接字函数是相同的。
套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程。
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。
为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
区分不同应用程序进程间的网络通信和连接,主要有3个参数:
通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。
Socket原意是“插座”,通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket类型;
传输套接字主要有两类:
流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。
流类型的套接字是为需要可靠连接的应用程序设计的。
这些程序通常使用连续的数据流。
用于这种类型套接字的协议是TCP,适合FTP这类实现。
流套接字是最常用的,一些众所周知的协议如HTTP、TCP、SMTP、POP3等都是基于面向流的协议。
数据报套接字使用UDP做为下层协议,是无连接的,有一个最大缓冲区大小(数据包大小的最大值)。
它是为那些需要发送小数据包,并且对可靠性要求不高的应用程序设计的。
与流式套接字不同,数据报套接字并不保证数据会到达终端,也不保证它是以正确的顺序到来的。
数据报套接字的传输效率相当高,它经常用于音频或视频应用程序。
对这些程序来说,速度比可靠性更加重要。
二、基本socket函数
1、socket函数
包含头文件<
sys/socket.h>
功能:
创建一个套接字用于通信
原型:
intsocket(intdomain,inttype,intprotocol);
参数
domain:
指定通信协议族(protocolfamily),AF_INET、AF_INET6、AF_UNIX等
type:
指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAW
protocol:
协议类型,IPPROTO_TCP等;
一般由前两个参数就决定了协议类型,设置为0即可。
返回值:
成功返回非负整数,它与文件描述符类似,我们把它称为套接口描述字,简称套接字。
失败返回-1
2、bind函数
绑定一个本地地址到套接字
intbind(intsockfd,conststructsockaddr*addr,socklen_taddrlen);
sockfd:
socket函数返回的套接字
addr:
要绑定的地址
addrlen:
地址长度
成功返回0,失败返回-1
3、listen函数
将套接字用于监听进入的连接
intlisten(intsockfd,intbacklog);
backlog:
规定内核为此套接字排队的最大连接个数
一般来说,listen函数应该在调用socket和bind函数之后,调用函数accept之前调用。
对于给定的监听套接口,内核要维护两个队列:
1、已由客户发出并到达服务器,服务器正在等待完成相应的TCP三路握手过程
2、已完成连接的队列
如下图所示:
4、accept函数
从已完成连接队列返回第一个连接,如果已完成连接队列为空,则阻塞。
intaccept(intsockfd,structsockaddr*addr,socklen_t*addrlen);
服务器套接字
将返回对等方的套接字地址
返回对等方的套接字地址长度
成功返回非负整数,失败返回-1
5、connect函数
建立一个连接至addr所指定的套接字
intconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);
未连接套接字
要连接的套接字地址
第二个参数addr长度
16.IP地址分类。
1、A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从1.0.0.0到126.0.0.0。
可用的A类网络有126个
2、B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。
可用的B类网络有16382个
3、C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。
范围从192.0.0.0到223.255.255.255。
C类网络可达209万余个
4、D类地址用于多点广播(Multicast)。
D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。
多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5、E类IP地址
以“llll0”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。
全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
在IP地址3种主要类型里,各保留了3个区域作为私有地址,也就是比较常用的ip地址。
其地址范围如下:
A类地址:
10.0.0.0~10.255.255.255
B类地址:
172.16.0.0~172.31.255.255
C类地址:
192.168.0.0~192.168.255.255
17.路由器与交换机区别。
1)二者的工作层次不同
交换机工作在数据链路层,路由器工作在网络层。
交换