计算机网络一些题目

网络知识学习

Posted by xiechengsheng on March 23, 2017
  • 刷计算机网络的一些习题;

题目

    • 私有IP地址范围:
      A类: 10.0.0.0~10.255.255.255 即10.0.0.0/8
      B类:172.16.0.0~172.31.255.255即172.16.0.0/12
      C类:192.168.0.0~192.168.255.255 即192.168.0.0/16
      
    • 这些地址是不会被Internet分配的,它们在Internet上也不会被路由,虽然它们不能直接和Internet网连接,但通过技术手段仍旧可以和 Internet通讯(NAT技术)。我们可以根据需要来选择适当的地址类,在内部局域网中将这些地址像公用IP地址一样地使用。在Internet上,有些不需要与 Internet通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省IP地址资源。
  1. 一些协议
    • ICMP:(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
    • HTTP:超文本传送协议 (HTTP-Hypertext transfer protocol) 定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
    • TCP:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议,由IETF的RFC 793说明(specified)。TCP在IP报文的协议号是6。
    • FTP:FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。属于应用层协议。
  2. TCP协议中的状态表示:
    • CLOSED: 表示初始状态。
    • LISTEN: 表示服务器端的某个SOCKET处于监听状态,可以接受连接。
    • SYN_RCVD: 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。
    • SYN_SENT: 这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。
    • ESTABLISHED:表示连接已经建立。
    • FIN_WAIT_1: FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。
    • FIN_WAIT_2:FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,还有数据需要传送,稍后再关闭连接。
    • TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。
    • CLOSING: 属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。
    • CLOSE_WAIT: 这种状态的含义表示在等待关闭。当对方close一个SOCKET后发送FIN报文,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。
    • LAST_ACK: 它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。
  3. 网络系统按逻辑结构划分:
    • 资源子网 :负责数据处理、向网络用户提供各种网络资源及网络服务。属于网络的外层。
    • 通信子网:负责数据转发,属于网络的内层
  4. TCP协议的主要功能是完成对数据报的确认、流量控制和网络拥塞;自动检测数据报,并提供错误重发的功能 ;将多条路径传送的数据报按照原来的顺序进行排列,并对重复数据进行择取;控制超时重发,自动调整超时值;提供自动恢复丢失数据的功能。因此,除TCP功能以外需要程序员考虑的为发送数据的格式及应用层协议;

  5. tcp握手状态: tcp_connect (1) 此时TCP连接两端都还处于ESTABLISHED状态,客户端停止发送数据,并发出一个FIN报文段。首部FIN=1,序号seq=u(u等于客户端传输数据最后一字节的序号加1)。客户端进入FIN-WAIT-1(终止等待1)状态。
    (2) 服务端回复确认报文段,确认号ack=u+1,序号seq=v(v等于服务端传输数据最后一字节的序号加1),服务端进入CLOSE-WAIT(关闭等待)状态。现在TCP连接处于半开半闭状态,服务端如果继续发送数据,客户端依然接收。
    (3) 客户端收到确认报文,进入FIN-WAIT-2状态,服务端发送完数据后,发出FIN报文段,FIN=1,确认号ack=u+1,然后进入LAST-ACK(最后确认)状态。
    (4) 客户端回复确认确认报文段,ACK=1,确认号ack=w+1(w为半开半闭状态时,收到的最后一个字节数据的编号) ,序号seq=u+1,然后进入TIME-WAIT(时间等待)状态。
    注意此时连接还没有释放,需要时间等待状态结束后(4分钟) 连接两端才会CLOSED。设置时间等待是因为,有可能最后一个确认报文丢失而需要重传。

  6. 从本质上说,交换机就是一个多端口的网桥,工作在数据链路层(因此不能实现不同网络层协议的网络互联),交换机能经济地将网络分成小的冲突域。广播域属于网络层概念,只有网络层设备(如路由器)才能分割广播域。

  7. 常见的http错误描述原因:
    • 200服务器成功返回网页
    • 301重定向是永久的重定向
    • 302重定向是暂时的重定向
    • 403错误,禁止访问。资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致
    • 404 - 请求的网页不存在
    • 500 Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错误
    • 505 HTTP Version Not Supported 服务器收到的请求使用了它无法或不愿支持的协议版本时。有些服务器应用程序会选择不支持协议的早期版本
  8. 求出10.1.8.0/24和10.1.9.0/24的汇总网段:
    • 从第1位比特开始进行比较记录连续的相同的比特, 从 不相同的比特位到第32个比特为填充0。由此得到的地址为汇总后网段的IP地址,其网络位 为连续的相同的比特的位数。
       10.1.8.0/24 == 10.1. 0000 100 0 .0/24
       10.1.9.0/24 == 10.1. 0000 100 1 .0/24
       从不同的位开始,替换为0,得
       10.1. 0000 100 0 .0 = 10.1.8.0
       子网掩码为 8+8 +7 =23位
       所以汇总网段为10.1.8.0/23
      
  9. 某通信链路的带宽为3khz 。采用4个相位。每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输速率是24kbps
    奈奎斯特:在无噪声情况下,码元速率极限值B与信道带宽的关系:B=2*H(Baud)
    奈奎斯特公式----无噪信道传输能力公式:
    C=2*H*log2N(bps)
    H为信道的带宽,本题中H=3KHz;
    N为一个码元所取得离散值个数,本题中N=16(4个相位,每个相位4中振幅)。
    C=2*H*log2N=2*3kHz*log216=2*3k*4=24kbps;
    香农公式是在带噪信道容量计算时使用的公式:
    C=H*log2(1+S/N)(bps)
    S为信号功率,N为噪声功率,S/N为信噪比;
    
  10. SYN洪水攻击:
    • 在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源—-数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

划重点

  • tcp握手和挥手步骤和状态
  • http状态码
  • 每一层的协议和设备

参考

  • 牛客网