Total Pageviews

Wednesday 11 July 2012

网络基础知识



什么是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 是我们经常用到的协议,一旦在防火墙阻止,就不能正常上网了。