计算机的端口详解
计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。<br><br> 可以先了解面向连接和无连接协议(Connection-Oriented and Connectionless Protocols)<br> 面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传数前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。<br> 无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。<br><br> 区分“面向连接服务”和“无连接服务”的概念,特别简单、形象的例子是:打电话和写信。两个人如果要通电话,必须先建立连接——拨号,等待应答后才能相互传递信息,最后还要释放连接——挂电话。写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。TCP/IP协议在网络层是无连接的(数据包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。而“端口”,是传输层的内容,是面向连接的。协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。<br><br> 网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(开放系统互联参考模型,Open System Interconnection Reference Model)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力, 网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。<br><br> 应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问。<br><br> 类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。<br><br> 端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。<br><br>按端口号可分为3大类:<br>(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 <br>(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。 <br>(3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。<br><br>系统管理员可以“重定向”端口:<br> 一种常见的技术是把一个端口重定向到另一个地址。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。如果是这样改了,要访问本文就应改用这个地址http://wwd.3322.net:8080/net/port.htm(当然,这仅仅是理论上的举例)。<br> 实现重定向是为了隐藏公认的默认端口,降低受破坏率。这样如果有人要对一个公认的默认端口进行攻击则必须先进行端口扫描。大多数端口重定向与原端口有相似之处,例如多数HTTP端口由80变化而来:81,88,8000,8080,8888。同样POP的端口原来在110,也常被重定向到1100。也有不少情况是选取统计上有特别意义的数,象1234,23456,34567等。许多人有其它原因选择奇怪的数,42,69,666,31337。近来,越来越多的远程控制木马( Remote Access Trojans, RATs )采用相同的默认端口。如NetBus的默认端口是12345。Blake R. Swopes指出使用重定向端口还有一个原因,在UNIX系统上,如果你想侦听1024以下的端口需要有root权限。如果你没有root权限而又想开web服务,你就需要将其安装在较高的端口。此外,一些ISP的防火墙将阻挡低端口的通讯,这样的话即使你拥有整个机器你还是得重定向端口。<br> 土人,太敷衍大家了。:) 常用默认端口列表及功能中文注解<br><br>端口 功能英文注解 功能中文注解<br><br>1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 <br>2 compressnet Management Utility compressnet 管理实用程序 <br>3 compressnet Compression Process 压缩进程 <br>5 rje Remote Job Entry 远程作业登录 <br>7 echo Echo 回显 <br>9 discard Discard 丢弃 <br>11 systat Active Users 在线用户 <br>13 daytime Daytime 时间 <br>17 qotd Quote of the Day 每日引用 <br>18 msp Message Send Protocol 消息发送协议 <br>19 chargen Character Generator 字符发生器 <br>20 ftp-data File Transfer 文件传输协议(默认数据口) <br>21 ftp File Transfer 文件传输协议(控制) <br>22 ssh SSH Remote Login Protocol SSH远程登录协议 <br>23 telnet Telnet 终端仿真协议 <br>24 ? any private mail system 预留给个人用邮件系统 <br>25 smtp Simple Mail Transfer 简单邮件发送协议 <br>27 nsw-fe NSW User System FE NSW 用户系统现场工程师 <br>29 msg-icp MSG ICP MSG ICP <br>31 msg-auth MSG Authentication MSG验证 <br>33 dsp Display Support Protocol 显示支持协议 <br>35 ? any private printer server 预留给个人打印机服务 <br>37 time Time 时间 <br>38 rap Route Access Protocol 路由访问协议 <br>39 rlp Resource Location Protocol 资源定位协议 <br>41 graphics Graphics 图形 <br>42 nameserver WINS Host Name Server WINS 主机名服务 <br>43 nicname Who Is "绰号" who is服务 <br>44 mpm-flags MPM FLAGS Protocol MPM(消息处理模块)标志协议 <br>45 mpm Message Processing Module 消息处理模块 <br>46 mpm-snd MPM 消息处理模块(默认发送口) <br>47 ni-ftp NI FTP NI FTP <br>48 auditd Digital Audit Daemon 数码音频后台服务 <br>49 tacacs Login Host Protocol (TACACS) TACACS登录主机协议 <br>50 re-mail-ck Remote Mail Checking Protocol 远程邮件检查协议 <br>51 la-maint IMP Logical Address Maintenance IMP(接口信息处理机)逻辑地址维护 <br>52 xns-time XNS Time Protocol 施乐网络服务系统时间协议 <br>53 domain Domain Name Server 域名服务器 <br>54 xns-ch XNS Clearinghouse 施乐网络服务系统票据交换 <br>55 isi-gl ISI Graphics Language ISI图形语言 <br>56 xns-auth XNS Authentication 施乐网络服务系统验证 <br>57 ? any private terminal access 预留个人用终端访问 <br>58 xns-mail XNS Mail 施乐网络服务系统邮件 <br>59 ? any private file service 预留个人文件服务 <br>60 ? Unassigned 未定义 <br>61 ni-mail NI MAIL NI邮件? <br>62 acas ACA Services 异步通讯适配器服务 <br>63 whois+ whois+ WHOIS+ <br>64 covia Communications Integrator (CI) 通讯接口 <br>65 tacacs-ds TACACS-Database Service TACACS数据库服务 <br>66 sql*net Oracle SQL*NET Oracle SQL*NET <br>67 bootps Bootstrap Protocol Server 引导程序协议服务端 <br>68 bootpc Bootstrap Protocol Client 引导程序协议客户端 <br>69 tftp Trivial File Transfer 小型文件传输协议 <br>70 gopher Gopher 信息检索协议 <br>71 netrjs-1 Remote Job Service 远程作业服务 <br>72閚etrjs-2 Remote Job Service 远程作业服务 <br>73 netrjs-3 Remote Job Service 远程作业服务 <br>74 netrjs-4 Remote Job Service 远程作业服务 <br>75 ? any private dial out service 预留给个人拨出服务 <br>76 deos Distributed External Object Store 分布式外部对象存储 <br>77 ? any private RJE service 预留给个人远程作业输入服务 <br>78 vettcp vettcp 修正TCP? <br>79 finger Finger 查询远程主机在线用户等信息 <br>80 http World Wide Web HTTP 全球信息网超文本传输协议 <br>81 hosts2-ns HOSTS2 Name Server HOST2名称服务 <br>82 xfer XFER Utility 传输实用程序 <br>83 mit-ml-dev MIT ML Device 模块化智能终端ML设备 <br>84 ctf Common Trace Facility 公用追踪设备 <br>85 mit-ml-dev MIT ML Device 模块化智能终端ML设备 <br>86 mfcobol Micro Focus Cobol Micro Focus Cobol编程语言 <br>87 ? any private terminal link 预留给个人终端连接 <br>88 kerberos Kerberos Kerberros安全认证系统 <br>89 su-mit-tg SU/MIT Telnet Gateway SU/MIT终端仿真网关 <br>90 dnsix DNSIX Securit Attribute Token Map DNSIX 安全属性标记图 <br>91 mit-dov MIT Dover Spooler MIT Dover假脱机 <br>92 npp Network Printing Protocol 网络打印协议 <br>93 dcp Device Control Protocol 设备控制协议 <br>94 objcall Tivoli Object Dispatcher Tivoli对象调度 <br>95 supdup SUPDUP <br>96 dixie DIXIE Protocol Specification DIXIE协议规范 <br>97 swift-rvf(Swift Remote Virtural File Protocol)快速远程虚拟文件协议 <br>98 tacnews TAC News TAC新闻协议 <br>99 metagram Metagram Relay <br>100 newacct <br> 兄弟,如果能把1023以下的都弄出来。那样就更完美了。。 我去找找吧,我记得以前在图书馆里一本非常旧的解释TCP/IP的书里有介绍过完整的PORT端口,这个东西不是太好找。 脑子有坑吖,1024以后的全弄出来<br>1~65535个端口,写都写死他了 1023以下的叫做well known port. 好啊谢谢. 好东西<br><br>我喜欢 有再具体一些的吗<br><br>本人强烈期待中
页:
[1]
2