什么是TCP/IP 协议
TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,是Internet国际互联网络的基础。
TCP/IP 是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括IP、TCP、UDP、ICMP、ARP等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是 Internet协议族,而不单单是TCP和IP。
什么是IP、TCP、ICMP、UDP
IP (Internet Protocol),网际协议;IP是TCP/IP 的最底层,高层协议都要转化为IP包,IP包含了源地址和目的地址,路由决策也发生在IP层;
TCP (Transmission Control Protocol),传输控制协议,一种运行于 IP 之上的、可靠的、面向连接的传输层协议。TCP运行在IP之上,是基于数据流连接和面向的协议,应用程序把数据要经过TCP/IP的分割成若干包,这样数据就以字节流发送和接收,到达目的地后,TCP/IP 再按顺序进行组装。TCP/IP 要保证机器与机器之间的连接的可靠性,还要有纠错。TCP是否被选择,取决于应用程序或服务;
UDP (User Datagram Protocol) ,用户数据报协议 ,一种运行于 IP 之上的、不可靠的、无连接的传输层协议。象TCP一样运行在IP之上,是基于数据报或分组的协议,UDP/IP 可以直接发送和接收数据报文,而不必做验证,这一点与TCP/IP 不同。
ICMP (Internet Control Message Protocol),网际控制消息协议;它包括了数据包的错误、控制等相关信息。比如ping 命令就是利用ICMP来测试一个网络的连接情况的工具;
在互联网上,区分每台计算机是使用IP地址, IP协议和路由就是为了将数据包(Packet)发送到正确的主机。只是确定数据包的传送路径还不够,还需要保证传输过程中,数据的完整性,所以就有了TCP协议。
TCP协议提供了可靠的面向对象的数据流传输服务的规则和约定。简单的说在TCP模式中,对方发一个数据包给你,你要发一个确认数据包给对方。通过这种确认来提供可靠性。网络上常见的服务:WWW、FTP、SMTP等都是TCP协议。
在对数据传送的稳定性不做太多要求的情况下,可以使用UDP协议,由于UDP不需要确认数据是否正确传输,更加快速。
DNS查询、网络即时通讯(QQ)、一些P2P影像软件等主要使用UDP协议。
什么是端口(Ports)
互联网上的每台电脑都有自己的唯一IP,信息的传递就在不同IP之间。
由于一台电脑要运行很多不同的程序,只有IP是不够的,系统不知道将这个数据包分配给哪个具体程序。
于是,为了区别不同的程序,系统就为程序分配不同的端口,数据的传输就是在两台电脑两个端口间进行。
简单的说不同的端口可以代表不同的程序,同一个程序可以使用不止一个端口。
端口的分类
通常的客户端/服务器连接有两种方式,主动连接和被动连接。对应于本机的客户端端口和服务端端口。
服务端监听端口:当本机运行某些网络服务程序或者P2P软件时,会开启相应的端口(Listening),等待客户端的接入。
客户端端口:当我们的浏览器需要连接远程WWW服务器时,需要启用一个大于1024的随机端口,连接WWW服务器的HTTP端口。
通常0-1023 端口会保留给系统服务使用,所以又叫做Well Known Ports 公认端口。例如,80端口分配给WWW服务,21端口分配给FTP服务等。
本机客户端程序所启用的随机端口是在1025-65535之间,这些端口又叫作Dynamic Ports 动态端口。是因为它 一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用 程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配 一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
通常XP系统的动态端口是 1025-5000,如果到了5000,系统会返回1025,再按顺序使用。
端口的数量
共有65536 (2^16)个端口,0-65535
端口的安全性
经常有人说,我的机子开了xxx个端口,xx端口不安全。
其实,端口是没有安全性的,真正影响安全的是端口背后的服务。
因为端口是由服务开启的,要关闭端口,就要关闭相应的服务。
所以,本机要运行什么服务,一定要使用最新、最安全的版本。至于,开启哪个端口,并不是最重要的。没有不安全的端口,只有不安全的服务(程序)。
连接的双向性和4个重要参数
单向的发送数据包是不可能建立一条连接。通常使用浏览器访问一个网站,是本机启用一个大于1024的随机端口,发送数据包到服务器的服务端口,通常是固定80端口。 服务器再将我们需要的资料,由80端口,返回本机建立连接的随机端口。
于是有下面4个重要参数:
来源IP ( Source Address )
目的 IP ( Destination Address )
来源端口 ( Source Port )
目的端口 ( Destination Port )
注意来源和目的是相对的,要看数据包传输的方向。
端口(开放、关闭、隐藏)
前面讲过开放(Open)的端口与本机运行的服务有关。
Windows系统默认运行的服务会开放一些端口,要关闭这些端口,需要关闭相应的服务。最简单的方法是关闭不用的服务,并且使用工具,比如Windows Worms Doors Cleaner。
端口关闭(Closed),说明没有服务启用这个端口,端口没有被系统分配,一个关闭的端口当收到连接请求以后,会返回一个错误提示(通常是ICMP "Destination Unreachable")。 例如,当你关闭BT、eMule等P2P软件以后,你的系统会大量向外发送ICMP "Destination Unreachable" 目标不可达,表示端口已经关闭。
端口隐藏(Stealthed),端口隐藏和端口关闭是一样的,不允许连入,只是不返回出错信息而已。
从安全上讲,端口隐藏和端口关闭,没有大的区别,都是不允许非法连入。端口隐藏的好处是不返回任何信息,使入侵者无法得知具体的端口、系统信息;另外,由于丢弃数据包这样的静默处理,可以使端口扫描一直等待结果而超时。
端口在线检测
网络扫描是有前提的,必须是外网IP,不能通过路由器、代理服务器上网,否则结果不准确。
如果,你是ADSL路由器上网,想要获得正确的结果。必须:
1.断开路由器,使用拨号上网的方式,然后扫描。
2.或者,将本机IP加入到路由器的DMZ,或者在路由器映射所有端口。
主要的防火墙在线检测站点:
Shields UP!
PCFlank
Nmap Online
Symentic Security Check
HackerWhacker
什么是DNS
要找到指定的主机,我们用到IP;要传输数据,需要TCP、UDP、ICMP。问题是IP地址是很难记忆的,于是我们使用了主机域名来解决这个问题。普通用户可以通过 www.google.com 来访问网站,而不需要输入IP地址。
实际上,这中间有一项服务:Domain Name System (DNS),将域名转换成IP地址。个人电脑必须向域名服务器(DNS:Domain Name Server)查询IP地址,然后浏览器才会根据返回的IP地址,连接相应的主机服务器。
DNS 是我们经常用到的协议,一旦在防火墙阻止,就不能正常上网了。