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

  • 相关阅读:
    记住我
    国米夺冠
    小谈“汉字转换成拼音(不带声调)”
    NLP资源共享盛宴
    文本分类资源和程序开源共享
    菜鸟进阶:C++实现Chisquare 特征词选择算法
    欢迎大家试用信息领域学科知识服务平台
    欢迎大家加入NLP,WEBIR,DATA Ming 的技术QQ群
    求两点之间所有路径的算法
    step by step 文本分类(一)
  • 原文地址:https://www.cnblogs.com/zoe233/p/11914194.html
Copyright © 2011-2022 走看看