- 浏览: 1208288 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
1.单播,多播,广播的介绍
1.1.单播(unicast)
单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己MAC地址不一致的数据。
1.2.广播(unicast)
广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络,例如A类网址的广播就是 netid.255.255.255,如果是子网,则是netid.netid.subnetid.255;如果是所有的子网(B类IP)则是则是 netid.netid.255.255。广播所用的MAC地址FF-FF-FF-FF-FF-FF。网络内所有的主机都会收到这个广播数据,网卡只要把 MAC地址为FF-FF-FF-FF-FF-FF的数据交给内核就可以了。一般说来ARP,或者路由协议RIP应该是以广播的形式播发的。
1.3.多播(multicast)
可以说广播是多播的特例,多播就是给一组特定的主机(多播组)发送数据,这样,数据的播发范围会小一些(实际上播发的范围一点也没有变小),多播的MAC地址是最高字节的低位为一,例 如01-00-00-00-00-00。多播组的地址是D类IP,规定是224.0.0.0-239.255.255.255。
虽然多播比较特殊,但是究其原理,多播的数据还是要通过数据链路层进行MAC地址绑定然后进行发送。所以一个以太网卡在绑定了一个多播IP地址之后,必 定还要绑定一个多播的MAC地址,才能使得其可以像单播那样工作。这个多播的IP和多播MAC地址有一个对应的算法,在书的p133到p134之间。可以看到 这个对应不是一一对应的,主机还是要对多播数据进行过滤。
个人的看法:广播和多播的性质是一样的,路由器会把数据放到局域网里面,然后网卡对这些数据进行过滤,只拿到自己打算要的数据,比如自己感兴趣的多 播数据,自己感兴趣的组播数据。当一个主机运行了一个处理某一个多播IP的进程的时候,这个进程会给网卡绑定一个虚拟的多播mac地址,并做出来一个多播 ip。这样,网卡就会让带有这个多播mac地址的数据进来,从而实现通信,而那些没有监听这些数据的主机就会把这些数据过滤掉,换句话说,多播,是让主机 的内核轻松了,而网卡,对不起,您就累点吧。
一些文章也印证了这种想法,最明显的就是局域网监听的原理、实现与防范
2.一些验证性实验
这些实验并不是很复杂,我们只是要ping一下一般的ip和一个广播地址。首先我ping一下自己所在的子网的某一台主机:
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time=1ms TTL=255
可以看到,机器返回的是一台主机的回应结果,进而推测,如果我ping一个广播地址呢?结果如下
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.218: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
可以看到,ping返回了一些随机的ip的结果,这些ip都是与主机在同一子网内的ip。我们可以看到,广播实际上是给处于子网内的所有ip发信。
再来一个多播的例子,但是要实现这个多播并不容易,因为我不知道网络内有多少个多播组,就只好利用几个特殊的多播地址来验证了。
对于多播地址,有几个特殊的多播地址被占用,他们是
- 224.0.0.1--该子网内所有的系统组。
- 224.0.0.2--该子网内所有的路由器。
- 224.0.1.1--网络实现协议NTP专用IP。
- 224.0.0.9--RIPv2专用IP
所以只要ping这几个IP,就应该能得到一些结果,比如说我ping 224.0.0.2。
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
我们可以看到,这回ping只返回了一个ip的回应。而这个就是我的网关的地址,这也验证了224.0.0.2是所有路由器的多播(组播)地址
3.IGMP协议
IGMP的作用在于,让其他所有需要知道自己处于哪个多播组的主机和路由器知道自己的状态。一般多播路由器根本不需要知道某一个多播组里面有多少个主机,而只要知道自己的子网内还有没有处于某个多播组的主机就可以了。只要某一个多播组还有一台主机,多播路由器就会把数据传输出去,这样,接受方就会通过网卡过滤功能来得到自己想要的数据。为了知道多播组的信息,多播路由器需要定时的发送IGMP查询,IGMP的格式可以看书,各个多播组里面的主机要根据查询来回复自己的状态。路由器来决定有几个多播组,自己要对某一个多播组发送什么样的数据。
这种查询回应数据报的TTL一般是1,而且就算是出错也不产生ICMP差错(没必要)。
发表评论
-
VPN技术比较
2009-03-30 19:07 1702VPN技术比较 来源: 作 ... -
关于SSL VPN技术原理及其应用全面解析
2009-03-30 19:01 2488随着电子商务、企业信息化、教育信息化等信息化进程的推进,整个社 ... -
HTTP Status Messages
2009-03-30 17:31 1312http://www.btinternet.com/~wild ... -
IP地址精解
2009-03-30 15:08 1119为什麽我们要学二进位 ... -
TCP协议握手协商通信详解
2009-03-30 15:06 24011、建立连接协议(三 ... -
IPv6远水不解近渴 IPv4仍需挑大梁
2009-03-30 14:52 1264“IP地址资源的危机并 ... -
TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
2009-03-30 14:52 1971TCP一共有四个主要的定 ... -
TCP/IP详解学习笔记(12)-TCP的超时与重传
2009-03-30 14:51 1885超时重传是TCP协议保证 ... -
TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
2009-03-30 14:50 1595目前建立在TCP协议上的 ... -
TCP/IP详解学习笔记(10)-TCP连接的建立与中止
2009-03-30 14:50 1583TCP是一个面向连接的 ... -
TCP/IP详解学习笔记(9)-TCP协议概述
2009-03-30 14:49 1685于看到了TCP协议,这是T ... -
TCP/IP详解学习笔记(8)-DNS域名系统
2009-03-30 14:49 1581前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,M ... -
TCP/IP详解学习笔记(6)-UDP协议
2009-03-30 14:48 16261.UDP简要介绍UDP是传输层协议,和TCP协议处于一个分 ... -
TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
2009-03-30 14:47 11851.静态IP选路 1.1.一 ... -
TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
2009-03-30 14:46 19211.IMCP协议介绍前面讲到 ... -
TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
2009-03-30 14:45 1562把这三个协议放到一起 ... -
TCP/IP详解学习笔记(2)-数据链路层
2009-03-30 14:43 1749数据链路层有三个目 ... -
TCP/IP详解学习笔记(1)-基本概念
2009-03-30 14:34 1355http://blog.chinaunix.net/u2/ ... -
使用 netstat 命令监视网络状态
2009-03-30 14:33 2843http://docs.sun.com/app/docs/do ... -
TCP/IP详解
2009-03-30 13:58 1766TCP和UDP处在同一层---运输层,但是TCP和UDP最不同 ...
相关推荐
TCP/IP详解前3章的学习笔记主要涵盖了网络通信的基础知识,特别是TCP/IP协议栈的四个主要层次,即应用层、传输层、网络层和数据链路层。这些层次定义了网络通信的不同方面,确保数据能够在不同主机之间可靠地传输。 ...
TCP/IP协议是互联网通信的基础,它定义了网络设备如何连接到互联网以及数据如何在它们之间传输的规则。...通过学习TCP/IP协议,我们可以更好地理解网络通信的细节,从而更有效地设计和实现网络应用。
TCP/IP详解的学习笔记涵盖了IP协议的关键概念和技术细节。IP,即网际协议,是互联网通信的基础,具有不可靠和无连接的特点。不可靠意味着IP不保证数据报能成功到达目的地,错误时会丢弃数据包并发送ICMP消息。可靠性...
LwIP(Light-Weight IP)是一个开源的TCP/IP协议栈实现,专门针对嵌入式系统进行优化,以减少代码大小和内存占用,同时还能提供完整的TCP/IP协议功能。 文档的主要内容包括对LwIP协议栈核心组件的讲解,涵盖了内存...
- **SCTP**: 可靠传输协议,是TCP的增强版本,支持多宿主和多路径通信。 4. **应用层** - **HTTP/HTTPS**: 用于网页浏览的标准协议。 - **POP3/SMTP/IMAP**: 电子邮件相关的协议。 - **FTP**: 文件传输协议。 ...
因特网(Internet)是由全球各地的计算机网络相互连接而成的国际性网络,它采用TCP/IP协议族作为通信标准。因特网不仅改变了人们的生活方式,还极大地推动了全球信息化进程。 **1.3 网络服务** 常见的网络服务包括:...
1. **硬件TCP/IP加速器**: W5500内置了完整的TCP/IP协议栈,包括TCP、UDP、IP、ICMP、ARP、IGMP等,所有网络处理都在硬件层面完成,无需CPU介入,极大地提高了网络通信效率。 2. **多通道SPI接口**: W5500通过SPI...