计算机网络 之 TCP和UDP的端口号解析

前言:今天了解一下tcp和udp报文的端口。发现一直以来都只是知道端口用于区分同一IP的服务器的不同服务,已经端口的大小。在查找traceroute的资料的时候,才了解到一些之前没注意到的东西。

(一) 准备知识:端口的介绍

  这一部分本该是介绍端口的作用等知识。但是网上上太多博文了。所以权且借用一篇博文供大家参考——《理解IP和端口》

(二) 端口的范围

  在 TCP 和 UDP(如下图) 的报文结构中都用源端口和目标端口号。

  

  如上图,其长度都是16个bit,所以端口号范围是0到(2^16-1),即 0到 65535。其中0到1023是IANA规定的系统端口,即系统保留窗口。

  More Advanced,

  根据RFC 6335的文档。端口号事实上分为三个范围:

  o 系统端口,即公认的端口,从 0 到 1023 。

  o 用户端口,又称为注册端口,从 1024 到 49151 。

  o 临时端口,又称动态端口(Ephemeral Port),从 49152 到 65535。


(三)各端口范围用途

  ① 系统端口,为系统默认保留端口,用于提供已存在的服务。例如HTTP为80端口,DNS服务为53端口。

  ② 用户端口,即为用户程序自行绑定的端口。一般开发人员开发新服务时,都会绑定此区间内的端口。

  附注:上述端口绑定的服务,在wikipedia上有相应的词条:List of TCP and UDP port numbers

  ③ 临时端口,此类端口,一般没有被公认绑定到那些服务上,可以用于提供任何用途。

(四)下面说一下临时端口

  在一般情况下,当客户端和服务端建立联系时,一般都通过一个四元组(server IP, server port, client IP, client port)来区分服务。除client Port外,其他三个基本都是确定的。对于client Port,除非客户端程序显示指定一个端口号,否则,IP 栈默认从临时端口号中选取一个用于绑定绑定本地端口,进而进行服务的区分。

  当连接断开后,该端口允许被重用。注意,大部分IP栈不会再该端口释放后,就马上重用它,而是等到临时端口都被使用过了,才会重新使用该端口。这也就解释了为什么每一次运行客户端程序获得的都不是同一个端口。

  另外,不同的操作系统对临时端口的范围规定不一样。由于连接都是由四元组区分,所以临时端口号的数量限制了同一时间内连接同一主机的独立连接的数量。特别地,当使用FTP时,假如同一时间内需要有大量文件同时传输,很容易就出现临时端口号不足,进而IP栈会抛出“地址已经被使用”的错误。

  附:在NCFTP的官网上提供了一份详细介绍临时端口的文档——《The Ephemeral Port Range》,其中就有提到具体的操作系统的临时端口数量。有兴趣可以看一下。

时间: 2024-11-09 15:55:37

计算机网络 之 TCP和UDP的端口号解析的相关文章

TCP和UDP基本原理

TCP和UDP基本原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务,TCP/IP协议族的传输层协议主要包括TCP和UDP ,TCP是面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输 ,UDP是无连接的传输协议,主要用于在相对可靠的网络上的数据传输,或用于对延迟较敏感的应用等. 1.传输层的作用 a>.提供面向连接或无连接的服务 b>.维护连接状态 c>

关于绑定IP地址与端口号的见解

"端口",通俗地讲就是一个通信通道的"门",各种计算机服务和通信都是通过特定的端口与外部计算机进行通信,像常见的WWW.FTP.Telnet服务一样. 随着计算机网络技术的发展,原来物理上的接口(如键盘.鼠标.网卡.显示卡等输入/输出接口)已不能满足网络通信的要求,TCP/IP协议作为网络通信的标准协议就解决了这个通信难题.TCP/IP协议集成到操作系统的内核中,这就相当于在操作系统中引入了一种新的输入/输出接口技术.因为在TCP/IP协议中引入了一种称之为&quo

网络端口号的绑定,以及分类

一. 计算机"端口"是英文port的义译,可以认为是计算机与外界通讯交流的出口.其中硬件领域的端口又称接口,如:USB端口.串行端口等.软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区. 1.端口的分类端口的分类根据其参考对象不同有不同划分方法,如果从端口的性质来分,通常可以分为以下几类.  (1)公认端口(Well Known Ports):这类端口也常称之为"常用端口".这类端

协议号与端口号详解

IP是网络层协议,IP头中的协议号用来说明IP报文中承载的是哪种协议(一般是传输层协议,比如6 TCP,17 UDP:但也可能是网络层协议,比如1 ICMP:也可能是应用层协议,比如89 OSPF).TCP/UDP是传输层协议,TCP/UDP的端口号用来说明是哪种上层应用,比如TCP 80代表WWW,TCP 23代表Telnet,UDP 69代表TFTP.目的主机收到IP包后,根据IP协议号确定送给哪个模块(TCP/UDP/ICMP...)处理,送给TCP/UDP模块的报文根据端口号确定送给哪个

linux查看端口号占用

1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 [步骤一]lsof -i lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具.以root用户来执行lsof -i命令,如下图 [步骤二]lsof -i:端口号 lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22,如下图 [步骤三]netstat -tunlp n

windows 系统防火墙 添加端口号方法

目前在大部分公司内使用的台式机和部分服务器都采用了Windows操作系统,而我么都知道相当一部分病毒.恶意程序.黑客都是利用扫描端口号,利用开放的端口进行入侵,此时大型企业都会将服务器的系统防火墙打开来关闭非常用端口.有些程序安装后可能会自动添加开放需要用到的端口,而有些软件则没有这么智能:又或者我们需要改变某个程序的端口号,改变后如果没有在系统防火墙中添加的话,那么连接就会被防火墙阻止掉,导致连接失败. 添加方法: 1.在<控制面板>中找到<Windows防火墙>点击打开. 2.

ip后面带端口号如何做域名解析

最近自己购买了个云服务器(阿里)和域名(腾讯,需要备案,相对比较麻烦),放上自己的工程,通过如下配置 服务器设置: 域名设置: 这样就可以通过默认的域名解析可以通过外网来访问自己的服务. 当然在内网的情况下,也是可以通过映射内网域名来实现绑定,如下图 现在有这么个情况,服务器有多个项目,只能通过端口号来区分,加上端口号显然不爽,想要实现ip后面带端口号解析可以通过记录类型,当然需要使用二级域名了 可以通过显性URL和隐形URL来实现.(隐形URL默认不支持,需要升级配置) 这样就可以通过上图方式

TCP相关(控制位、3次握手、4次挥手、端口号分类TIME_WAIT状态...)

TCP报文格式 一.6个控制位中 URG和PSH的区别: (1)紧急URG(URGent), 当URG=1时, 表明紧急指针字段有效.它告诉操作系统此报文中有紧急数据,应尽快传输(相当于高优先级数据),而不要按照原来的排队顺序来传送.例如,已经发送了很长的一个程序要在远地的主机上运行,但后来发现了一些问题,需要取消该程序的运行.因为用户从键盘发送中断指令(Control+c),如果不使用紧急数据,那么两个字符将存储在接收TCP的缓存末尾.只有在所有的数据被处理完毕后,这两个字符才会被交付到接收方

TCP/IP 端口号大全

TCP/IP 端口号大全 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务:发送无止境的字符流 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口:有时被文件服务协议(