「Wireshark网络分析就这么简单」 读书笔记(2)

简介: 「Wireshark网络分析就这么简单」 读书笔记(2)

延迟确认与Nagle算法


这种方式其实是很低效的,因为一个包的TCP头和IP头至少就40字节,而携带的数据却只有一个字符.这就像快递员开着大货车去送一个小包裹一样浪费.

延迟确认并没有直接提高性能,它只是减少了部分确认包,减轻了网络负担.

和延迟确认一样,Nagle也没有直接提高性能,启用它的作用只是提高传输效率,减轻网络负担.


百家争鸣


慢启动算法

拥塞避免算法

Westwood: 在经常发生非拥塞性丢包的环境中(比如无线网络),Westwood最能体现出气优势

Vegas: 独辟蹊径,通过监控网络状态来调整发包速度,从而实现真正的”拥塞避免”


与别的算法相比, Vegas就像一位敏感、稳重、谦让的君子。我们可以想象当环境中所有发送方都使用Vegas时,总体传输情况是更稳定、更高效的,因为几乎没有丢包会发生。而当环境中存在Vegas和其他算法时,使用Vegas的发送方可能是性能最差的,因为它最早探测到网络繁忙,然后主动降低了自己的传输速度。这一让步可能就释放了网络的压力,从而避免其他发送方遭遇丢包。这个情况有点像开车,如果路上每位司机的车品都很好,谦让守规矩,则整体交通状况良好;而如果一位车品很好的司机跟一群车品很差的司机一起开车,则可能被频繁加塞,最后成了开得最慢的一个。


简单的代价 ---- UDP


<1>. UDP不像TCP一样在乎双方MTU的大小。 它拿到应用层的数据之后,直接打上UDP头就交给下一层了。那么超过MTU的时候怎么办?在这种情况下,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。一个32 KB的写操作,可能会根据发送方的MTU被切成23个分片。

<2>. UDP没有重传机制,所以丢包由应用层来处理。如某个写操作需要6个包完成。当基于UDP的写操作中有一个包丢失时,客户端不得不重传整个写操作(6个包)。相比之下,基于TCP的写操作就好很多,只要重传丢失的那1个包即可。

<3>. 分片机制存在弱点,会成为黑客的攻击目标。 接收方之所以知道什么时候该把分片组装起来,是因为每个包里都有“More fragments”的flag. 1表示后续还有分片, 0则表示这是最后一个分片,可以组装了。如果黑客持续快速地发送flag为1的UDP包,接收方一直无法把这些包组装起来,就有可能耗尽内存。


剖析CIFS协议


“前文介绍过一个文件共享协议,即Sun设计的NFS。理论上NFS可以应用在任何操作系统上,但因为历史原因,现实中只在Linux/UNIX上流行。那Windows上一般使用什么共享协议呢?它就是微软维护的SMB协议,也叫Common InternetFile System (CIFS). CIFS协议有三版本:SMB, SMB2和SMB3, 目前SMB和SMB2比较普遍。”


网络江湖


Linux和Windows上的共享协议之争

NFS vs CIFS


DNS小科普


  • A (Address)记录: 从域名解析到IP地址。
  • PTR记录:与A记录的功能相反,它能从IP地址解析到域名。PTR有什么作用呢?比如IT部门发现最近公司里的机器10.32.106.47和YouTube 之间数据流量很大,用nslookup一查PTR记录就知道原来是阿满在上班时间偷看视频了
  • SRV记录:Windows的域管理员要特别关心SRV记录,因为它指向域里的资源。比如我想知道我们公司的域nas.com里有哪些DC,只要随便在一台电脑上查询_ldap._tcp.dc._msdcs.nas.com这个SRV记录就可以了。如果你也想查贵司的DC,请把nas.com改成正确域名即可。
  • CNAME记录:又称为Alias记录,就是别名的意思。比如我的服务器 10.32.106.73同时提供网页(www)、邮件(mail)和地图(map)服务。那直接把10.32.106.73配给mail和map可以吗?当然是可以的,但如果某天 要改变这个IP地址,就不得不在DNS上修改www、mail和map这3项记录了。而在使用别名的情况下,只要修改www一项的IP就行了,mail和map都没有必要改动。别名的使用节省了管理时间,站长们应该会喜欢这个功能。
  • 递归查询
  • 迭代查询

DNS的缺点:


  • 就像雕牌洗衣粉被周佳牌模仿一样,DNS上也存在山寨域名。比如招商银行 的域名是www.cmbchina.com,但是www.cmbchina.com.cn和www.cmbchina.cn 却不一定属于招行。如果这两个域名被指向外表和招行一样的钓鱼网站,就可能会骗到部分用户的银行账号和密码。
  • 如果DNS服务器被恶意修改也是很危险的事情。比如登录招行网站时虽然 用了正确域名www.cmbchina.com,但由于DNS服务器是黑客控制的,很可能解析到一个钓鱼网站的IP
  • 即便是配了正规的DNS服务器,也是有可能中招的。比如正规的DNS服务器遭遇缓冲投毒- 之后,也会变得不可信。
  • NS除了能用来欺骗,还能当做攻击性武器。著名的DNS放大攻击就很让人头疼。利用这个放大效应,黑客只要控制少量电脑就能把一个大网站拖垮了.

一个古老的协议 ---- FTP


FTP是用明文传输的,如果对安全要求非常高,就不能采用这种方式

主动模式与被动模式


上网的学问 —- HTTP


image.png


This is for everyone

英国人不但借此传播了开放和分享的互联网精神,也展示了其在IT历史上的地位----从奠定现代计算机基础的 Alan Turing,到发明分组交换的 Donald Davies,再到万维网之父 Tim Berners—Lee,每一个重大环节都有英国人的参与。

Tim所实现的HTTP便是我们今天浏览网页所用的网络协议。他当年建立的网站至今还能访问,域名为http:/info.crm.ch,虽然这个页面已经更新过,但我们还可以在http//www3.org/Histor/1992110—ypertexthypertext/wwW/News/9201.html看到当年的内容。

解密https的包:

Edit->Preferences->Protocl->SSL->RSA key list.

解密所用的密钥只能在服务器端导出


无懈可击的Kerberos


‘在古希腊神话中,冥界的大门由一头烈犬看守。此犬长有三个头,兢兢业业地守在冥河边,从没有灵魂能在它醒着的时候逃离。这头烈犬就是Kerberos,安全守卫的象征。古希腊人下葬时要放好蜜饼,就是为了讨好它。现代游戏里也有它的英姿,比如《英雄无敌》里以一敌多的地狱烈犬。

这篇要介绍的身份认证协议也叫Kerberos,它有着非常广泛的应用,比如Windows域环境的身份认证就会用到它。我们用域账号登录电脑,就在不知不觉间完成了一次Kerberos认证过程。

Kerberos的认证结果是双向的----当账号A访问资源B时,不但B要确保A并非冒充,而且A也要查明B不是假货。我们一般只知道前者,比如前文提到的CIFS服务器就要在Session Setup中对造访者验明正身。后者则很少被提及,因为人们一般不会怀疑自己要访问的资源是假的。其实后者还是很有必要的,举一个例子:如果你老板伪造了一台网络打印机,但是你没法确认它的真假,就可能把求职信打到他办公室里去,然后就真的得出去求职了。西游记中其实也出现需要相互认证的场景,比如如来佛祖要认出假冒的访问者六耳猕猴,唐僧师徒也要识别山寨的“资源”小雷音寺。

双向认证的方式不止一种,最简单的做法是互报密码。这个过程就像电影中用暗号接头。A说:“江南风光好”, B说:“遍地红花开”。如果双方都核对无误,就可以激动地握手“同志,我可找到你了!”假如其中一方报错暗号,则接头失败。这种方式的弊端很多,最大的问题是不方便管理。比如在一个数百名员工共享几百台机器的环境中,当新加入一名员工时,就得在几百台机器上更新账号信息。相信没有管理员能忍受这样的环境。’


TCP/IP的故事


一开始这两个协议并没有分层,而是合在一起

TCP/IP的设计非常成功。30年来,底层的带宽、延时,还有介质都发生了翻天覆地的变化,顶层也多了不少应用,但TCP/IP却安如泰山。它不但战胜了国际标准化组织的OSI七层模型,而且目前还看不到被其他方案取代的可能。第一代从事TCP/IP工作的工程师,到了退休年龄也在做着朝阳产业。

令人费解的是,现在的大学课程还在介绍OSI七层模型。因为OSI模型的层数太多,很多学生根本理解不了,甚至连顺序都记不住。于是老师们就用“All People Seem To Need Data Processing”来帮助记忆,因为这7个单词的首字母和OSI模型每一层的首字母是一样的。大学的应试教育由此可见一斑。

‘到今天,OSI模型几乎名存实亡了,它对我们的影响只停留在还没来得及更新的教科书上’

可能是唯一篇无关技术的RFC:

rfc2468 -I REMEMBER IANA


举重若轻


“一小时内给你答复”


NAT(Network Address Translation)

Life is tough,but Wireshark makes it easy.


午夜铃声


乱序导致了重传,从而影响了性能

真的和探案一样…


深藏功与名


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

一般存储端的带宽大,客户端的带宽小。读文件时数据从大带宽进入小带宽,就如同大河水流入小河,有可能会溢出(表现在网络上就是拥塞)而导致性能问题。写文件时方向相反,所以拥塞概率低,性能就会好一些


棋逢对手

NFS网络锁管理器(NLM)


学无止境

➜ ~ tshark -h:


TShark (Wireshark) 2.4.3 (v2.4.3-0-g368ba1e)  
Dump and analyze network traffic.  
See https://www.wireshark.org for more information.  
Usage: tshark \[options\] ...  
Capture interface:  
 -i <interface>           name or idx of interface (def: first non-loopback)  
 -f <capture filter>      packet filter in libpcap filter syntax  
 -s <snaplen>             packet snapshot length (def: appropriate maximum)  
 -p                       don't capture in promiscuous mode  
 -I                       capture in monitor mode, if available  
 -B <buffer size>         size of kernel buffer (def: 2MB)  
 -y <link type>           link layer type (def: first appropriate)  
 -D                       print list of interfaces and exit  
 -L                       print list of link-layer types of iface and exit  
Capture stop conditions:  
 -c <packet count>        stop after n packets (def: infinite)  
 -a <autostop cond.> ...  duration:NUM - stop after NUM seconds  
 filesize:NUM - stop this file after NUM KB  
 files:NUM - stop after NUM files  
Capture output:  
 -b <ringbuffer opt.> ... duration:NUM - switch to next file after NUM secs  
 filesize:NUM - switch to next file after NUM KB  
 files:NUM - ringbuffer: replace after NUM files  
Input file:  
 -r <infile>              set the filename to read from (- to read from stdin)  
Processing:  
 -2                       perform a two-pass analysis  
 -M <packet count>        perform session auto reset  
 -R <read filter>         packet Read filter in Wireshark display filter syntax  
 (requires -2)  
 -Y <display filter>      packet displaY filter in Wireshark display filter  
 syntax  
 -n                       disable all name resolutions (def: all enabled)  
 -N <name resolve flags>  enable specific name resolution(s): "mnNtCd"  
 -d <layer\_type>==<selector>,<decode\_as\_protocol> ...  
 "Decode As", see the man page for details  
 Example: tcp.port==8888,http  
 -H <hosts file>          read a list of entries from a hosts file, which will  
 then be written to a capture file. (Implies -W n)  
 --enable-protocol <proto\_name>  
 enable dissection of proto\_name  
 --disable-protocol <proto\_name>  
 disable dissection of proto\_name  
 --enable-heuristic <short\_name>  
 enable dissection of heuristic protocol  
 --disable-heuristic <short\_name>  
 disable dissection of heuristic protocol  
Output:  
 -w <outfile|->           write packets to a pcap-format file named "outfile"  
 (or to the standard output for "-")  
 -C <config profile>      start with specified configuration profile  
 -F <output file type>    set the output file type, default is pcapng  
 an empty "-F" option will list the file types  
 -V                       add output of packet tree        (Packet Details)  
 -O <protocols>           Only show packet details of these protocols, comma  
 separated  
 -P                       print packet summary even when writing to a file  
 -S <separator>           the line separator to print between packets  
 -x                       add output of hex and ASCII dump (Packet Bytes)  
 -T pdml|ps|psml|json|jsonraw|ek|tabs|text|fields|?  
 format of text output (def: text)  
 -j <protocolfilter>      protocols layers filter if -T ek|pdml|json selected  
 (e.g. "ip ip.flags text", filter does not expand child  
 nodes, unless child is specified also in the filter)  
 -J <protocolfilter>      top level protocol filter if -T ek|pdml|json selected  
 (e.g. "http tcp", filter which expands all child nodes)  
 -e <field>               field to print if -Tfields selected (e.g. tcp.port,  
 \_ws.col.Info)  
 this option can be repeated to print multiple fields  
 -E<fieldsoption>=<value> set options for output when -Tfields selected:  
 bom=y|n               print a UTF-8 BOM  
 header=y|n            switch headers on and off  
 separator=/t|/s|<char> select tab, space, printable character as separator  
 occurrence=f|l|a      print first, last or all occurrences of each field  
 aggregator=,|/s|<char> select comma, space, printable character as  
 aggregator  
 quote=d|s|n           select double, single, no quotes for values  
 -t a|ad|d|dd|e|r|u|ud|?  output format of time stamps (def: r: rel. to first)  
 -u s|hms                 output format of seconds (def: s: seconds)  
 -l                       flush standard output after each packet  
 -q                       be more quiet on stdout (e.g. when using statistics)  
 -Q                       only log true errors to stderr (quieter than -q)  
 -g                       enable group read access on the output file(s)  
 -W n                     Save extra information in the file, if supported.  
 n = write network address resolution information  
 -X <key>:<value>         eXtension options, see the man page for details  
 -U tap\_name              PDUs export mode, see the man page for details  
 -z <statistics>          various statistics, see the man page for details  
 --capture-comment <comment>  
 add a capture comment to the newly created  
 output file (only for pcapng)  
 --export-objects <protocol>,<destdir> save exported objects for a protocol to  
 a directory named "destdir"  
Miscellaneous:  
 -h                       display this help and exit  
 -v                       display version info and exit  
 -o <name>:<value> ...    override preference setting  
 -K <keytab>              keytab file to use for kerberos decryption  
 -G \[report\]              dump one of several available reports and exit  
 default report="fields"  
 use "-G help" for more help  



相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
8月前
|
域名解析 网络协议
网络协议与攻击模拟-02-wireshark使用-显示过滤器
网络协议与攻击模拟-02-wireshark使用-显示过滤器
63 0
|
3月前
|
缓存 移动开发 JSON
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
108 0
|
3月前
|
存储 网络协议 Linux
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
38 0
|
3月前
|
网络协议 网络安全
【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手
【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手
28 0
|
3月前
|
存储 网络协议 网络安全
【网络安全 | 网络协议】结合Wireshark讲解IP协议
【网络安全 | 网络协议】结合Wireshark讲解IP协议
35 0
|
3月前
|
缓存 负载均衡 网络协议
《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)
《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)
44 0
|
3月前
|
存储 设计模式 缓存
《网络是怎么样连接的》读书笔记 - 集线器、路由器和路由器(三)
《网络是怎么样连接的》读书笔记 - 集线器、路由器和路由器(三)
28 0
|
3月前
|
缓存
《网络是怎么样连接的》读书笔记 - FTTH
《网络是怎么样连接的》读书笔记 - FTTH
37 0
|
3月前
|
存储 缓存 网络协议
《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)
《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)
53 0
|
3月前
|
域名解析 缓存 网络协议
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
101 1