zoukankan      html  css  js  c++  java
  • 【题目】网络面试题

    1. 查看当前系统每个IP的连接数

    思路解析:通过netstat -an查看所有的网络连接,针对ESTABLISHED状态的连接,获取ip,计数。

    [root@oldboy ~]# netstat -an
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
    tcp        0      0 192.168.0.109:22            192.168.0.102:49801         ESTABLISHED 
    tcp        0      0 :::22                       :::*                        LISTEN      
    udp        0      0 0.0.0.0:68                  0.0.0.0:*                               
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node Path
    unix  5      [ ]         DGRAM                    9255   /dev/log
    unix  2      [ ACC ]     STREAM     LISTENING     9766   /var/lib/mysql/mysql.sock
    unix  2      [ ACC ]     STREAM     LISTENING     7096   @/com/ubuntu/upstart
    unix  2      [ ]         DGRAM                    7497   @/org/kernel/udev/udevd
    unix  2      [ ]         DGRAM                    13757  
    unix  2      [ ]         DGRAM                    11955  
    unix  2      [ ]         DGRAM                    9802   
    unix  3      [ ]         DGRAM                    7515   
    unix  3      [ ]         DGRAM                    7514 
    
    # 过滤其中状态为ESTABLISHED的记录
    [root@oldboy ~]# netstat -an|grep "ESTABLISHED"   
    tcp        0      0 192.168.0.109:22            192.168.0.102:49801         ESTABLISHED 
    
    # 过滤ip
    [root@oldboy ~]# netstat -an|grep "ESTABLISHED"|awk '{print $4}'
    192.168.0.109:22
    [root@oldboy ~]# netstat -an|grep "ESTABLISHED"|awk '{print $4}'|awk -F: '{print $1}'  
    192.168.0.109
    
    # 多个ip则排序后再计数
    [root@oldboy ~]# netstat -an|grep "ESTABLISHED"|awk '{print $4}'|awk -F: '{print $1}'|sort -n
    192.168.0.109
    [root@oldboy ~]# netstat -an|grep "ESTABLISHED"|awk '{print $4}'|awk -F: '{print $1}'|sort -n|uniq -c
          1 192.168.0.109

    2. 请列出以下服务使用的端口

    • http 80
    • https 443
    • ftp  20,21
    • telnet  23
    • ssh 22
    • rsync  873
    • dns  5352
    • mysql  3306
    [root@oldboy ~]# grep -Ew "^(http|https|ftp|telnet|ssh|rsync|dns|mysql)" /etc/services 
    ftp-data        20/tcp
    ftp-data        20/udp
    ftp             21/tcp
    ftp             21/udp          fsp fspd
    ssh             22/tcp                          # The Secure Shell (SSH) Protocol
    ssh             22/udp                          # The Secure Shell (SSH) Protocol
    telnet          23/tcp
    telnet          23/udp
    http            80/tcp          www www-http    # WorldWideWeb HTTP
    http            80/udp          www www-http    # HyperText Transfer Protocol
    http            80/sctp                         # HyperText Transfer Protocol
    https           443/tcp                         # http protocol over TLS/SSL
    https           443/udp                         # http protocol over TLS/SSL
    https           443/sctp                        # http protocol over TLS/SSL
    rsync           873/tcp                         # rsync
    rsync           873/udp                         # rsync
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ftp-data        20/sctp                 # FTP
    ftp             21/sctp                 # FTP
    ssh             22/sctp                 # SSH
    http-mgmt       280/tcp                 # http-mgmt
    http-mgmt       280/udp                 # http-mgmt
    ftp-agent       574/tcp                 # FTP Software Agent System
    ftp-agent       574/udp                 # FTP Software Agent System
    http-rpc-epmap  593/tcp                 # HTTP RPC Ep Map
    http-rpc-epmap  593/udp                 # HTTP RPC Ep Map
    mysql-cluster   1186/tcp                # MySQL Cluster Manager
    mysql-cluster   1186/udp                # MySQL Cluster Manager
    mysql-cm-agent  1862/tcp                # MySQL Cluster Manager Agent
    mysql-cm-agent  1862/udp                # MySQL Cluster Manager Agent
    mysql-im        2273/tcp                # MySQL Instance Manager
    mysql-im        2273/udp                # MySQL Instance Manager
    dns-llq         5352/tcp                # DNS Long-Lived Queries
    dns-llq         5352/udp                # DNS Long-Lived Queries
    mysql-proxy     6446/tcp                # MySQL Proxy
    mysql-proxy     6446/udp                # MySQL Proxy
    http-wmap       8990/tcp                # webmail HTTP service
    http-wmap       8990/udp                # webmail HTTP service
    https-wmap      8991/tcp                # webmail HTTPS service
    https-wmap      8991/udp                # webmail HTTPS service
    ssh-mgmt        17235/tcp               # SSH Tectia Manager
    ssh-mgmt        17235/udp               # SSH Tectia Manager
    

     3. 请列出linux下系统常用的几种文件系统格式,并比较各自特点

    解答:

    [root@oldboy fs]# pwd
    /lib/modules/2.6.32-573.el6.x86_64/kernel/fs
    [root@oldboy fs]# ls 
    autofs4     cifs      dlm       ext2  fat      gfs2  jffs2       nfs         nls       udf
    btrfs       configfs  ecryptfs  ext3  fscache  jbd   lockd       nfs_common  squashfs  xfs
    cachefiles  cramfs    exportfs  ext4  fuse     jbd2  mbcache.ko  nfsd        ubifs

    上面列出来的是linux系统支持的文件系统,如果想要其它的文件系统,需要下载。

    • ext2/ext3/ext4:适合Linux的文件系统类型。ext3文件系统多了日志记录功能,ext4是ext3的升级,效率更高,建议默认使用ext4类型。
    • xfs:在CentOS 7中将被作为默认的文件系统类型而替换ext4

    4. 在linux下给Intel82571网卡的第一个口配置IP,网关和增加路由,请写出命令行的具体步骤:

    IP 10.10.10.10/255.255.255.0 网关 10.10.10.1  需要增加路由:到网段192.168.0.0/255.255.255.0 通过ip 10.10.10.2 出去

    解答:

    # 为eth0设置ip和子网掩码
    [root@oldboy network-scripts]# ifconfig eth0 10.10.10.10/24 [root@oldboy network-scripts]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:10:A5:56 inet addr:10.10.10.10 Bcast:10.10.10.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe10:a556/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:60 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4488 (4.3 KiB) TX bytes:6307 (6.1 KiB)
    # 添加默认网关
    [root@oldboy network-scripts]# route -n|grep eth0 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 [root@oldboy network-scripts]# route add default gw 10.10.10.1 SIOCADDRT: File exists [root@oldboy network-scripts]# route -n|grep eth0 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0

    增加路由:到网段192.168.0.0/255.255.255.0 通过ip 10.10.10.2 出去

    [root@oldboy ~]# route add -net 192.168.0.0/24 gw 10.10.10.2
      [root@oldboy ~]# route -n|grep eth0
     192.168.0.0 10.10.10.2 255.255.255.0 UG  0 0 0 eth0
    10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
    0.0.0.0         10.10.10.1      0.0.0.0         UG    0      0        0 eth0

    5. 请详细描述DNS解析过程,以请求www.baidu.com为例。

    解答:

    • 1、客户端在浏览器中输入要访问的域名地址,如:www.baidu.com
    • 2、浏览器请求解析DNS服务器,把域名www.baidu.com 转换成web服务器的IP地址。
      • 1)系统首先会查找本地的DNS缓存和hosts文件信息,确认其中是否有与,域名www.baidu.com所对应的IP地址。如果有,就直接访问这个IP地址所对应的www.baidu.com 域名服务器。
      • 2)如果没有找到,那么,系统将会把浏览器的解析请求发送给本地主机所指定的DNS服务器,称为LDNS。如果LDNS服务器中有域名www.baidu.com 所对应的IP地址,则返回给客户端的浏览器,如果没有,则继续请求其他DNS服务器。
      • 3)LDNS服务器会从DNS系统的根(.)开始请求对域名www.baidu.com 的解析。根DNS服务器全球只有13台,根域名服务器是没有域名www.baidu.com 解析记录的。但是它会有域名www.baidu.com 所对应的顶级域.com的解析记录,因此直接把顶级域.com所对应的DNS地址返回给LDNS服务器。
      • 4)LDNS服务器获取到顶级域.com对应的DNS服务器地址后,就会去.com服务器请求对www.baidu.com 域名的解析。在顶级域名服务器也不会有www.baidu.com 的解析记录的。但是它有www.baidu.com 的父级域名,即baidu.com。因此顶级域名.com服务器又会把baidu.com所对应的DNS服务器的IP地址返回给LDNS。
      • 5)LDNS服务器收到baidu.com所对应的IP地址后,就会去baidu.com域名服务器请求对www.baidu.com 的域名解析。Baidu.com域名对应的DNS服务器是该域名的授权DNS服务器。这个DNS服务器就是企业购买域名时用于管理解析的服务器。
      • 6)baidu.com域名DNS服务器会吧www.baidu.com 域名所对应的IP地址给解析出来,然后发给LDNS。
      • 7)LDNS把解析出来的结果,www.baudu.com 所对应的IP地址发送给客户端的浏览器。并且LDNS也会将其域名和对应的地址缓存到cache中。
      • 8)客户端浏览器收到后,也会将其域名以及对应的IP地址缓存的到DNS缓存和hosts文件中。

    6. 请描述TCP四次断开的过程。

    注意:第一步的图中的ctl只发送FIN

     

    断开过程说明:

    1. 主机A 发送断开TCP连接请求的报文,其中报文中包含seq序列号(是由发送端随机生成的),并且还将报文中FIN字段置为1,表示需要断开TCP连接
    2. 主机B 会回复A发送的TCP断开请求报文,其中包含seq序列号(是由回复端随机生成的),并且会产生ACK字段,ACK字段数值,是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自己的TCP断开请求已经得到了验证
    3. 主机B在回复完A的TCP断开请求后,不会马上就进行TCP连接的断开,主机B会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕就会将回复报文的FIN字段置1,并产生随机seq序列号。
    4. 主机A收到主机B的TCP断开请求后,会回复主机B的断开请求,包含随机生成的seq字段和ack字段,ack字段会在主机B的TCP断开请求的seq基础上加1,从而完成主机B请求的验证回复。

    至此,TCP断开的4次挥手过程完毕。

    通过tcpdump命令抓包,抓到三次握手的数据包:

    解析:

    IP 192.168.0.102.55587 > 192.168.0.109.ssh: Flags [S], seq 716249876
    IP 192.168.0.109.ssh > 192.168.0.102.55587: Flags [S.], seq 1649327456, ack 716249877
    IP 192.168.0.102.55587 > 192.168.0.109.ssh: Flags [.], seq 716249877, ack 1649327457

    flags分别是SYN的标识,具体的flags的标识都有介绍。

    7. 如何对主机做双网卡绑定?如何对交换机做端口绑定?

    解答:

    linux双网卡绑定https://www.cnblogs.com/zoe233/p/11917378.html

    六种模式mode,有些需要对网卡进行交换机端口绑定,有些不需要。根据实际情况考虑。

    8. 对于网络丢包问题你会怎么去排查?

    物理链路如网线破损;带宽占用等

    9. 如何查看主机的路由规划、开放端口、tcp链接状态?

    解答:

    • 路由规划
      • route -n
      • netstat -rn
      • -n表示不解析,-r表示route路由
    • 开放端口
      • netstat -t
    • tcp连接状态
      • netstat -ntl
      • -n表示不解析,-t表示tcp连接,-l表示listen状态

    10. 简述 raid0  raid1  raid5 三种模式的工作原理及特点;RAID0,RAID1,RAID5,RAID10的差异。

    工作原理:

    RAID0:

    • 磁盘数量:1块到多块
    • 组合后的容量:组合内所有硬盘容量之和
    • 读写的性能:读写性能都是组合内所有硬盘的读写性能之和
    • 是否具有冗余性:没有冗余性
    • 适用场景:负载均衡集群中的从节点

    RAID1

    • 磁盘数量:2块
    • 组合后的数量:单盘容量
    • 读写性能:读性能几乎是两块硬盘的读性能之和,写性能几乎为单盘写性能
    • 是否具有冗余性:具有冗余性,同时可以坏一块硬盘
    • 适用场景:系统盘

    RAID5

    • 硬盘数量:3块以上
    • 组合后的容量:组合内所有硬盘之和减去单盘容量
    • 读写性能:读性能几乎是组合内所有硬盘的读性能之和减去单盘读性能;写入性能为单盘的写性能
    • 是否具备冗余性:具备,同时最多可以坏一块硬盘
    • 适用场景:几乎适用于所有非数据库和存储的服务器

    RAID10

    • 磁盘数量:4块,或者以上的偶数盘
    • 组合后的容量:组合内所有硬盘容量之和的50%
    • 读写性能:读性能几乎是组合内所有硬盘的读性能之和,写入性能几乎是组合内所用硬盘写入性能的50%
    • 适用场景:数据库主节点、存储服务器主节点
    • 是否具备冗余性:具备;同时可以坏一半的硬盘。

    11. 写出 172.16.0.10/25 和 10.10.1.2/23 的掩码地址、广播地址和反掩码

    子网划分:255.255.255.?的最后一位的二进制的8位数原本为:0000 0000,现在向右顺延一位,则最左边的0变为1【网络位bit为1,主机bit位为0】,则是128,即:子网掩码为255.255.255.128

    子网掩码:255.255.255.128

    子网数量:2。 【2的N次方,这里的N代表的是向主机所借的位数。这里借1为,所以是2的1次方=2。】

    每个子网的可用IP地址数量(主机数量):126。 【2的N次方减2,这里的N代表的是主机位数,2的7次方-2=128-2=126。】

    每个子网的网络地址:128。【256减去子网掩码128】

    •   172.16.0.0
    •   172.16.0.128

    每个子网的广播地址:172.16.0.127,172.16.0.255  【网络位不变,主机位全为1】

    每个子网的可用IP地址范围:

    子网ID 子网地址 主机地址范围 广播地址
    1 172.160.0.0 172.16.0.1-172.16.0.126 172.16.0.127
    2 172.160.0.128 172.16.0.129-172.16.0.254 172.16.0.255

    反掩码:和umask是一样的功能。

    12. 你使用过和听说过的几种监控软件吗?说说其特点

    cacti:监控网络流量和绘图功能比较优秀

    nagios:监控服务器的负载和服务状态比较有优势

    zabbix:综合以上两种

    13. 如何查看 www.abc.com 的解析 IP 地址及其所使用的权威 DNS

    解答:dig @223.5.5.5 www.baidu.com +trace

    https://www.cnblogs.com/zoe233/p/11823846.html

    14. 简要叙述下列端口所运行的服务

    21、22、23、25、110、143、873、3306

    • 21  20:ftp
    • 22:ssh
    • 23:telnet
    • 25:smtp
    • 110:pop3   995
    • 143:imap4   993
    • 873:rsync
    • 3306:mysql

    15. 简述 TCP 三次握手的过程

    • 1.在最开始,客户端和服务器都处于 CLOSE 状态
    • 2.服务器会创建 socket 开始监听,服务器状态 LISTEN
    • 3.客户端向服务器发送 SYN,请求建立连接,发完之后自己的状态变为 SYN_CENT
    • 4.服务器收到客户端发来的 SYN,然后会回复 ACK 和 SYN,发完之后自己的状态变为 SYN_RECV  RCVD
    • 5.客户端收到服务器发来的 SYN 和 ACK 之后会马上回复 ACK,回复完之后状态变为 ESTABLISHED
    • 6.服务器端收到客户端发来的 ACK 之后会直接进入 ESTABLISHED
    • 至此,三次握手完成,连接建立

    16. tcpdump 怎么抓出 ip 是10.10.0.10  tcp 80 端口的包

      tcpdump  host  10.10.0.10  and  port  80

  • 相关阅读:
    poj 2763 Housewife Wind
    hdu 3966 Aragorn's Story
    poj 1655 Balancing Act 求树的重心
    有上下界的网络流问题
    URAL 1277 Cops and Thieves 最小割 无向图点带权点连通度
    ZOJ 2532 Internship 网络流求关键边
    ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
    SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流
    怎么样仿写已知网址的网页?
    5-10 公路村村通 (30分)
  • 原文地址:https://www.cnblogs.com/zoe233/p/11914194.html
Copyright © 2011-2022 走看看