局域网环境下相关网络协议的抓包解析

零:说明

最近读了一下Richard Stevens的《TCP/IP详解》,想找一点东西实践一下,就把两台电脑用网线连起来,使用wireshark抓包。这篇文章是基于抓包的结果,对于这种只有两台主机直接相连的最简单的局域网环境中协议使用的介绍。本文只是对所用到的协议做了一个简单的介绍,如果对某个协议的细节,报文结构等方面有兴趣可以自行深入探究,对于部分协议本文也附带了一些参考资料的链接。

本文介绍的所有协议均基于IPv4,两台主机的OS均为Windows10

协议的排序基本按照抓包到的时间顺序

由于书上和网络上找到的资料差异,下文中混用多播组播两个词,均表示IP传输中的Multicast方式

一:解析

1. LLDP

LLDP(Link Layer Discovery Protocol,链路层发现协议)顾名思义是一个基于链路层的协议。为了方便对在一个网络中具有不同特性的、来自不同厂商的设备进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息,也就是这个协议的用途。

LLDP的主要信息存放的区段称为LLDPPDU中,它又分为若干个不同的单元(称为TLV)。举几个比较常用的例子:

  • Chassis ID TLV。用于通告该LLDPDU发送者的chassis ID,可以有多种不同类型的标识方式。

  • Port ID TLV它用于标识发送该LLDPDU的设备的端口,与上一个类似。

  • Time To Live TLV。用于告诉接收端,它接收到的这些信息的有效期有多长。

由于该协议并不是局域网通信的重点,所以就不详细介绍了,放一张抓到的一个LLDP包,关于该协议更详细的介绍可以参见博客数据链路层学习之LLDP

LLDP包示例

2. DHCP无状态地址自动配置

对于只用于一条链路的地址(链路本地地址),如本文的环境,一台主机只需要找到一个在链路上未使用的地址即可。因为在一台主机没有手动配置地址,并且网络上没有DHCP服务器的情况下,基于IP的通信是不可能发生的,除非主机使用某种方式生成IP地址。链路本地地址范围在169.254.1.1 - 169.254.254.254。从本质上说,无状态地址自动配置就是一台主机在地址范围内随机选择一个地址,然后通过IPv4的ACD(自动冲突检测)来检查该地址是否已经被使用。ACD使用ARP协议,发送一个被称为ARP探测分组的分组,其中发送方地址被设为0,可以用于查看一个候选的IPv4地址是否被广播域中的其他系统使用。

经过这一步,主机就具有了一个IP地址(本例中为169.254.46.160)。同时对端主机也在随后使用了相同方法获得一个地址(本例中为169.254.252.226)

(事实上这时候还抓到了DHCP Discover的数据包,但是由于没有DHCP服务器的存在,所以并不会有回应)

ACD包

3. LLMNR

LLMNR(本地链路组播名称解析)在DNS服务器不可用时,DNS 客户端计算机可以使用本地链路组播名称解析,通过UDP发送到组播地址224.0.0.252:5355,来解析本地网段上的名称,使用的也是普通DNS的数据包格式。类似的另一种协议是mDNS(组播DNS),通过UDP协议发送到组播地址224.0.0.251:5353,用于家庭局域网等小型网络。
LLMNR为使用IPv4、IPv6或者同时使用这两种地址的设备提供了点对点名称解析服务,可以让同一子网中的IPv4和IPv6设备不需要WINS或DNS服务器就可以解析对方的名称。
例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络方面也非常有用。

不过在抓包的时候发现LLMNR的包均为query却没有相应,所以推测应该是没有起到效果。

LLMNR

4. IGMPv3

IGMP(Internet Group Management Protocol,互联网组管理协议)是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

在本例中,主机使用IGMP version3加入了如下组播组:

加入了224.0.0.251(252)组播组,这是LLMNR和mDNS所使用的组播地址。

加入了239.255.255.250组播组,这是SSDP(简单服务发现协议)所使用的组播地址,这是路由器的UPNP服务使用的协议。

关于报文格式以及组播相关的概念不是本文的重点,所以不在这里赘述,值得注意的是,主机在加入组播组的一段时间后会退出组播组,之后又加入,以下是抓到的IGMP报文。

IGMPv3

5. SSDP

SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。

SSDP有两种不同的类型:发现请求和存在通知。在本例中用到的只有发现请求(Discovery request 或查询请求)。SSDP客户端向此地址发送HTTP UDP 发现请求,查询某种类型的服务。SSDP服务在此地址上监听服务发现请求。当服务监听到的HTTP UDP 发现请求和它自己提供的服务匹配时,它以单播方式发送HTTP UDP 响应。

实际过程中只有对端主机发送了这个数据包,不过没有收到响应,放一个相关的包作为参考吧。关于SSDP更详细的介绍可以见 SSDP 简单服务发现协议

SSDP包

6. NBNS

NBNS(网络基本输入/输出系统 (NetBIOS) 名称服务器)在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。

NetBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API,不支持路由,NetBIOS提供三种不同的服务: 名字服务:名字登记和解析;会话服务:可靠的基于连接的通信;数据包服务:不可靠的无连接通信 。在Windows下通过nbtstat -n可以查询本地NetBIOS相关信息。

NBNS是动态DNS的一种,Microsoft的NBNS实现称为WINS(Windows Internet Name Service)。WINS数据库是动态更新的。计算机每当初始化TCP/IP后都会将它的NetBIOS名和IP地址的对应关系映射到WINS服务器的数据库中。如果在局域网络中抓取并观察数据包,会发现有大量的NBNS数据包。开启了WINS的主机就会发出广播,使用UDP协议,连137端口。

如果计算机需要知道一个NetBIOS名称或者域名对应的IP地址,首先会查找本地Hosts文件和NetBIOS缓存,其次会向WINS服务器发出请求,会发出NBNS数据包,最后会联系DNS服务器进行解析。

NBNS

7. BROWSER

协议全称Microsoft-Windows-BrowserService,是一个应用层协议。关于这个协议似乎没找到什么资料,看上去应该是类似于DNS的一个服务,官方文档上的描述是这样的:

The Microsoft-Windows-BrowserService component maintains a list of all available domains and servers on a network.

BROWSER
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,940评论 1 13
  • 转载 :http://www.cnblogs.com/maybe2030/p/4781555.html#_labe...
    奋斗live阅读 1,357评论 0 10
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,033评论 6 174
  • 0 01、网络管理的五大功能(包括每项功能的具体情况) 1.配置管理:ISO定义的管理功能域中,配置管理包括视图管...
    哈熝少主阅读 3,013评论 1 20
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,050评论 0 8