面试中计算机网络高频问题汇总

1.     tcp和udp的区别

【1】    tcp是面向连接的,udp是面向无连接的

面向连接:就是tcp传输之前要先发送连接请求和应答包,确定双方能够正常传输后,才会进行数据传输

无连接:udp在发送数据之前,并不考虑对方能否接受到,甚至目的地址可能是无效的

【2】    tcp能保证可靠传输,udp不能保证可靠传输

所谓可靠性就是指tcp能保证把数据一定能送到目的地址,为了实现可靠性,tcp采用有连接的,超时重传,应答机制等。而udp则没有采用这些,也不能保证数据一定能送到

【3】    tcp结构复杂,消耗资源多,建立过程较慢,较复杂,udp结构简单,消耗资源少,建立过程较快

【4】    tcp是基于流模式,udp是基于数据报

tcp把数据报看成一连串无结构的字节流,没有边界,一段段传输构成整个数据块,通过发送缓冲区和接收缓冲区来存储数据流。而udp是数据报模式,每一个数据报都是一个独立的对象,有这指定的大小

【5】    tcp连接只能是点到点,udp可以使一对一,一对多,多对多

tcp只能点对点连接的原因很简单,因为tcp传输之前要先建立连接,因此广播和多播只能采用udp数据报的方式

【6】    tcp有确认,重传,拥塞控制机制,udp在没有建立连接或者对方已经退出的情况下仍会继续发送数据,导致通信流量的浪费。

2.     tcp和udp的用途

(1)    tcp:用于实现可靠传输的情况,文件非常重要,对网络拥堵有较高的要求的情况

(2)    udp:用于高速传输和实时性较高的场合(即时通信)对于udp的实时视频通信,如果出现丢包,也会出现短暂的卡顿,但是如果采用tcp丢包后需要重传,会导致很长时间的卡顿。Udp可以进行广播通信。Udp还可以还可以在包总量较少的通信(DNS),客户端较多

3.     tcp是如何确保可靠传输的

(1)    连接管理:三次握手,四次挥手

(2)    数据破坏:通过校验和

(3)    丢包:应答和超时重传机制

(4)    分片乱序:序列号

(5)    滑动窗口:提高发送效率,对发送端和接收端进行流量控制

(6)    加快通信速度:快速重发,三次收到重发的消息,进行重发

(7)    拥塞控制:慢启动算法,拥塞窗口

4.     如何使用udp建立可靠连接

(1)    将数据包进行编号,按包的顺序接收并存储

(2)    接收端接收到数据包后,发送确认信息给发送端,发送端接收确认数据以后,再继续发送下一个包,如果接收端收到的数据编号不是期望的编号,则要求发送端重新发送

5.     Nagle算法

Nagle算法简单的讲就是,等待服务器应答包到达后,在发送下一个数据包。数据在发送端被缓存,如果缓存到达指定大小就将其发送,或者在上一个数据的应答包到达,将缓存区一次性全部发送【若发送应用进程要把发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有收到对前一个报文段的确认后才继续发送下一个报文段。当数据到达较快而网络速率较慢时,用这样的方法明显的减少所用的网络带宽。Nagle算法还规定,当到达的数据已经达到发送窗口大小的一半或已达到报文段的最大长度时,就立即发送一个报文段。这样做,就可以有效的提高网络的吞吐量

6.     tcp和udp对应的协议

【1】   tcp对应的协议

(1)    FTP:定义了文件传输协议,使用21端口

(2)    Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务

(3)    SMTP:邮件传输协议,用于发送邮件,服务器开放的是25号端口

(4)    POP3:他是和SMTP对应,POP3用于接收邮件,POP3协议所用的是110端口

(5)    HTTP:是从web服务器传输超文本到本地浏览器的传送协议所用的端口号80

【2】   udp对应的协议

(1)    DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口

(2)    SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的,由于网络设备很多,无连接的服务就体现出了优势

(3)    TFTP:简单文件传输协议,该协议在熟知端口69上使用UDP服务

7.     Tcp三次握手四次挥手

【1】   tcp的三次握手

(1)    客户端发送请求包,告诉服务器 我想和你通信,数据包中syn位置为1,假设其序列号为x,客户端状态变成SYN_SENT

(2)    服务器收到请求包后也发送一个请求包,告诉客户端现在可以进行连接了,数据包中syn位置为1,假设序列号为y(注意,客户端序列号和服务端序列号没有任何关系,他们是有各自的内核按照一定的规则生成的)但是这个应答包的32位应答号必须是x+1(x+1是因为客户端发过来的包syn位被认为占一个数据,因此告诉下一个包必须从x+1开始发)发送后服务器进入SYN_RCVD状态

(3)    客户端发送应答包,高速服务器我们可以进行通信了,数据包应答号为y+1,客户端编程ESTABLISHED状态,即可以传输状态。服务器端接受到应答包后,变成ESTABLISHED

【2】   发送数据

客户端发送一个一个字节的数据,因此序列号为x+1,服务端发送一个应答包,应答号为x+2,告诉客户端下次从x+2开始发

【3】   Tcp四次挥手

(1)    客户端发送请求断开的数据包,告诉服务器数据传完了,我要断开,发送一个FIN包,序号为x+2,客户端进入FIN_WAIT_1状态

(2)    服务器发送应答包,告诉服务器我已经知道了,你断开吧,应答号为x+3服务器进入CLOSE_WAIT状态,客户端收到应答后,转移到FIN_WAIT_2状态

(3)    服务器发送一个断开的数据包,告诉客户端既然已经传完了那我这面也准备关了,序列号为y+1,发送完后进入LAST_ACK状态

(4)    客户端发送一个应答包,告诉服务器,好的,我已经知道你要断开了,应答号为y+2,客户端进入TIME_WAIT状态

TIME_WAIT状态又称为2MSL状态,MSL是系统中定义的最大报文生存时间,任何tcp报文在网络中的生存时间超过这个值都要将其进行丢弃。等待MSL的原因是防止最后一个ACK丢失后可以进行重发,如果ACK丢失后,服务器重发FIN

【4】   Tcp为什么是三次握手,为什么是四次挥手

(1)    因为信道是不可靠的,可能存在延时或者丢包,而三次是满足可靠传输的最小次数。如果只有两次,假设主机A发送的第一个请求包延时,主机A在等待一段时间后又重新发送一个请求包,完成数据连接并断开。但是这时上次发送的请求包才到达主机B,这时主机B认为又是一次连接,因此发送一个请求包给A,但A并没有发出新的请求,因此丢失了该数据包,最后B一直等待A发送数据,浪费了资源。除此之外我认为三次握手更加安全,加大了攻击的难度。如果是两次,一个发送,一个应答,那么攻击者可以采用IP欺骗,发动SYN洪水攻击,并且服务端还都是ESTABLISHED状态,不能进行防御,对于三次握手可以限制半连接的数量来达到一个防御的作用

(2)    Tcp通信是一种全双工的通信,可以进行半关闭(与半打开的区别:半打开是连接后的客户端和服务端有一端异常关闭了),所谓半关闭是指可以之关闭从A到B的方向,而B到A的方向还可以继续传输,因此客户端和服务器端分别进行关闭

【5】   分析syn flood的攻击原理,如何防御syn flood攻击

(1)    syn攻击利用TCP协议的缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。服务器收到连接请求,将此信息加入到未连接队列,并发送请求包给客户,此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接的队列里删除。配合IP欺骗,SYN攻击能够达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn请求包,服务器回复确认包,并等候客户的确认,由于源地址是不存在的,服务器需要不断地重发,直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被放弃,目标系统运行缓慢,严重引起网络拥塞甚至系统瘫痪

(2)    syn flood防御方法:syn cookie/proxy

syn cookie 它的防御对象是syn flood,类别是:DOS攻击方式的防范手段,防范原理:修改TCP服务器端的三次握手协议

syn cookie 是对TCP服务器端的三次握手协议做了一些修改,专门用来防范SYN Flood 攻击的手段。它的原理是:在TCP服务器收到TCP syn包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值,在收到TCP ACK包时,TCP 服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。

8.     OSI(7层)TCP/IP(4层)五层协议的体系结构,以及各层的协议

【1】   OSI的七层,每一层的作用,和每一层的协议

(1)    物理层:IEEE802,IEEE802.2  作用:以二进制的数据形式在物理媒体上传输数据(中继器,集线器,网关)

(2)    数据链路层:ARP,RARP,PPP,MTU 作用:传输有地址的帧,将比特组装成帧和点到点的传递,以及错误检测功能(网桥,交换机)

(3)    网络层:IP,ARP,RAR,ICMP,RIP,OSPF,BGP,IGMP作用:负责数据包从源到宿的传递和网际互联,寻址和路由选择(路由器)

(4)    传输层:TCP,UDP 作用:提供端到端的可靠报文传递和错误恢复

(5)    会话层:没有要求考的协议 作用:建立,管理,终止会话

(6)    表示层:没有要求考的协议 作用:对数据进行翻译,加密和压缩

(7)    应用层:DNS,HTTP,FTP,SMTP,TFTP 作用:文件传输,电子邮件,文件服务,虚拟终端 提供应用程序间的通信

【2】   TCP/IP(4层)

(1)网络接口层(对应物理层和数据链路层);(2)网际层(对应网络层);(3)运输层(对应传输层);(4)应用层(对应应用层和表示层)

【3】   五层协议

(1)物理层;(2)数据链路层;(3)网络层;(4)运输层;(5)应用层

9.    HTTP

【1】   HTTP的主要特点

(1)    简单快速:客户端向服务端发送请求时,只是简单的填写请求路径和请求方法即可,然后就可以通过浏览器或其他方式将请求发送就行了

(2)    灵活:HTTP协议允许客户端和服务器端传输任意类型,任意格式的数据对象

(3)    无连接:无连接的含义就是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种传输方式可以节省传输时间。

(4)    无状态:无状态是指协议对于事务处理没有记忆功能,服务器不知道客户端是什么状态,即客户端发送HTTP请求后,服务器根据请求,会给我们发送数据,发送完后不会记录信息(使用cookie机制可以保持session,解决无状态的问题)

(5)    支持客户/服务器模式

【2】   HTTP和HTTPS的区别

(1)    HTTPS协议需要申请证书,一般免费的证书很少,需要交费

(2)    HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性加密传输协议

(3)    HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,HTTP的端口号是80,HTTPS的端口号的443

(4)    HTTP的连接很简单,是无连接

(5)    HTTPS协议是由ssl+HTTP协议构建的可进行加密的传输,身份认证网络的协议,要比HTTP协议安全的多

【3】   HTTP返回的状态码

(1)200:请求被正常处理

(2)204:请求被受理,但没有资源返回

(3)206:客户端只请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过content-range指定范围资源

(4)301:永久性重定向

(5)302:临时重定向

(6)303:与302状态码有相似的功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

(7)304:发送附带条件的请求时,条件不满足时返回,与重定向无关

(8)307:临时重定向,与302类似,只是想只要求使用post方法

(9)400:请求报文语法有误,服务器无法识别

(10)401:请求需要认证

(11)403:请求对应资源禁止访问

(12)404:服务器无法找到对应资源

(13)500:服务器内部错误

(14)503:服务器正忙

【4】   HTTPS通信流程,为什么能保证通信安全

(1)“客户”向服务端发送一个通信请求

(2)“服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密的,私钥由服务器持有

(3)“客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果没有检查出问题,就说明数字证书中的公钥确实是“服务器”的。检察数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密

(4)服务器把加密的结果返回给客户

(5)客户用公钥解密这个返回结果,如果解密之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是服务器。验证服务器的身份之后,客户生成一个对称机密算法和密钥,用于后面的通信加密和解密。这个对称加密算法和密钥,客户会用公钥加密后发给服务器,别人截获了也没有用,因为只有服务器手中有解密的私钥,这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。

【5】   HTTP请求头

http数据由请求行,首部字段,空行,报文主体四个部分组成
首部字段分为:通用首部字段,请求首部字段,响应首部字段,实体首部字段

【6】   Cookies和session,session具体原理和机制

(1)session具体原理:本题看红色的总结

【7】   Get和post的区别

(1)    get重点是从服务器上获取资源,post重点是向服务器发送数据

(2)    get传输数据是通过URL请求,以field(字段)=value的形式,置于URL后,并用“?”连接,多少请求数据间用“&”连接,这个过程用户是可见的。Post传输数据通过HTTP的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的

(3)    get传输的数据量小,因为受URL长度的限制,但效率高。Post可以传输大量数据,所以上传文件时只能用post方式

(4)    get是不安全的,因为URL是可见的,可能会泄露信息,如密码等。Post比get的安全性高

【8】   HTTP1.1和HTTP2.0的特点

(1)    http1.1的特点

(1)    默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断 开TCP连接,就一直保持连接,可以发送多次HTTP请求

(2)    管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应

(3)    断点续传ftghh

(2)    http2.0的特点
(1)HTTP/2采用二进制格式而非文本格式
(2)HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个      HTTP连接就可以实现多个请求响应

(3)使用报头压缩,HTTP/2降低了开销
(4)HTTP/2让服务器可以将响应主动“推送”到客户端缓存中

10.  Tcp的头部,udp的头部,IP的头部(1个字节8位)

(1)   UDP

(1)    UDP首部字节的大小为8

(2)    用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,有四个字段组成,每个字段的长度为2个字节,个字段的定义如下:1.源端口:源端口号,在需要对方回信时选用,不需要时可以全为0;2.目的端口:目的端口号,这在重点交付报文时必须使用到;3.长度:udp用户数据报的长度,其最小值为8(仅有首部);4.校验和:检测udp用户数据报在传输过程中是否有错。有错就丢失。

 

(3)    UDP检验和是把首部和数据部分一起都检验了,而IP数据报的检验和只检验IP数据报的首部

(2)   TCP

(1)    TCP首部字节的大小为20

(2)    源端口和目的端口各占2个字节,序号和确认号占4个字节,数据偏移占4位,保留占6位,紧急(URG),确认(ACK),推送(PSH),复位(RST),建立连接(SYN),终止连接(FIN)窗口占2字节,检验和占2字节,紧急指针占2字节,选项,长度可变。MSS是指每一个TCP报文段中的数据字段的最大长度

(3)   IP

IP数据包由首部和数据两部分组成。首部由固定部分和可选部分组成,首部的固定部分由20字节。可选部分的长度变化范围为1-40字节。

11.  TCP滑动窗口

(1)   窗口的介绍

窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过TCP报文段中的窗口字段告诉发送方自己的窗口的大小,放松方根据这个值和其他信息设置自己的窗口的大小。

发送窗口内的字节都允许被发送,接受窗口内的字节都允许被接收,如果发送窗口左部分的字节已经发送,并且受到了确认,那么就将发送窗口向右移动一段距离,直到左部的第一个字节不是已发送并且已经确认的状态,接受窗口和发送窗口相似

(2)   TCP可靠传输

TCP使用超时重传实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么久重传这个报文段。

(3)   TCP流量控制

流量控制是为了控制发送方发送速率,保证接收方来的即接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口的大小,从而影响发送方的发送速率,例如将窗口字段设置为0,则发送方不能发送数据

(4)   TCP拥塞控制

拥塞产生的条件:对资源的需求大于可用资源

如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高,因此当出现拥塞的时候,应该控制发送方的速度,这一点和流量控制很像,但出发点是不一样的,流量控制是为了让接收方来的即接收接收,而拥塞控制是为了降低整个网络的拥塞程度。

TCP主要通过四个算法来进行拥塞控制:慢开始,拥塞避免,快重传,快恢复。发送方需要为回一个叫做拥塞窗口的状态变量 。注意拥塞窗口和发送窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送发送窗口。

为了方便讨论,我们做了如下的解释:

1.    接收方有足够大的接收缓存,因此不会发生流量控制

2.    虽然TCP的窗口基于字节,但是这里设窗口的大小单位为报文段

慢开始和拥塞避免

发送的最初执行的是慢开始,令cwnd=1(最大报文段的MSS的数值),发送方只能发送一个报文段,当收到确认后,将cwnd加倍,因此之后发送方能够发送的报文段为:2,4,8…

注意到慢开始每个轮次都会将cwnd加倍,这样会让cwnd增长速度过快,从而使得发送方发送的速度增长过快,网络拥塞的可能就更高了,设置一个慢开始门限ssthresh,当cwnd>=ssthresh时,进入拥塞避免,每个轮次cwnd加1.

如果出现了超时,责令ssthresh=cwnd/2,然后开始执行慢开始。

快重传和快恢复

在接收方要求每次接收到失序的报文段,就立即发出重复确认(为的就是使发送方及早知道有报文段没有到达对方),而不要等到自己发送数据时捎带确认。例如已经收到了m1,m2此时收到了m4,应当发送对m2的确认。

在发送方如果收到三个重复确认,那么可以确认下一个报文段丢失,例如收到三个m2的,则m3丢失。此时执行快重传,立即重传下一个报文段。

在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令ssthresh=cwnd/2,cwnd=ssthresh,注意到此时直接进入拥塞避免。

(5)   后退N协议

在发送完一个帧后,不用停下来等待确认,而是可以连续发送多个数据帧。收到确认帧后,还可以继续发送数据,这样就减少了等候的事件,整个通信的吞吐量提高了。

如果前一个帧在超时时间内未收到确认,就认为丢失或被破坏,需要重新发送错误帧以及后面的所有帧。这样有可能把正确的数据帧重传一遍,降低了传送效率,在线路很差的时候,使用后退N的协议会浪费掉大量的带宽,会导致不停的重发。

(6)   拥塞控制有什么问题

拥塞控制的代价:需要控制网络内部流量的分布的信息,在实施拥塞控制之前,还需要在节点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用,使得资源网络不能更好的实现共享。

(7)    滑动窗口的两个作用就是:(1)提供TCP的可靠性(2)提供TCP的流控特性

(8)    拥塞控制是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载

12.  简述DNS域名解析的过程

(1)    检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答消息

(2)    若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答消息

(3)    若没有查到,则将请求发给根域DNS.服务器,并依序从根域查找顶级域,由顶级域查找二级域,二级域查找三级域,直至要找到解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后先在缓存中存储,然后,将解析结果发给客户机,若没找到,返回错误信息。

13.  请说明什么是DNS并简单概括其作用,DNS使用什么协议进行传输数据的,DNS在哪些情况下使用哪种协议进行数据传送?

(1)    DNS提供域名,IP对应关系

(2)    DNS在数据传输时使用udp tcp两种协议

(3)    DNS在进行域传送时使用TCP进行传输数据,当DNS传输数据大于512字节时,使用tcp进行数据传输,小于512字节时,使用udp进行传输

14.  是否知道字节序,网络字节序与主机字节序的差异(大小端字节序)

(1)    大端与小端是用来描述多字节数据在内存中的存放顺序,即字节序

(2)    不同CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序这个叫做主机序

(3)    网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。

15.  是否知道字节对齐,为什么需要字节对齐,short int double float对齐方式

(1)    现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。

(2)    因为有些平台要求数据存放对齐,如果不对齐,会带来存储效率上的损失

(3)    已知32位机器上各数据类型的长度为:char为1字节、short为2字节、int为4字节、long为4字节、float为4字节、double为8字节

16.  编写c/c++程序的时候,是否可以改变编辑器默认的字节对齐方式,怎样实现(字节序)intelx86采用什么字节序

(1)    主要基于Intel X86架构介绍结构体对齐和栈内存对齐,位域本质上为结构体类型。

(2)     对于Intel X86平台,每次分配内存应该是从4的整数倍地址开始分配,无论是对结构体变量还是简单类型的变量。

(3)    字对齐,主要是针对结构体

17.  解释一下大小端,网络上是大端还是小端数据

(4)    大端与小端是用来描述多字节数据在内存中的存放顺序,即字节序

(5)    大端:低地址端存放高位字节

(6)    小端:低地址端存放低位字节

(7)    大端符号位的判定固定位第一个字节,容易判断正负

(8)    小端:长度为1,2,4字节的数,排列方式都是一样的,数据类型转换非常方便

(9)    网络字节一般规定为大端

18.  TCP,UDP端口扫描的实现形式

(1)    端口扫描:端口扫描时主动连接到目标系统的TCP和UDP端口,以确定在目标系统上哪些服务正在运行,或者哪些服务处于监听状态的过程

(2)    SYN扫描:双方并没有建立起一条完整的连接,而是扫描着先向被扫描的目的端口发出一个SYN包,如果从目标端口返回一个syn/ack包,就可以断定该端口处于监听状态(即端口是开放的),如果返回rst包,则表明端口不在监听状态,是关闭的。

(3)    使用syn扫描的优点:速度快,如果不被防火墙过滤的话,基本都能收到应答包,缺点:扫描行为容易被发现,并且它是不可靠的,容易丢包

(4)    FIN扫描:主动结束的一方发送FIN包,当我们发送一个FIN包给一个非监听的端口时,会有RST应答,反之,发给一个正在监听的端口时,不会有任何回应。

(5)    FIN扫描优点:隐蔽性好,速度快,缺点:只能用于Linux系统,Windows系统下无效

(6)    UDP recvfrom扫描,UDP ICMP端口不可达扫描,我采用后者,也就是,给一个端口发送UDP报文,如果端口是开放的,则没有相应,如果端口是关闭的,对方会回复一个ICMP端口不可达报文。

19.  电脑上不去网,以及DNS问题有什么症状

(1)    路由器设置这种原因比较多,比如需要动手指定IP,网关,DNS服务器才可上网,请仔细检查计算机的网络设置

(2)    浏览器本身出现故障时,就会导致无法浏览网页,解决就是重新安装浏览器

(3)    DNS服务器问题:当IE无法浏览网页时,可先尝试用IP地址来访问,如果可以访问,那就是DNS的问题,造成DNS的问题可能是联网时获取DNS出错或DNS服务器本身问题,这时你可以手动指定DNS服务(地址可以是你当地ISP提供的DNS服务器地址,也可以用其它地方可以正常使用的DNS服务器地址)

(4)    网络防火墙,如果网络防火墙设置不当,如安全等级过高,不小心把IE放进了阻止访问列表,错误的防火墙策略等,可尝试检查策略,降低防火墙安全等级,或直接关掉试一试能不能恢复正常

(5)    电脑中毒

(6)    网络协议和网卡驱动网络协议(特别是TCP/IP协议)或网卡驱动损坏导致可以尝试重新网卡驱动和网络协议

20.  详细介绍一下浏览器输入www.baidu.com后会发生什么

(1)    客户端浏览器通过DNS解析到www.baidu.com的IP地址,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到IP地址,然后通过tcp进行封装数据包,输入到网络层

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

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

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

21.  分组数据包在网络上是怎样传输的

22.  TCP各种状态转换

23.  超时重传的次数和事件间隔

第一次发送后所设置的超时时间实际上为1.5秒,此后该时间在每次重传时增加一倍,一直到64秒,采用的是指数退避算法。一共重传12次,大约9分钟才放弃重传,该时间在目前的TCP实现中是不可变的,Solaris2.2允许管理者改变这个时间,tcp_ip_abort_interval变量。且其默认值为两分钟,而不是最常用的9分钟。

24.  详细说一下用户在浏览器中输入一个URL,随后展示页面的过程(这个过程涉及的协议有哪些,详细说一下URL,如何请求到对应的服务的)

浏览器中输入一个URL:

(1)    首先浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有给本地DNS发送查询请求。DNS的查询方式有两种,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发出查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。

(2)    得到IP地址以后,浏览器就要与服务器建立一个HTTP连接,因此要用到HTTP协议,HTTP协议报文格式上面已经提及到。HTTP生成一个get请求报文,将该报文传给tcp层处理。如果采用到HTTPS还会对数据进行加密。TCP层如果有需要先将HTTP数据包分片,分片依据路径MTU和MSS。

(3)    TCP的数据包然后会发送给IP层,用到IP协议。IP层通过路由选择,一跳一跳发送到目的地址。当然在一个网络内的寻址是通过以太网协议实现,以太网协议需要知道目的IP地址的物理地址,有需要ARP协议。

25.  ARP协议工作的具体过程

(1)    每一台主机都会在ARP cache缓冲区建立一个ARP表格,用来记录IP位置和实体(MAC)位置的对应关系,这个表的每一条资料会根据自身的存活时间递减而最终消失,以确保资料的真实性

(2)    当发送主机要发送数据包给目的主机的时候,会检查自己的ARP列表中是否存在该IP地址对应的MAC地址,如果有,直接将数据包发送到这个MAC地址,如果没有,就向本地网络发起一个ARP请求的广播包,查询目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址,硬件地址,以及目的主机的IP地址。

(3)   网络中所有主机收到这个请求之后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包,如果相同,该主机首先将发端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP列表中已经存在该IP信息,则将其覆盖,然后给源主机发送一个ARP相应数据包,告诉对方自己是他需要查找的MAC地址,源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据传输,如果源主机一直没有收到ARP的响应数据包,表示ARP查询失败【广播发送ARP请求,单播发送ARP响应】

26.  ARP攻击

(1)    ARP是一个位于TCP/IP协议栈中的网络层,负责某个IP地址解析成对应的MAC地址

(2)    ARP协议的基本功能是通过目标设备的IP地址,查询目标设备的MAC地址,以确保通信的进行

(3)    ARP攻击的局限性:ARP攻击仅能在以太网进行,无法对外网进行攻击

(4)    ARP攻击的原理:ARP攻击 是通过伪造MAC地址和IP地址实现ARP欺骗,能够在网络中产生大量的通信量使网络阻塞,攻击者只要持续不断地发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP_MAC条目,造成网络中断或中间人攻击。

(5)    例如:攻击者向电脑A发送一个伪造的ARP响应,告诉电脑A:电脑B的IP地址192.168.0.2对于MAC地址是00-aa-00-62-c6-02,电脑A信以为真,将这个对应关系写入自己的ARP缓存表中,以后发送数据时,将本应该发往电脑B的数据发给攻击者。同样的,攻击者向电脑B也发送一个伪造的ARP响应,告诉电脑B:电脑A的IP地址192.168.0.1,对于的MAC地址是00-aa-00-62-c6-03,电脑B也会将数据发给攻击者。

至此攻击者就控制了电脑A和电脑B之间的流量,他可以选择被动的监测流量,获取密码和其他涉密信息,也可以伪造数据,改变电脑A和电脑B之间的通信内容。

(6)    ARP协议的不足:ARP协议的无认证,攻击者可以随意伪造,ARP协议是无状态的,动态协议,任意主机都可以在无请求的情况下进行应答,而且任何主机只要收到ARP应答,不管本身是否有ARP请求,都会更新ARP缓存表

(7)    如果发现网络中存在ARP欺骗的行为,如何追查欺骗来源?

在网关上做判断,通过网络嗅探,发现很多ARP-replay包很多的IP等

27.  IP地址的分类

IP地址由网络号和主机号组成,IP与子网掩码相与得到网络号,IP地址一共占4个字节。

(1)    A类地址:网络号是前一个字节;起始位是0;第一个字节的范围:(0~127)(1.0.0.0-126.255.255.255)

(2)    B类地址:网络号是前两个字节;起始位是10;第一个字节的范围:(128~191)(128.0.0.0-191.255.255.255)

(3)    C类地址:网络号是前三个字节;起始位是110;第一个字节的范围:(192~223)(192.0.0.0-223.255.255.255)

(4) D类地址:不分网络地址和主机地址;起始位是1110;第一个字节的范围:(224~239)(224.0.0.0-239.255.255.255)

(5) E类地址:不分网络地址和主机地址;起始位是11110;第一个字节的范围:(240~255)(240.0.0.0-255.255.255.255)

28.  各种协议

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

(2)    TFTP:是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输协议,提供不复杂,开销不大的文件传输服务

(3)    HTTP:超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷,快速的方式,适用于分布式超媒体信息系统

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

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

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

29.  RARP协议

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

30.  交换机,路由器,网关的作用

(1)    交换机:工作在数据链路层,交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习他的MAC地址,保存成一张ARP表,在今后的通讯中,发往该MAC地址的数据包将仅送往对应的端口,而不是所有的端口。因此交换机可用于划分数据链路层广播。

(2)   路由器:路由器是计算机网络设备,提供路由和转发两种重要机制,可以决定数据包从源端到目的端所经过的路由路径,这个过程称为路由。将路由器输入端的数据包移送至适当的路由器输出端,这称为转送,路由器工作在网络层

(3) 网关:网关连接两个网络设备。路由器就是工作在的三层的网关设备。而代理服务器(特定与一定的服务,譬如web服务。)就是应用层的网关。

参考链接:

https://blog.csdn.net/m0_37947204/article/details/80103045

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 FIN扫描 时,可以利用 抓包 程序抓取发送的数据包和 接收的数据包 ,FIN扫描的结果 并不在列表控件显示!! TCP connect() 扫描: 这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。 TCP SYN扫描: 这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。 TCP FIN 扫描: 有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix和NT时,是十分有用的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值