关于网络通信中TCP/UDP的端口范围-以及在Linux系统中的使用权限说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于网络通信中TCP/UDP的端口范围-以及在Linux系统中的使用权限说明相关的知识,希望对你有一定的参考价值。
关于TCP/UDP的端口号的范围都是 0 ~ 65535
根据IANA定义,可以参考如下链接:
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
IANA将这些端口分成了3类,Last Updated 2023-03-30
Port numbers are assigned in various ways, based on three ranges:
System Ports (0-1023), 也有地方称为 Well Known Ports 众知/周知 端口
User Ports (1024-49151), 也有地方称为 Registered Ports 可注册 端口
Dynamic and/or Private Ports (49152-65535)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
也许在实际我们的认识和一些现象中,只是将端口分为了2部分 0~1023 和 1024 ~ 65535 号端口
最明显的就是在Linux系统中(笔者在Redhat系统中测试发现),对于普通用户而言只能监听1024 ~ 65535 号端口
如下,我们可以通过如下命令就可以看到效果
[qq-5201351@Localhost ~]$ nc -l 1023 Ncat: bind to 0.0.0.0:1023: Permission denied. QUITTING. [qq-5201351@Localhost ~]$ nc -l 1024 & [1] 290059 [qq-5201351@Localhost ~]$ netstat -lanpt |grep 1024 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:1024 0.0.0.0:* LISTEN 290059/nc [qq-5201351@Localhost ~]$
可以看出普通用户只能监听1024及1024以后的端口,对于UDP端口也是如此,同样,对于65535号端口也是可以监听的,
另外:对于0号端口也是一个特殊的端口,通过文档看到 TCP/UDP 的0号端口都是Reserved
如果使用root用户去监听TCP或者UDP的0号端口,都会收到报错:Ncat: Invalid port number "0". QUITTING.
尊重别人的劳动成果 转载请务必注明出处: https://www.cnblogs.com/5201351/p/17278622.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!
网络 应用&传输层笔记
应用层
应用层常用的协议和各自对应的TCP/UDP端口:
DNS TCP/UDP 53
HTTP TCP 80
SMTP TCP 25
POP UDP 110
Telnet TCP 23
DHCP UDP 67
FTP TCP 20和21
关于端口号的分配可以提一下:
公认端口:0-1023
已注册端口:1024-49151
动态&私有端口:49152-65535
下面是一些常用的应用层协议略解
1. DNS(Domain Name System)
主要功能:将对用户友好的域名转化为后台服务器的IP地址
DNS客户端本身也是一个服务,在配置网络连接的时候,系统会要求用户提供DNS服务器。对于家庭个人电脑而言,大多数时候ISP都会提供。在DOS命令行键入nslookup可以查看到当前网络状况下DNS服务器的配置信息。DNS的解析过程是这样的。DNS服务器上有一个named守护进程监听请求,当收到某个客户端发来的请求时,服务器先检查自身记录,查找看本次请求的域名可不可以凭自身的力量解析。如果不行那就要连接到其他的DNS Server,当得到结果之后DNSServer会向客户端返回结果,同时将本次得到的域名和IP地址之间的对应关系存储下来,如果下次还有类似的请求那么就可以凭自身记录快速处理了。
关于DNS Server的层级构造:DNS服务器采用树状结构来实现检索目标。一台根服务器记录了顶级服务器的信息(比如它们的IP地址)。顶级服务器中,每一个服务器各自管理一个顶级域名(比如.com)。服务器中记录的信息是二级服务器的信息。二级服务器中维护的是顶级域名+二级域名的组合,其记录信息是三级服务器的信息……以此类推,只有最下层的服务器才会记录一个完整域名和IP地址之间的映射关系。图示:
对于这个实例中的mail.cisco.com这个域名来说,保存过其相关所有信息的DNS服务器,包括跟服务器,.com的一级服务器,cisco.com的二级服务器,mail.cisco.com的三级服务器都叫做这个域名的主域名服务器。
2. HTTP 和 WEB服务
通常情况下通过浏览器访问某个文件的过程:
用户在浏览器地址栏中输入一个URL,浏览器解析URL得到三部分分别是协议或方案(http://)、域名、请求文件的路径。浏览器向DNS请求将域名转化为IP地址,然后根据HTTP协议的要求向这个地址发送一个GET请求,要求访问相关文件。服务器收到相关请求之后将相关文件的内容传送给请求发起方,然后浏览器解释得到的文件内容并显示页面。
HTTP框架内的会话发起种类有很多种,其中最常用的就是GET和POST。区别就不多啰嗦了,懂点web的人都懂的。除了这两个还有像PUT,DELETE这类的。
3. POP,SMTP协议以及MTA,MDA,MUA进程
对用户而言,POP协议用来规定接收邮件的规则,SMTP用来规定发送邮件的规则,所以一般邮件服务器和客户机都肯定要同时支持两种协议。MUA进程就是运行在客户机上,用来实现这两个协议的程序。相对的邮件服务器上则是靠MTA和MDA两个进程来实现收发邮件协议的。一个邮件服务器首先用MTA从客户端的MUA或者另一台服务器的MTA那里获得邮件,查看邮件的宛先,如果这个地址维护在本地服务器上,那么就把邮件转送给MDA,由服务器的MDA进程负责分发;如果没有在本地服务器上找到相关目的地址,那么就用MTA把这个邮件转发给另一台服务器的MTA。
4. DHCP协议
DHCP服务器的功能是提供自动分配的IP,子网掩码,缺省网关等网络层的参数。现在一般家庭里都有无线路由器了,无线路由器中就自带了一个DHCP服务器的。如果没有接入无线的话那么DHCP服务由ISP提供。
采用DHCP虽然能够快速自动地分配网络参数,让管理接入接出频繁的网络方便很多,但是也有一些缺点,比如我们需要网关,交换机这类网络设备的IP得是固定IP比较好,另外DHCP不对接入的设备有安全性检查导致安全性也会降低一些。
传输层
传输层的作用主要有:
跟踪各个会话(通过在PDU中写入端口号实现)
将数据分段(适应传输方式,提高效率和容错性)
在接收端重组数据段
标识应用程序
流量控制
错误回复(通过重传)
开始会话
根据应用层的不同要求而选择不同的协议(TCP/UDP)
客户端发送请求的时候传输层程序会为这个数据段随机选择动态分配的端口,比如在DOS中键入netstat -an可以看到状态为ESTABLISHED的会话,本地的地址后面的端口都是一个很大的数,就是随机分配来的。而一般服务端的话为了让客户端能够方便地找到服务,其肯定是一个静态的固定端口号。ip:port这样的形式表示的一个通信地址也被称为套接字。
TCP和UDP两种协议的不同:
TCP是可靠传输,UDP是尽力传输。TCP在其PDU的报头中有序列号等信息,占20个字节。UDP则没有这部分信息,其报头只占8个字节。对于TCP而言,它会在发送数据之后跟踪数据的到达情况,确认是否需要重发。同时TCP还在接收到数据之后按照序列号的顺序重组数据,而这两项功能UDP是没有的。相对而言TCP消耗的网络成本更大一些因为它传递更多的数据且需要在会话之前先握手连接(作为检测到达情况的准备工作),而UDP的成本小一些。基于TCP和UDP的代表的应用有:
TCP web浏览器,电子邮件,文件传输
UDP 视频音频流,IP电话(中途丢几个包也不影响整体数据表现的)
哎…那啥。。当时实在是过于青涩,有很多东西觉得没必要记录的记了下来,还错了很多。。我都不太想继续整理下去了【捂脸】
以上是关于关于网络通信中TCP/UDP的端口范围-以及在Linux系统中的使用权限说明的主要内容,如果未能解决你的问题,请参考以下文章