UDP协议和端口号

本文介绍了UDP协议的基本概念,包括其作为无连接数据报服务的特点及结构组成,并详细解释了端口号的作用及其分类,如系统端口、登记端口和客户端使用端口。

UDP协议和端口号

 


1.UDP定义

UDP协议全称为用户数据报协议(User Datagram Protocol,UDP)是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据附加了源端口号和目标端口号等UDP报头字段后,直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少且较小的情况下,UDP比TCP更加高效。


2.UDP结构

udp由源端口号字段(16位)目标端口号字段(16位)长度字段(16位)校验和字段(16位)以及数据构成。

(1)源端口号字段,作用与TCP数据段中的端口字段相同,用来标识源端口的应用进程。在需要对方回信时用,不需要时可用全0。

(2)目标端口号字段,作用与TCP数据段中的端口字段相同,用来标识目标端口的应用进程。在目标交付报文时必须用到。

(3)长度字段,作用是标明UDP头部和UDP数据的总长度字节。

(4)校验和字段,作用是用来对UDP头部和UDP数据进行校验,有错就丢弃。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。


3.端口号

协议端口号(Protocol Port Number,Port)是标识目标主机进程的方法。TCP/IP使用16位的端口号来标识端口,所以端口的取值范围位[0,65535]。

端口可以分为系统端口、登记端口、客户端使用端口。

(1)系统端口,端口的取值范围为[0,1023]

                                                                                                                    常见的协议端口号

协议号名称功能    
20FTP-DATAFTP数据传输   
21FTPFTP控制    
22SSHSSH登录    
23TELNET远程登录    
25SMTP简单邮件传输协议   
53DNS域名解析    
67DHCPDHCP服务器开启,用来监听和接受客户请求信息
68DHCP客户端开启,用于接受DHCP服务器的消息回复
69TFTP简单FTP    
80HTTP超文本传输   
110POP3邮局协议    
143IMAP交互式邮件存取协议   
161SNMP简单网关协议   
162SNMP(trap)SNMP Trap报文   

(2)登记端口是为没有熟知端口的应用程序使用的,端口范围为[1024,49151].这些端口必须在IANA登记以避免重复。

(3)客户端口使用端口,这类端口仅在客户进程运行时动态使用,使用完毕后,进程会释放端口。该端口范围为[49152,65535]

 

 

 

### TCP UDP 协议中的端口号 #### 端口号区别 TCPUDP都使用端口号来区分不同的应用程序服务。然而,在具体实现上存在差异: - **TCP端口**:TCP是一个面向连接的协议,这意味着在两个设备之间建立可靠的数据传输之前需要先完成三次握手过程。每个TCP连接由四元组定义——源IP地址、目的IP地址、源端口号以及目的端口号。这使得每一个会话都能被唯一识别[^1]。 - **UDP端口**:相比之下,UDP是无连接的,它不需要像TCP那样经历复杂的初始化阶段就能发送数据包。因此,虽然同样依赖于相同的四元组来进行基本的身份验证,但由于缺乏确认机制,其安全性较低但也更加快捷高效[^2]。 #### 使用场景对比 由于各自特性不同,这两种协议适用于不同类型的应用场合: - 对于那些对可靠性有较高要求的服务来说,比如文件下载、邮件收发等,则更适合采用TCP协议。因为这些操作通常不允许丢失任何一部分信息,并且能够容忍一定程度上的延迟以换取更高的准确性[^3]。 - 而对于实时性强但又不太在意偶尔丢包的情况,例如在线视频播放、语音通话或是游戏联机等功能,则更多地会选择UDP作为底层通讯方式。这类应用场景往往追求更低延时而愿意牺牲部分精确度。 #### 常见服务对应的默认端口 一些广泛使用的互联网服务都有约定俗成的标准端口号用于监听请求: - HTTP (超文本传输协议): 80/tcp, 443/tcp(HTTPS)[^1] - FTP (文件传输协议): 控制命令通道21/tcp;实际数据传送可能涉及其他临时分配给客户端的高编号端口 - SMTP (简单邮件传输协议): 25/tcp - DNS (域名解析系统): 53/udp 或 tcp (取决于查询类型) - DHCP (动态主机配置协议): 客户端67/udp, 服务器68/udp ```python # Python代码示例展示如何创建简单的TCP服务器并绑定到特定端口 import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_address = ('localhost', 9999) # 绑定至本地回环接口第9999号端口 server_socket.bind(server_address) print(f"Starting up on {server_address}") server_socket.listen() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值