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

“端口”,通俗地讲就是一个通信通道的“门”,各种计算机服务和通信都是通过特定的端口与外部计算机进行通信,像常见的WWW、FTP、Telnet服务一样。

随着计算机网络技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入/输出接口)已不能满足网络通信的要求,TCP/IP协议作为网络通信的标准协议就解决了这个通信难题。TCP/IP协议集成到操作系统的内核中,这就相当于在操作系统中引入了一种新的输入/输出接口技术。因为在TCP/IP协议中引入了一种称之为“Socket”(套接字)应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。

有了这些端口后,这些端口又是如何工作的呢?例如,一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器?其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如,通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25(SMTP服务)、110(POP3服务)号端口。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。

每台计算机主机中可以有65 535个端口,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。这是那么多黑客程序都可以采用某种方法,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,强行控制计算机打开那个特殊的端口。这个程序就是“后门”程序。这些后门程序就是常说的木马程序。简单地说,这些木马程序在入侵前是先通过某种手段在一台个人计算机中植入一个程序,打开某个(些)特定的端口,俗称“后门”( BackDoor),使这台计算机变成一台开放性极高(用户拥有极高权限)的FTP服务器,然后从后门就可以达到侵入的目的。

1.端口的分类

端口的分类根据其参考对象不同有不同划分方法,如果从端口的性质来分,通常可以分为以下几类。

公认端口(Well Known Ports):这类端口也常称之为“常用端口”。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口不可再重新定义它的作用对象。例如,80号端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口像木马这样的黑客程序通常不会利用。为了使大家对这些常用端口多一些认识,在本章后面将详细把这些端口所对应的服务进行列表,供各位理解和参考。

注册端口(Registered Ports):端口号从1 024到49 151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表。

动态和/或私有端口(Dynamic and/or Private Ports):端口号从49 152到65 535。理论上,不应为服务分配这些端口。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。

2.TCP和UDP协议端口

如果根据所提供的服务方式的不同,端口(此处的“端口”特别针对传输层而言)又可分为“TCP协议端口”和“UDP协议端口”两种(其实其他协议也有“端口”,但它们不称之为端口,而是称之为“协议号”,如IP协议号)。因为计算机之间相互通信一般采用这两种通信协议。前面所介绍的“连接方式”是一种直接与接收方进行的连接,发送信息以后,可以确认信息是否到达。这种方式大多采用TCP协议;另一种不是直接与接收方进行连接,只管把信息放在网上发出去,而不管信息是否到达,也就是前面所介绍的“无连接方式”。这种方式大多采用UDP协议,IP协议也是一种无连接方式。对应使用以上这两种通信协议的服务所提供的端口,也就分为“TCP协议端口”和“UDP协议端口”。

使用TCP协议的常见端口主要有以下几种。

FTP:定义了文件传输协议,使用21号端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。

Telnet:它是一种用于远程登录的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是纯字符界面的,支持BBS的服务器将23号端口打开,对外提供服务。

SMTP:定义了简单邮件传送协议,现在很多邮件服务器用的都是这个协议,用于发送邮件。如常用的免费邮件服务中用的是这种邮件服务器端口,所以在电子邮件设置中常看到有SMTP端口设置这个栏,服务器开放的是25号端口。

POP3:与SMTP对应,用于接收邮件。通常情况下,POP3协议所用的是110号端口。也是说,只要有相应的使用POP3协议的程序(例如Foxmail或Outlook),就可以不以Web方式登录进邮箱界面(如是163邮箱就没有必要先进入网易网站,再进入自己的邮箱来收信),直接用邮件程序就可以收到邮件。

使用UDP协议端口常见的有以下几种。

HTTP:这是大家用得最多的协议,就是常说的“超文本传输协议”。上网浏览网页时,就得在提供网页资源的计算机上打开其80号端口以提供服务。常说的WWW服务、Web服务器用的是这个端口。

DNS:用于域名解析服务。这种服务在Windows NT系统中用得最多。互联网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,它以纯数字的形式表示。然而这却不便记忆,于是出现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。

SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

OICQ:程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用的是无连接的协议,也是说它用的是UDP协议,其服务器使用8 000号端口,侦听是否有信息到来,客户端使用4 000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。

客户和服务器通过调用函数bind时可以指定IP地址或端口号,可以都指定,也可以都不指定,根据期望的结果,对sin_addr和sin_port,或sin6_addr和sin6_port应置为什么值,下面做了总结:

进程指定 结果 IP地址端口

通配地址 0 内核选择IP地址和端口

通配地址 非0 内核选择IP地址,进程指定端口

本地IP地址 0 进程指定IP地址,内核选择端口

本地IP地址 非0 进程指定IP地址和端口

l 客户端

1. TCP客户端:

1) 当TCP客户未绑定IP地址,当它调用connect时内核会根据外出接口给它绑定一个IP地址和一个临时端口号。并且TCP服务器在接到这个连接后会以这个IP地址作为回应数据报的目的IP地址。

2) 当TCP客户绑定了IP地址,它就为发出的数据连接指定了一个源IP地址,并且TCP服务器在接到这个连接后会以这个IP地址作为回应数据报的目的IP地址。

3) TCP客户只能根据四元组(原端口号,原IP地址,目的端口号,目的IP地址)接受数据报。

2. UDP客户端:

1) 当UDP客户未绑定IP地址,当它调用sendto时内核会根据外出接口给它绑定一个IP地址和一个临时端口号。(UDP客户可以接收到达它绑定的临时端口的任何UDP数据报)。

2) 当UDP客户绑定了IP地址,它就为发出的数据报指定了一个源IP地址,并且UDP服务器在接到这个数据报后会以这个IP地址作为回应数据报的目的IP地址。(UDP客户只能接收到达它绑定的临时端口并且目的地址为它绑定的IP地址的UDP数据报)。

3) 当UDP客户调用connect,内核记录下对方的IP地址和端口号,它们包含在传递给connect的套接口地址结构中,并为UDP客户绑定了一个临时端口号和IP地址。(UDP客户只能接收目的IP地址为它绑定的IP地址和端口号并且源IP地址为它指定对方的IP地址和端口号的数据报)。

l 服务器端

1. TCP服务器:

1) 当TCP服务器绑定通配IP地址,套接口会接收到达它绑定端口的任何TCP连接。并以接收的目的IP地址作为它的源IP地址(用以确定四源组),以接收的源IP地址作为它的目的IP地址发回应答。

2) 当TCP服务器绑定本地IP地址,这就限制了套接口只接收到达它绑定端口并且目的地址为此IP地址的客户连接。以绑定的目的IP地址作为源IP地址(当然,绑定的IP地址肯定与接收连接的目的IP地址相同,否则它不会接收),并以接收的源IP地址作为它的目的IP地址发回应答。

2. UDP服务器:

1) 当UDP服务器绑定通配IP地址,套接口会接收到达它绑定端口的任何UDP数据报。并以数据报的外出接口的主IP地址为源IP地址,以接收到的源IP地址作为它的目的IP地址发回应答。

2) 当UDP服务器绑定本机IP地址,这就限制了套接口只接收到达它绑定端口并且目的地址为此IP地址的UDP数据报。并以绑定的IP地址作为源IP地址,以接收的源IP地址作为它的目的IP地址发回应答。

3) 当UDP服务器调用connect,内核记录下对方的IP地址和端口号,它们包含在传递给connect的套接口地址结构中,并为UDP服务器绑定了一个临时端口号和IP地址。(UDP服务器只能接收目的IP地址为它绑定的IP地址和端口号并且源IP地址为它指定对方的IP地址和端口号的数据报)。

时间: 2024-12-11 16:25:12

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

ip地址+进程端口号+路径参数同样实现restful访问

1.ip地址+进程端口号+路径参数同样实现restful访问 2. 我:还有个问题,龙哥,ip地址+端口+路径参数,也能实现restful访问吧,:可以 我:好我:所以,我只要访问,服务器ip地址+nginx端口号+路径参数,就能跳转到对应的tomcat,对吧?:是的

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

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

Python学习之——Tcp/ip基础/IP地址/DNS/端口简介

一.为什么需要tcp/ip,什么是tcp/ip? TCP/IP协议,即Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求.通俗

Android中验证输入是否为汉字及手机号,邮箱验证,IP地址可用port号验证

1,验证是否为汉字 // 验证昵称 private boolean verifyNickname() { String nickname = edt_username.getText().toString(); if (nickname == null || nickname.length() == 0) { edt_username.setError("不能为空"); return false; } int len = 0; char[] nickchar = nickname.to

Apache搭建Web主机(虚拟目录、分别基于IP地址、端口、主机名)

Apache介绍 Apache HTTP Server是一款开源的网站服务软件,在Web服务器领域中长期保持着超过半数的份额,Apache服务器可以运行在Linux.UNIX.Windows等多数操作系统平台中. Apache服务器在功能.性能和安全性等方面的表现都是比较突出的,可以较好地满足Web服务器用户的应用需求,其主要特点包括以下几个方面: 开放源代码 跨平台应用 支持各种Web编程语言 模块化设计 运行非常稳定 良好的安全性 构建虚拟Web主机 在同一台Apache服务器中运行多个We

IP地址和端口

IP地址是网络中计算机的唯一标识.没有IP地址,计算机无法接入互联网. IPv4地址32bit,用点分十进制表示,如202.38.64.3 IPv6地址128bit,用冒号分割十六进制表示,如2001:da8:d800:1075:5813:f666:5737:3 端口是传输层使用的用于区分不同的服务的一个16bit的正整数.例如80号端口是web服务,23号端口是telnet服务. 通过IP地址找到计算机,通过端口找到该计算机上的服务进程. 一个完整的网间进程通信需要一个五元组来标识:源地址.源

服务器本地localhost端口通,走IP地址的端口不通的解决方法

今天帮一个网友解决了一个关于端口的问题,他们公司自己开发的一套软件需要移至到另外一台服务器上面,然后全部设置好了后发现登陆软件报错,检查发现走192.168.1.1:8080不通,尝试修改成localhost:8080后可以本地登录,但是这样远程无法访问. 查看系统已经关闭了防火墙,没有安装杀毒软件等端口限制,telnet尝试确认IP地址的8080端口不通.这就很奇怪了localhost能通,IP地址的不通,又没有防火墙.杀毒软件的限制,难道还有其他的系统策略可以限制?之后搜索他的系统版本win

DOS命令(可查看本机IP地址各个网卡号)

网卡号指的是网卡的编号,也就是网卡的物理地址.查看方法:(以win7为例)打开开始 输入cmd 回车后进入dos命令行模式,然后输入ipconfig /all 回车查看结果找到“无线局域网适配器 无线网络连接”或者“以太网适配器 本地连接”下的“物理地址”,其后的一串数字就是网卡的物理地址.2.在DOS命令行窗口:1)输入:ipconfig/all,回车,可查看本机IP地址.MAC地址.网关.DNS等2)输入:chkdsk /r命令,回车检查修复硬盘(必要时再输入Y):3)输入:systemin

几句话掌握子网掩码、ip地址、主机号、网络号、网络地址、广播地址

1.191.172.16.10.33/27 中的/27也就是说子网掩码是255.255.255.224 即27个全1 2.从子网掩码255.255.255.252得出其网络位为30位,所以只有剩下的2位为主机位,主机位全零的为网络地址,主机位全1的为广播地址,剩余的主机号码为主机地址范围 3.公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责.这些IP地址分配给注册并向Inter NIC提出申