读《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乱序导致的重传
读《Wireshark网络分析就这么简单》读书笔记的更多相关文章
- Wireshark网络分析就这么简单——读书笔记
前言 什么是wireshark? wireshark可能是世界上最好的开源网络分析器,能在多个平台上(Linux.Mac和Windows)抓取和分析网络包 wireshark分析常见的协议,可以在学习 ...
- Wireshark网络分析就这么简单
tcpdump抓包命令: root#tcpdump -I eth0 -s 80 -w /tmp/tcpdump.cap 注:其中80表示,只抓每个包的前80个字节. 抓包时就筛选自己需要的包: Wir ...
- WireShark网络分析就这么简单 读后感
京东618活动,满200减100,果断入手了这本经典的 WireShark教程
- Spring 3.0就这么简单读书笔记
一般情况下,spring容器中的大部分Bean都是单实例的,所以一般无须通过@Repository.@Service.@Component等注解的value属性为Bean指定名称,也无须使用@Qual ...
- [读书笔记]Mindset
开始读 Mindset.准备开始记录读书笔记. Question: I know a lot of workaholics on the fast track who seem to have a f ...
- how tomcat works 读书笔记(二)----------一个简单的servlet容器
app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...
- Redis设计与实现读书笔记——简单动态字符串
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-dat ...
- 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)
本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...
- [redis读书笔记] 第一部分 数据结构与对象 简单动态字符串
本读书笔记主要来自于<<redis设计与实现>> -- 黄键宏(huangz) redis主要设计了字符串,链表,字典,跳跃表,整数集合,压缩列表来做为基本的数据结构,实现键值 ...
随机推荐
- 使用C/C++代码编写Python模块
假如我们要用C语言实现下面的python脚本bird.py import os def fly(name): print(name + " is flying.\n") 调用脚本m ...
- spring (1)
相关名词: 控制反转(IoC):将对象的创建交由spring创建,1创建新class,2xml中配置 3测试context.getBean("") 类似对象工厂(工厂模式)-xml ...
- luoguP4868 Preprefix sum
https://www.luogu.org/problemnew/show/P4868 线段树上加等差数列,基础区间修改单点查询 等差数列具有可加性,当在同一段区间内时,首项相加公差相加即可 #inc ...
- loj2289 [THUWC 2017]在美妙的数学王国中畅游(LCT+Taylor展开)
link 题目大意: 你需要维护一个树 每个点都有个sin(ax+b)或exp(ax+b)或ax+b 你需要维护一些操作:连边.删边.修改某个点的初等函数.询问某条树链上所有函数带入某个值后权值和或不 ...
- 搭建svn管理平台
安装svn服务器:yum -y install subversion 创建svn的目录:mkdir -p /data/svn 初始化svn目录:svnadmin create /data/svn co ...
- ABP项目后台初始化数据库
设置host为启动项,并修改连接字符串 在程序包管理控制台中,默认项目选中EFCore 执行Update-Database命令
- QDU_组队训练(ABEFGHKL)
A - Accurately Say "CocaCola"! In a party held by CocaCola company, several students stand ...
- BZOJ - 1497 最小割应用
题意:基站耗费成本,用户获得利益(前提是投入成本),求最大获利 最小割的简单应用,所有可能的收益-(消耗的成本/失去的收益),无穷大边表示冲突,最小割求括号内的范围即可 #include<ios ...
- ZOJ - 1108 输出DP方案
DP方程太水不解释 熟悉一下输出的套路 #include<iostream> #include<algorithm> #include<cstdio> #inclu ...
- springboot(一):入门
什么是springboot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...