IIILinux系统编程_36TCP/IP协议基础_6UDP段格式

IIILinux系统编程_36TCP/IP协议基础_6UDP段格式

ID:46284390

大小:73.00 KB

页数:3页

时间:2019-11-22

IIILinux系统编程_36TCP/IP协议基础_6UDP段格式_第1页
IIILinux系统编程_36TCP/IP协议基础_6UDP段格式_第2页
IIILinux系统编程_36TCP/IP协议基础_6UDP段格式_第3页
资源描述:

《IIILinux系统编程_36TCP/IP协议基础_6UDP段格式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第36章TCP/IP协议基础6.UDP段格式下图是UDP的段格式(该图出自[TCPIP])。图36.11.UDP段格式■16位源端口号16位冃的端口号16位UDP长度16位UDP检验和0151631数据(如果右)8字节下面分析一帧基于UDP的TFTP协议帧。以太网首部0000:00055d67d0b100055d6158a80800IP首部0000:45000010:005393250000801125eccOa80037cOa80020:0001UDP首部0020:05d40045003fac40TFTP协议0020:0001,

2、c,,:,Vq,0030:WO’rqTqw’e'OO0040:TOO'bTK'sTzPOOST200VV0050:'WOOfs'T'Z'e'OO*0*0060:00以太网首部:源MAC地址是00:05:5d:61:58:a8,0的MAC地址是00:05:5d:67:d0:b1,上层协议类型0x0800表示IP。IP首部:每一个字节0x45包含4位版木号和4位首部长度,版本号为4,即IPv4,首部长度为5,说明IP首部不带有选项字段。服务类型为0,没冇使用服务。16位总长度字段(包括IP首部和IP层payload的长度)为0x005

3、3,即83字节,加上以太网首部14字节可知整个帧长度是97字节。IP报标识是0x9325,标志字段和片偏移字段设置为0X0000,就是DF=0允许分片,MF=0此数据报没有更多分片,没冇分片偏移。TTL是0x80,也就是128。上层协议0x11表示UDP协议。IP首部校验和为0x25ec,源主机IP是c0a80037(192.168.0.55),目的主机IP是c0a80001(192.168.0.1)。UDP首部:源端口号0x05d4(1492)是客户端的端口号,目的端口号0x0045(69)是TFTP服务的well-known端

4、口号。UDP报长度为0x003f,即63字节,包括UDP首部和UDP层payload的长度。UDP首部和UDP层payload的校验和为0xac40oTFTP是基于文木的协议,各字段Z间用字节0分隔,开头的0001表示请求读取一个文件,接下来的各字段是:c:qwerq.qwenetasciiblksize512timeout10tsize0一般的网络通信都是像TFTP协议这样,通信的双方分别是客户端和服务器,客户端主动发起请求(上面的例子就是客户端发起的请求帧),而服务器被动地等待、接收和应答请求。客户端的IP地址和端口号唯一标

5、识了该主机上的TFTP客户端进程,服务器的IP地址和端口号唯一标识了该主机上的TFTP服务进程,由于客户端是主动发起请求的一方,它必须知道服务器的IP地址和TFTP服务进程的端口号,所以,一些常见的网络协议有默认的服务器端口,例如HTTP服务默认TCP协议的80端口,FTP服务默认TCP协议的21端口,TFTP服务默认UDP协议的69端口(如上例所示)。在使用客户端程序时,必须指定服务器的主机名或IP地址,如果不明确指定端口号则采用默认端口,请读者查阅ftp、tftp等程序的manpageT解如何指定端口号。/etc/servic

6、es屮列出了所有well-known的服务端口和对应的传输层协议,这是由lANACIn怕metAssignedNumbersAuthority)规定的,其中有些服务既可以用TCP也可以用UDP,为了清晰,IANA规定这样的服务采用相同的TCP或UDP默认端口号,而另外一些TCP和UDP的相同端口号却对应不同的服务。很多服务有well-known的端口号,然而客户端程序的端口号却不必是well-known的,往往是毎次运行客户端程序时由系统口动分配一个空闲的端口号,用完就释放掉,称为ephemeral的端口号,想想这是为什么。前面提

7、过,UDP协议不面向连接,也不保证传输的可靠性,例如:•发送端的UDP协议层只管把应用层传来的数据封装成段交给IP协议层就算完成任务了,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返冋任何错误信息。•接收端的UDP协议层只管把收到的数据根据端II号交给相应的应用程序就算完成任务了,如果发送端发来多个数据•包并且在网络上经过不同的路由,到达接收端时顺序已经错乱了,UDP协议层也不保证按发送吋的顺序交给应用层。•通常接收端的UDP协议层将收到的数据放在一个固定大小的缓冲区中等待应用程序來提取和处理,如杲应用程序提取和处

8、理的速度很慢,而发送端发送的速度很快,就会丢失数据包,UDP协议层并不报告这种错误。因此,使用UDP协议的应用程序必须考虑到这些可能的问题并实现适当的解决方案,例如等待应答、超时重发、为数据包编号、流量控制等。一般使用UDP协议的应用程序实现都比较

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。