欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供
photoshop教程
,
ps教程
,
flash教程
,
cad教程
,
网页制作教程
,
excel教程
,
asp教程
,
vb教程
,
3d教程
,
c语言教程
,
html教程
,
coreldraw教程
,
dreamweaver教程
,
java教程
,
3dmax教程
等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图
设为首页
简繁切换
加入收藏
栏目待定
留言本站
您现在的位置:
无师自通-教程网
>>
网络原理
>>
TCPIP
>> 教程正文
没有公告
图形图像教程
photoshop
Flash
3DS Max
CorelDraw
Fireworks
Illustrator
Maya
AutoCAD
网络应用教程
局域网教程
综合布线
系统集成
无盘网络组建
网络产品资料
网络风险评估
光纤通信
网络接入
程序设计教程
C语言教程
vb教程
C#教程
VC语言教程
C++教程
Java教程
数据库教程
Delphi教程
操作系统教程
WindowsXP
Linux
Win2003
Vista
Win2000
苹果系统
Dos教程
FreeBSD
办公软件教程
Word教程
Excel教程
Powerpoint
Wps教程
Office视频
系统相关
系统工具
杀毒查毒
WEB开发教程
Asp教程
Jsp教程
Php教程
Xml教程
Html教程
CSS教程
CGI-Perl教程
ASP.NET
教程: TCP/IP教程-基础-UDP服务器的设计
教程: TCP/IP教程-基础-UDP服务器的设计
字,打印数字端口号而不是服务名称。-f inet选项表示只报告TCP和UDP端点。
本地地址以*.7777格式打印,星号表示任何本地IP地址。
当服务器创建端点时,它可以把其中一个主机本地IP地址包括广播地址指定为端点的本地IP地址。只有当目的IP地址与指定的地址相匹配时,进入的UDP数据报才能被送到这个端点。用我们的sock程序,如果在端口号之前指定一个IP地址,那么该IP地址就成为该端点的本地IP地址。例如:
sun % sock -u -s 140.252.1.29 7777
就限制服务器在S L IP接口(140.252.1.29)处接收数据报。netstat输出结果显示如下:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
udp 0 0 140.252.1.29.7777 *.*
如果我们试图在以太网上的主机bsdi以地址140.252.13.35向该服务器发送一份数据报,那么将返回一个ICMP端口不可达差错。服务器永远看不到这份数据报。这种情形如图11 - 2 1所示。
有可能在相同的端口上启动不同的服务器,每个服务器具有不同的本地IP地址。但是,一般必须告诉系统应用程序重用相同的端口号没有问题。
使用sockets API时,必须指定SO_REUSEADDRsocket选项。在sock程序中是通过-A选项来完成的。
在主机sun上,可以在同一个端口号(8888)上启动5个不同的服务器:
除了第一个以外,其他的服务器都必须以- A选项启动,告诉系统可以重用同一个端口号。5个服务器的netstat输出结果如下所示:
在这种情况下,到达服务器的数据报中,只有带星号的本地IP地址,其目的地址为140.252.1.255,因为其他4个服务器占用了其他所有可能的IP地址。
如果存在一个含星号的IP地址,那么就隐含了一种优先级关系。如果为端点指定了特定IP地址,那么在匹配目的地址时始终优先匹配该IP地址。只有在匹配不成功时才使用含星号的端点。
11.12.5 限制远端IP地址
在前面所有的netstat输出结果中,远端IP地址和远端端口号都显示为*.*,其意思是该端点将接受来自任何IP地址和任何端口号的UDP数据报。大多数系统允许UDP端点对远端地址进行限制。
这说明端点将只能接收特定IP地址和端口号的UDP数据报。sock程序用- f选项来指定远端IP地址和端口号:
sun % sock -u -s -f 140.252.13.35.4444 5555
这样就设置了远端IP地址140.252.13.35(即主机bsdi)和远端端口号4444 。服务器的有名端口号为5555。如果运行netstat命令,我们发现本地IP地址也被设置了,尽管我们没有指定。
Proto Recv-Q Send-Q Local Address Foreign Address (state)
udp 0 0 140.252.13.33.5555 140.252.13.35.4444
这是在伯克利派生系统中指定远端IP地址和端口号带来的副作用:如果在指定远端地址时没有选择本地地址,那么将自动选择本地地址。它的值就成为选择到达远端IP地址路由时将选择的接口IP地址。事实上,在这个例子中, sun 在以太网上的IP地址与远端地址140.252.13.33相连。
图11 - 2 2总结了UDP服务器本身可以创建的三类地址绑定。
在所有情况下,lport指的是服务器有名端口号, localIP必须是本地接口的IP地址。表中这三行的排序是UDP模块在判断用哪个端点接收数据报时所采用的顺序。最为确定的地址(第一行)首先被匹配,最不确定的地址(最后一行IP地址带有两个星号)最后进行匹配。
11.12.6 每个端口有多个接收者
尽管在RFC中没有指明,但大多数的系统在某一时刻只允许一个程序端点与某个本地IP地址及UDP端口号相关联。当目的地为该IP地址及端口号的UDP数据报到达主机时,就复制一份传给该端点。端点的IP地址可以含星号,正如我们前面讨论的那样。
例如,在SunOS 4.1.3中,我们启动一个端口号为9999的服务器,本地IP地址含有星号:
sun % sock -u -s 9999
接着,如果启动另一个具有相同本地地址和端口号的服务器,那么它将不运行,尽管我们指定了- A选项:
sun % sock -u -s 9999 我们预计它会失败
can't bind local address: Address already in use
sun % sock -u -s -A 9999 因此,这次尝试- A参数
can't bind local address: Address already in use
在一个支持多播的系统上(第12章),这种情况将发生变化。多个端点可以使用同一个IP地址和UDP端口号,尽管应用程序通常必须告诉API是可行的(如,用- A 标志来指明SO_REUSEADDRsocket选项)。
4.4BSD支持多播传送,需要应用程序设置一个不同的socket选项(SO_REUSEPORT)以允许多个端点共享同一个端口。另外,每个端点必须指定这个选项,包括使用该端口的第一个端点。
当UDP数据报到达的目的IP地址为广播地址或多播地址,而且在目的IP地址和端口号处有多个端点时,就向每个端点传送一份数据报的复制(端点的本地IP地址可以含有星号,它可匹配任何目的IP地址)。但是,如果UDP数据报到达的是一个单播地址,那么只向其中一个端点传送一份数据报的复制。选择哪个端点传送数据取决于各个不同的系统实现。
UDP是一个简单协议。它的正式规范是RFC 768 [Postel 1980],只包含三页内容。它向用户进程提供的服务位于IP层之上,包括端口号和可选的检验和。我们用UDP来检查检验和,并观察分片是如何进行的。
接着,我们讨论了ICMP不可达差错,它是新的路径M T U发现功能中的一部分(2.9节)。用Traceroute和UDP来观察路径MTU发现过程。还查看了UDP和ARP之间的接口,大多数的ARP实现在等待ARP应答时只保留最近传送给目的端的数据报。
当系统接收IP数据报的速率超过这些数据报被处理的速率时,系统可能发送ICMP源站抑制差错报文。使用UDP时很容易产生这样的ICMP差错。
上一页
[1]
[2]
[3]
下一页
教程录入:admin 责任编辑:admin
上一篇教程:
教程: TCP/IP教程-基础-广播和多播
下一篇教程:
教程: TCP/IP教程-基础-IGMP(Internet组管理协议)报文及协议
【字体:
小
大
】【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
教程: IPV6教程-基础-TCP/IP网络…
教程: IPV6教程-基础-IPv6解决方…
教程: HUB-基础教程-集线器(HUB)…
教程: VLAN-基础教程-经典配置 V…
教程: TCP/IP教程-基础-广播和多…
教程: TCP/IP教程-基础-IGMP(Int…
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
管理登录
|
免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
辽ICP备07003958号