计算机网络面试整理

 
  

1.基础知识点整理
               (1)OSI,TCP/IP,五层协议的体系结构,以及各层协议
OSI分层(7层)
-物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层)
-网络接口层、网际层、运输层、应用层。
五层协议(5层)
-物理层、数据链路层、网络层、运输层、应用层。

每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
    
(2)每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)


(3)IP地址的分类
A类地址:以0开头,      第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头,    第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头,  第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);




2.面试题
                   -ARP是地址解析协议,简单语言解释一下工作原理。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,
   以表示IP地址和MAC地址之间的对应关系。
   
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,
   如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,
   该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

3:当本网络的所有主机收到该ARP数据包时,
   首先检查数据包中的IP地址是否是自己的IP地址,
   如果不是,则忽略该数据包,
   如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,
   如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。
   将目的主机的IP和MAC地址写入ARP列表,
   并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

5:广播发送ARP请求,单播发送ARP响应。



-各种协议

ICMP协议:因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

TFTP协议:是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,

  提供不复杂、开销不大的文件传输服务。

HTTP协议:超文本传输协议,是一个属于应用层的面向对象的协议,

                   由于其简捷、快速的方式,适用于分布式超媒体信息系统。

DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。

NAT协议: 网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术

DHCP协议:一个局域网的网络协议,使用UDP协议工作,
                   用途:给内部网络或网络服务供应商自动分配IP地址,
   给用户或者内部网络管理员作为对所有计算机作中央管理的手段
  

-描述:RARP
        RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,
因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,
里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,
里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,
就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,
因此RARP只能用于具有广播能力的网络。



                -TCP三次握手(A.服务器 B.客户端)
                       1. A的TCP客户进程也是首先创建传输控制块(TCB),然后向B发出连接请求报文段,这时首部中的同步位(SYN)
   SYN=1,同时选择一个初始序号(seq)seq=x。这时TCP客户进程进入SYN-SENT(同步已发送)状态。
   
2. B收到请求的报文段后,如果同意建立连接,则向 A 发送确认的。在确认的报文段中应把同步位(SYN)位和确认符(ACK)
   位都置为1,确认号是 ack = x+1,同时也为自己选择一个初始序号(seq) seq = y。
   这时TCP服务进程进入SYN-RCVD(同步收到)状态。
   
3. TCP客户进程收到B的确认后,还要向B给出确认。确认段的确认符(ACK)置1,确认号(ack)ack = y+1
   而自己的序号(seq)seq=x+1。这时TCP已经进入连接状态, A进入ESTABLISHED(以建立连接)状态。
   当B收到A的确认后,也进入ESTABLISHED(以建立连接)状态。
   
   

                   -四次挥手
                        1.客户端向服务器发送终止控制位(FIN)报文:FIN=1,序号seq=上一个最后传输的字节序号+1=u,发送后,
  客户端进入终止等待-1(FIN-WAIT-1)状态。

2.服务器接收到该报文后,发送一个确认报文:令ACK=1,确认序号ack = u+1,自己的报文序号seq=v,
  发送后,服务器进入CLOSE-WAIT状态。

3.此时TCP连接进入连接半关闭状态,服务器可能还会向客户端发送一些数据。

4.客户端收到来自服务器的确认之后,进入FIN-WAIT-2状态。等待服务器发送连接释放报文。

5.如果服务器已经没有要发送的数据,则释放TCP连接,
  向客户端发送报文:令FIN=1,ACK=1,确认号ack =u+1,
  自己的序号seq = w(w可能等于v也可能大于v),服务器进入LAST-ACK状态。

6.客户端收到服务器的连接释放报文后,对该报文发出确认,
  令ACK=1,确认号ack=w+1,自己的序号seq=u+1,发送此报文后,等待2个msl时间后,进入CLOSED状态。

7.服务器收到客户端的确认后,也进入CLOSED状态并撤销传输控制块。。


-为何使用三次握手机制
        客户端向服务器发送了第一条请求报文,但是该报文并未在网络中被丢弃,而是长时间阻滞在某处,
而客户端收不到服务器确认,以为该报文丢失,于是重新发送该报文,这次的报文成功到达服务器,
如果不使用三次握手,则服务器只需对该报文发出确认,就建立了一个连接。而在这个连接建立,
并释放后,第一次发送的,阻滞在网络中的报文到达了服务器,
服务器以为是客户端又重新发送了一个连接请求(实际上在客户端那里,该连接早已失效),
就又向客户端发送一个确认,但客户端认为他没有发送该请求报文,因此不理睬服务器发送的确认,
而服务器以为又建立了一个新的连接,于是一直等待A发来数据,造成了服务器资源的浪费,并且会产生安全隐患。
因此,若使用三次握手机制,服务器发送了该确认后,收不到客户端的确认,
也就知道并没有建立连接,因此不会将资源浪费在这种没有意义的等待上。



-在浏览器中输入www.baidu.com后执行的全部过程(https://blog.csdn.net/qq_16681169/article/details/50866290)
        1.客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,
  通过这个IP地址找到客户端到服务器的路径。
  客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。

2.在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,
  如服务器使用80端口监听客户端的请求,
  客户端由系统随机选择一个端口如5000,与服务器进行交换,
  服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

3.客户端的网络层不用关心应用层或者传输层的东西,
  主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,
  这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

4.客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,
  然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,
  然后发送IP数据包到达服务器的地址。
  

-TCP和UDP的区别?
                         1.TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
                         2.TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。 
                         3.TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。



-TCP对应的协议和UDP对应的协议
                           TCP对应的协议:
                              (1) FTP:定义了文件传输协议,使用21端口。
                              (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
                              (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
                              (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
                              (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
                           UDP对应的协议:
                              (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
                              (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
                              (3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。


你可能感兴趣的:(java面试)