IP和端口
一、ip地址
用来在网络中标记一台电脑,在本地局域网上是唯一的
ip地址组成:网络地址+主机地址
[图片上传中...(image-108a76-1605797430040-0)]
1.1 A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,
地址范围1.0.0.1-126.255.255.254
二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
可用的A类网络有126个,每个网络能容纳1677214个主机
1.2 B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,
地址范围128.1.0.1-191.255.255.254
二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
可用的B类网络有16384个,每个网络能容纳65534主机
1.3 C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”
范围192.0.1.1-223.255.255.254
二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
C类网络可达2097152个,每个网络能容纳254个主机
1.4 D类地址用于多点广播
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中
多点广播地址用来一次寻址一组计算机 s 地址范围224.0.0.1-239.255.255.254
1.5 E类IP地址
以“1111”开始,为将来使用保留
E类地址保留,仅作实验和开发用
1.6 私有ip
在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就是属于私网IP,不在公网中使用的,它们的范围是:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
1.7 注意
IP地址127.0.0.1~127.255.255.255用于回路测试,
如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1
就可以测试本机中配置的Web服务器。
查看本机ip地址:
win cmd中输入ipconfig
Linux 终端输入ifconfig
修改ip地址: sudo ifconfig 网卡名 192.168.1.108
检测网络:ping ip / ping 域名
二、端口
一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器?其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如,通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25(SMTP服务)、110(POP3服务)号端口。
通过不同端口,计算机就可以与外界进行互不干扰的通信。
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535,但是实际上常用的端口才几十个。
未定义的端口相当多。这是那么多黑客程序都可以采用某种方法,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,强行控制计算机打开那个特殊的端口。这个程序就是“后门”程序。这些后门程序就是常说的木马程序。简单地说,这些木马程序在入侵前是先通过某种手段在一台个人计算机中植入一个程序,打开某个(些)特定的端口,俗称“后门”( BackDoor),使这台计算机变成一台开放性极高(用户拥有极高权限)的FTP服务器,然后从后门就可以达到侵入的目的。
2.1 公认端口(Well Known Ports)
从0到1023
可以理解为,一些常用的功能使用的号码是估计的,好比 电话号码110、10086、10010一样
一般情况下,如果一个程序需要使用知名端口的需要有root权限
协议/服务名称 | 端口号 | 简介 |
---|---|---|
ftp | 20、21 | File Transfer Protocol 文件传输协议,20用于连接,21用于传输 |
ssh | 22 | Secure Shell 安全外壳协议,专为远程登录会话和其他网络服务提供安全性的协议 |
http | 80 | Hyper Text Transfer Protocol 超文本传输协议,用于网页浏览 |
DNS | 53 | Domain Name System 域名系统,域名解析 |
https | 443 | Hypertext Transfer Protocol Secure 超文本传输安全协议,用于安全浏览网页 |
www代理服务 | 8080 | Apache Tomcat web server,进行网页浏览 |
smtp | 25 | Simple Mail Transfer Protocol 简单邮件传输协议 |
telnet | 23 | 不安全的文本传送 |
pop3 | 110 | Post Office Protocol |
常见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号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
2.2 注册端口(Registered Ports)
从1024到49151
松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。
这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表。
2.3 动态/私有端口(Dynamic Ports / Private Ports)
从49151到65535。
理论上,不应为服务分配这些端口。
实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。
2.4 怎样查看端口 ?
-
用“netstat -an”查看端口状态
-
lsof -i [tcp/udp]:2425
一台拥有ip地址的主机可以提供许多服务,比如HTTP(万维网),FTP(文件传输)、SMTP(电子邮件)等。这些服务完全可以通过1个ip地址来实现,ip地址与网络服务的关系是一对多的关系,实际上是通过ip地址+端口号来区分不同的服务。
端口不是一一对应的 比如你的电脑作为客户机访问一台www服务器时,www服务器使用80端口与你的电脑通信,但你的电脑则可能使用3457这样的端口
2.5 TCP和UDP协议端口
根据所提供的服务方式的不同,端口(此处的“端口”特别针对传输层而言)又可分为“TCP协议端口”和“UDP协议端口”两种(其实其他协议也有“端口”,但它们不称之为端口,而是称之为“协议号”,如IP协议号)。
TCP协议是一种直接与接收方进行的连接,发送信息以后,可以确认信息是否到达的“连接方式”。
UDP协议、IP协议是一种不是直接与接收方进行连接,只管把信息放在网上发出去,而不管信息是否到达的“无连接方式”。
2.6 绑定IP地址与端口号的见解
客户和服务器通过调用函数bind时可以指定IP地址或端口号,可以都指定,也可以都不指定。
据期望的结果,对sin_addr和sin_port,或sin6_addr和sin6_port应置为什么值,下面做了总结:
进程指定 | 结果 | IP地址端口 |
---|---|---|
通配地址 | 0 | 内核选择IP地址和端口 |
通配地址 | 非0 | 内核选择IP地址,进程指定端口 |
本地IP地址 | 0 | 进程指定IP地址,内核选择端口 |
本地IP地址 | 非0 | 进程指定IP地址和端口 |
2.7 客户端
TCP客户端:
-
当TCP客户未绑定IP地址,当它调用connect时内核会根据外出接口给它绑定一个IP地址和一个临时端口号。并且TCP服务器在接到这个连接后会以这个IP地址作为回应数据报的目的IP地址。
-
当TCP客户绑定了IP地址,它就为发出的数据连接指定了一个源IP地址,并且TCP服务器在接到这个连接后会以这个IP地址作为回应数据报的目的IP地址。
-
TCP客户只能根据四元组(原端口号,原IP地址,目的端口号,目的IP地址)接受数据报。
UDP客户端:
-
当UDP客户未绑定IP地址,当它调用sendto时内核会根据外出接口给它绑定一个IP地址和一个临时端口号。(UDP客户可以接收到达它绑定的临时端口的任何UDP数据报)。
-
当UDP客户绑定了IP地址,它就为发出的数据报指定了一个源IP地址,并且UDP服务器在接到这个数据报后会以这个IP地址作为回应数据报的目的IP地址。(UDP客户只能接收到达它绑定的临时端口并且目的地址为它绑定的IP地址的UDP数据报)。
-
当UDP客户调用connect,内核记录下对方的IP地址和端口号,它们包含在传递给connect的套接口地址结构中,并为UDP客户绑定了一个临时端口号和IP地址。(UDP客户只能接收目的IP地址为它绑定的IP地址和端口号并且源IP地址为它指定对方的IP地址和端口号的数据报)。
2.8 服务端
TCP服务器:
-
当TCP服务器绑定通配IP地址,套接口会接收到达它绑定端口的任何TCP连接。并以接收的目的IP地址作为它的源IP地址(用以确定四源组),以接收的源IP地址作为它的目的IP地址发回应答。
-
当TCP服务器绑定本地IP地址,这就限制了套接口只接收到达它绑定端口并且目的地址为此IP地址的客户连接。以绑定的目的IP地址作为源IP地址(当然,绑定的IP地址肯定与接收连接的目的IP地址相同,否则它不会接收),并以接收的源IP地址作为它的目的IP地址发回应答。
UDP服务器:
-
当UDP服务器绑定通配IP地址,套接口会接收到达它绑定端口的任何UDP数据报。并以数据报的外出接口的主IP地址为源IP地址,以接收到的源IP地址作为它的目的IP地址发回应答。
-
当UDP服务器绑定本机IP地址,这就限制了套接口只接收到达它绑定端口并且目的地址为此IP地址的UDP数据报。并以绑定的IP地址作为源IP地址,以接收的源IP地址作为它的目的IP地址发回应答。
-
当UDP服务器调用connect,内核记录下对方的IP地址和端口号,它们包含在传递给connect的套接口地址结构中,并为UDP服务器绑定了一个临时端口号和IP地址。(UDP服务器只能接收目的IP地址为它绑定的IP地址和端口号并且源IP地址为它指定对方的IP地址和端口号的数据报)。