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

一、问题: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乱序导致的重传

读《Wireshark网络分析就这么简单》读书笔记的更多相关文章

  1. Wireshark网络分析就这么简单——读书笔记

    前言 什么是wireshark? wireshark可能是世界上最好的开源网络分析器,能在多个平台上(Linux.Mac和Windows)抓取和分析网络包 wireshark分析常见的协议,可以在学习 ...

  2. Wireshark网络分析就这么简单

    tcpdump抓包命令: root#tcpdump -I eth0 -s 80 -w /tmp/tcpdump.cap 注:其中80表示,只抓每个包的前80个字节. 抓包时就筛选自己需要的包: Wir ...

  3. WireShark网络分析就这么简单 读后感

    京东618活动,满200减100,果断入手了这本经典的 WireShark教程

  4. Spring 3.0就这么简单读书笔记

    一般情况下,spring容器中的大部分Bean都是单实例的,所以一般无须通过@Repository.@Service.@Component等注解的value属性为Bean指定名称,也无须使用@Qual ...

  5. [读书笔记]Mindset

    开始读 Mindset.准备开始记录读书笔记. Question: I know a lot of workaholics on the fast track who seem to have a f ...

  6. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

  7. Redis设计与实现读书笔记——简单动态字符串

    前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-dat ...

  8. 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)

    本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...

  9. [redis读书笔记] 第一部分 数据结构与对象 简单动态字符串

    本读书笔记主要来自于<<redis设计与实现>> -- 黄键宏(huangz) redis主要设计了字符串,链表,字典,跳跃表,整数集合,压缩列表来做为基本的数据结构,实现键值 ...

随机推荐

  1. MVC 路由调试工具-RouteDebugger

    MVC  路由调试工具-RouteDebugger 方案一: 在程序包控制台中执行命令 PM> Install-Package routedebugger 自动会在你的项目webconfig中& ...

  2. ecliplse导入tomcat

    上面点击之后,弹出的窗口最大化: 导入成功之后如下图:

  3. 搭建linux虚拟机

    一.VMware 9 安装CentOS 7 -> 创建新虚拟机, 选择稍后安装操作系统    -> 选择Linux系统Centos 64位    -> 填写虚拟机名称, 选择虚拟机安 ...

  4. 如何修改git显示的用户名

    我是这样试了一下,可以改: 输入修改用户名和邮箱: $git config --global user.email "tanteng@gmail.com" $git config ...

  5. MongoDB 副本集配置,开启账号认证

    MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定 3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1. ...

  6. 【bzoj4036】[HAOI2015]按位或 fmt+期望

    Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0&l ...

  7. 从map中取出最大或最小value对应的key---多种写法

    package com.yuwanlong.hashing; import java.util.ArrayList; import java.util.Collections; import java ...

  8. form表单提交回调函数

    form表单没有回调函数,不过可以通过jquery-form.js这个插件来实现回调函数: <form id="addform" class="form-horiz ...

  9. Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  10. SDUT OJ 数据结构实验之二叉树一:树的同构

    数据结构实验之二叉树一:树的同构 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...