• 读《Wireshark网络分析就这么简单》读书笔记


    晚上花了两个多小时看完这本书,记录下一些看书过程中的笔记。

    一、问题:A和B 是否能正常通信?

    两台服务器A和服务器B的网络配置 

    A                                                      B

    192.168.26.129                        192.168.26.3

    255.255.255.0                           255.255.255.224

    192.168.26.2                              192.168.26.2

    1.服务器B通过ARP广播查询默认网关192.168.26.2的mac地址,B 根据自己的子网掩码和ip地址与操作,计算出A与B属于不同子网,跨子网通信需要 默认网关的转发,要和默认网关通信要获得其MAC地址    所以第一个ARP包  who has 192.168.26.2?tell 192.168.26.3

    2.默认网关192.168.26.2向B回复了自己的MAC地址  MAC地址是00开头的都是Vmware公司

    3.B的源地址是 192.168.26.3 目的地址是 A的 IP地址,请求默认网关把包转发给A

    4.网关把B发出的ping请求转发给A,B收到了A的ARP广播,A看来B与自己同网段,同网段子网通信无需网关参与,通过ARP获取对方的MAC就可以

    5.B回复了A的arp请求 把mac地址告诉A,源地址是192.168.26.3 目的地址 192.168.26.129  ICMP Echo (ping)request 

    6.B收到了A的ping回复,从mac地址知道这个包直接丢过来的不是通过默认网关转发的

    B----ping请求---网关-----ping请求----A-----回复B

    *ip地址和子网掩码计算出是不同的网段通信,通信需要ARP广播获得对方的mac地址,ARP不能跨越子网,需要默认网关转发,之后通过mac地址直接互相通信

    *ip地址和子网掩码同网段,则可以直接通过mac地址通信,直接丢包给对方

    二、抓包技巧

    1、只抓包头,在wireshark上的 Capture---->Options ,limit each packet to  80字节 这样每个包只抓 前80个字节,TCP层、网络层、数据里娜鲁曾的信息都可以包括应用层则差不多200字节,同理

    tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap

    2.只抓必要的包

    在wireshark上的 Capture---->Options,capture filter 输入host 10.32.200.131,同理

    tcpdump -i eth0 host 10.32.200.131  -w /tmp/tcpdump.cap

    3.过滤

    ip.addr eq<IP地址> && tcp.port eq<端口号>

    三、TCP

    三次握手 交换信息  四次断开

    由于连接是双向的  建立连接时  双方都要发一个SYN,关闭连接时,双方都要发一个FIN

    RST 用于重置混乱的连接,或者拒绝一个无效的请求

     客户端   SYN  Seq=X  服务器

                   SYN  Seq=Y,Ack=X+1

                   Seq=X+1,ACK=Y+1

    四、kerberos

    1、原理分析

      Kerberos简单来说就是一个用于安全认证第三方协议,它采用了传统的共享密钥的方式,实现了在网络环境不一定保证安全的环境下,client和server之间的通信,适用于client/server模型,由MIT开发和实现。

      Kerberos的神秘之处在于,它并不要求通信双方所在的网络环境是安全的,即使通信过程中数据被截取或者篡改依然不会影响它的正常工作,它提供的认证是双向的,不仅能保证Server不被错误的Client使用,同时也能保证Client不使用错误的Server。同时Kerberos又严重依赖于时间,时间戳也是Kerberos用来保证通信安全的重要手段,这个一般通过通信双方同时访问同一个时间服务器来实现。Kerberos也能达到单点登录的效果,即当Client通过了Kerberos server的认证后,便可以访问多个Real Server。

    2、Kerberos原理浅析

      在实际的应有场景中通常有三个角色,即需要访问服务的Client,提供服务的Application Server,以及提供安全认证的第三方Kerberos服务器KDC(Key Distribution Center)。它们彼此之间的认证、通信的数据流如下图所示。

          

      仔细研究过上图之后,你可能会发现你能看明白的东西实在有限,而想要把Kerberos原理弄明白实在不是一件容易的事,不过可以庆幸的是Kerberos是用传统的共享密钥的方式实现的,这个概念对大家来说并不陌生,同时Kerberos认证还加了时间戳,有效时间,信息对比等伎俩,所以花时间细细读下来你依然能看明白,如果此时你就迫不及待的想研究的话你可以戳这里这里或者这里。现在,我们来讨论下Kerberos的认证的一个部分,我认为只要这个部分理解了,其他的都可以递推出来。如下图:

           

    Client master key: KDC中存储的Client的密钥

    Server master key: KDC中存储的Server的密钥

    Sclient-Server:Client与Server之间的会话密钥

    Client Info:记录了Client本身的Ip等基本信息

    首先 Client询问KDC,我想访问某个Server,然后KDC会将会话密钥Sclient-Server用Client master key加密后传送给Client;与此同时,KDC也会将会话密钥Sclient-Server连同Client的基本信息打包用Server master key加密也发给Client,并经Client转发给Server,至此Client与KDC的交互完成。

    然后,Client用自己的master key解密KDC传过来的第一个包,解密后获得会话密钥Sclient-Server,并用这个密钥加密自己的的信息和时间戳打包后传送给Server,此时Client开始和Server交互,如下图:                                    

          

    Server会收到两个数据包,一个用会话密钥加密,一个用自己的master key加密,Server先用自己的master key解密获取会话密钥和一份关于Client的信息,然后Server拿到解密后获取到的会话密钥再解开另外一个数据包,获得另一份关于Client的信息和时间戳,至此Client和Server的交互完成。

    下面我们解释下这样传输数据的原因,为什么传递这些数据

    1,上面有个数据包是KDC经Client转发给Server的,为什么不直接发给Server?

    因为Server可能给多个Client提供服务,这样Server需要维护一个Client和会话密钥的对应表,这对Server是一个负担。

    此外,因为网络传输的不确定性可能Client和Server并不能都及时获取到会话密钥,假如有一方获取失败,那么Client就不能访问Server

    2,为什么要发两份关于Client的信息给Server?

    通过这两份数据的对比,Server就能判断出是不是对的Client在访问服务。

    3,Client是如何判断自己在访问对的Server呢?

    因为Client给Server的一个数据包是用Server的master key来加密的所以只有对的Server才能解密。

    4,为什么要用会话密钥

    通信方的master key是长期有效的,如果在网络上传输,一旦被截取,理论上来说只要有足够的时间是可以破解的,所以我们才用临时的会话密钥来通信,一段时间后会话密钥会过期,同时时间戳也防止了,恶意用户重复使用同一个数据包。

    5,为什么要用时间戳?

    如果Client向Server传送的数据包被其他的Client截取,然后自己拿来向Server请求服务这,这样就会出问题,那么引入时间戳后,Server收到请求后将从解密后的数据包中获得的时间戳和当前时间对比,一旦超过一定范围将直接拒绝请求;所以,正如前面所说,Kerberos高度依赖时间同步服务。

    事实上这个并不是Kerberos认证的整个过程,KDC实际上由AS和TGS两部分组成,你可以将TGS视作一个Server,然后还沿用上面所说的步骤来分析,这样就可以基本上梳理出Client访问Server的一个完整的过程了。

    这些东西可能依然难于理解,你可以借助Kerberos经典会话中的场景来理解,请戳这里或者这里

    五、一些其他

    一般存储设备都是读比写快

    网络读文件 大带宽到小带宽 很容易出现拥塞

    写则相反,因此拥塞率较低

    卡顿可能是TCP乱序导致的重传

  • 相关阅读:
    html5结构标签
    video标签、audio标签
    a标签、img图片、iframe、表单元素、div
    pre,html转义,abbr缩写,表格table
    html 列表标签
    p,br,hn,b,i,u,s,sup,sub标签
    网站开发准备学习
    交互原型设计工具
    为什么要重写hashCode()方法和equals()方法及如何重写
    Java接口回调
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/9763718.html
Copyright © 2020-2023  润新知