• TCP/IP基础


    TCP/IP的通讯协议

        这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。

    TCP/IP整体构架概述

        TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:



        应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。


        传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。


        互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。


        网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

    TCP/IP中的协议

        以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:
    1. IP

    网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

        IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从 TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

        高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

    2. TCP

        如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

        TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

        面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

    3.UDP

        UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询 ---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS (DNS也使用TCP)。

        欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

    4.ICMP

        ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。

    5. TCP和UDP的端口结构

        TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet 客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。

        两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:



    源IP地址---发送包的IP地址。

    目的IP地址---接收包的IP地址。

    源端口---源系统上的连接的端口。

    目的端口---目的系统上的连接的端口。


        端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP 使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯

    子网的设定

      若公司不上Internet,那一定不会烦恼IP Address的问题,因为可以任意使用所有的IP Address,不管是A Class或是B Class,这个时候不会想到要用Sub Net,但若是上Internet那IP Address便弥足珍贵了,目前全球一阵Internet热,IP Address已经愈来愈少了,而所申请的IP Address目前也趋保守,而且只有经申请的IP Address能在Internet使用,但对某些公司只能申请到一个C CLass的IP Address,但又有多个点需要使用,那这时便需要使用到Subnet,这篇短文说明Subnet的原理及如何规划。
         1.Subnet Mask的介绍
           设定任何网路上的任何设备不管是主机、PC、Router等皆需要设定IP Address,而跟随著IP Address的是所谓的NetMask,这个NetMask主要的目的是由IP Address中也能获得NetworkNumber,也就是说IP Address和Net Mask作AND而得到Network Number,如下所示:
         IP Address
         192.10.10.611000000.00001010.00001010.00000110
           NetMask
         255.255.255.011111111.11111111.11111111.00000000
           AND
         Network Number
         192.10.10.011000000.00001010.00001010.00000000
           NetMask有所谓的预设值,如下所示
           Class IP Address 范围 Net Mask
           A 1.0.0.0-126.255.255.255255.0.0.0
           B 128.0.0.0-191.255.255.255255.255.0.0
           C 192.0.0.0-223.255.255.255255.255.255.0
      在预设的Net Mask都只有255的值,在谈到Subnet Mask时这个值便不一定是255了。在完整一组C Class中如203.67.10.0-203.67.10.255NetMask255.255.255.0,203.67.10.0称之 Network Number(将IP Address和Netmask作AND),而203.67.10.255是Broadcast的IP Address,所以这?两者皆不能使用,实际只能使用203.67.10.1--203.67.10.254等254个IP Address,这是以255.255.255.0作NetMask的结果,而所谓Subnet Msk尚可将整组C Class分成数组Network Number,这要在NEtMask作手脚,若是要将整组C CLass分成2个Network Number那NetMask设定为255.255.255.192,若是要将整组C CLass分成8组Network Number则NetMask要为255.255.255.224,这是怎麽来的,由以上知道Network Number是由IP Address和NetMask作AND而来的,而且将NetMask以二进位表示法知道是1的会保留,而为0的去掉
           192.10.10.193--11000000.00001010.00001010.10000001
           255.255.255.0--11111111.11111111.11111111.00000000
           --------------------------------------------------------------
           192.10.10.0--11000000.00001010.00001010.00000000
      以上是以255.255.255.0为Net Mask的结果,Network Number是192.10.10.0,若是使用255.255.255.224作Net Mask结果便有所不同  
         192.10.10.193--11000000.00001010.00001010.10000000   
         255.255.255.224--11111111.11111111.11111111.11100000   
         --------------------------------------------------------------   
         192.10.10.192--11000000.00001010.00001010.10000000   
      此时Network Number变成了192.10.10.192,这便是Subnet。那要如何决定所使用的NetMask,255.255.255.224以二进位表示法为11111111.11111111.11111111.11100000,变化是在最後一组,11100000便是224,以三个Bit可表示2的 3次方便是8个Network Number
           NetMask二进位表示法可分几个Network
           255.255.255.011111111.11111111.11111111.000000001
           255.255.255.128   
           11111111.11111111.11111111.100000002
           255.255.255.192
           11111111.11111111.11111111.110000004
           255.255.255.224
           11111111.11111111.11111111.111000008
           255.255.255.240
           11111111.11111111.11111111.1111000016
           255.255.255.248   
           11111111.11111111.11111111.1111100032
           255.255.255.252
           11111111.11111111.11111111.1111110064   
      以下使用255.255.255.224将C Class203.67.10.0分成8组Net work Number,各个Network Number及其Broadcast IP Address及可使用之IP Address序号Network Number Broadcast可使用之IP Address   
        (1)203.67.10.0--203.67.10.31
           203.67.10.1--203.67.10.30
        (2)203.67.10.32--203.67.10.63   
             203.67.10.33--203.67.10.62
        (3)203.67.10.64--203.67.10.95
           203.67.10.65--203.67.10.94
        (4)203.67.10.96--203.67.10.127
           203.67.10.97--203.67.10.126
        (5)203.67.10.128--203.67.10.159
           203.67.10.129--203.67.10.158
        (6)203.67.10.160--203.67.10.191
           203.67.10.161--203.67.10.190
        (7)203.67.10.192--203.67.10.223
           203.67.10.193--203.67.10.222   
        (8)203.67.10.224--203.67.10.255     203.67.10.225--203.67.10.254
           可验证所使用的IP Address是否如上表所示
        203.67.10.115--11001011.01000011.00001010.01110011   
         255.255.255.224--11111111.11111111.11111111.11100000
         --------------------------------------------------------------
         203.67.10.96--11001011.01000011.00001010.01100000
         203.67.10.55--11001011.01000011.00001010.00110111
         255.255.255.224--11111111.11111111.11111111.11100000
         --------------------------------------------------------------
         203.67.10.32--11001011.01000011.00001010.00100000
         其他的NetMask所分成的NetworkNumber可自行以上述方法自行推演出来。
         2.Subnet的应用
         使用Subnet是要解决只有一组C Class但需要数个Network Number的问题,并不是解决IP Address不够用的问题,因为使用Subnet反而能使用的IP Address会变少,Subnet通常是使用在总公司在台北,但分公司在台中,两者之间使用Router连线,同时也上Internet,但只申请到一组C Class IP Address,过Router又需不同的Network,所以此时就必须使用到Subnet,当然二办公司间可以Remote Bridge连接,那便没有使用Subnet的问题,这点在此不讨论,所以在以上情况下的网路连线架构及IP Address的使用
      
    TCP/IP协议簇简介

      TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在 INTERNET中几乎可以无差错地传送数据。在任何一个物理网络中,各站点都有一个机器可识别的地址,该地址叫做物理地址.物理地址有两个特点:

      (1)物理地址的长度,格式等是物理网络技术的一部分,物理网络不同,物理地址也不同.
      (2)同一类型不同网络上的站点可能拥有相同的物理地址.
      以上两点决定了,不能用物理网络进行网间网通讯.
      在网络术语中,协议中,协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个而是许多协议,这就是为什么你经常听到它代表一个协议集的原因,而TCP和IP只是其中两个基本协议而已。
      你装在计算机-的TCP/IP软件提供了一个包括TCP、IP以及TCP/IP协议集中其它协议的工具平台。特别是它包括一些高层次的应用程序和FTP(文件传输协议),它允许用户在命令行上进行网络文件传输。
      TCP/IP是美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果,用来使全球的研究网络联在一起形成一个虚拟网络,也就是国际互联网。原始的Internet通过将已有的网络如ARPAnet转换到TCP/IP上来而形成,而这个Internet最终成为如今的国际互联网的骨干网。
      如今TCP/IP如此重要的原因,在于它允许独立的网格加入到Internet或组织在一起形成私有的内部网(Intranet)。构成内部网的每个网络通过一种-做路由器或IP路由器的设备在物理上联接在一起。路由器是一台用来从一个网络到另一个网络传输数据包的计算机。在一个使用TCP/IP的内部网中,信息通过使用一种独立的叫做IP包(IPpacket)或IP数据报(IP datagrams)的数据单元进--传输。TCP/IP软件使得每台联到网络上的计算机同其它计算机“看”起来一模一样,事实上它隐藏了路由器和基本的网络体系结构并使其各方面看起来都像一个大网。如同联入以太网时需要确认一个48位的以太网地址一样,联入一个内部网也需要确认一个32位的IP地址。我们将它用带点的十进制数表示,如128.10.2.3。给定一个远程计算机的IP地址,在某个内部网或Internet上的本地计算机就可以像处在同一个物理网络中的两台计算机那样向远程计算机发送数据。

  • 相关阅读:
    计划任务和压缩归档
    libevent 源码学习三 —— 基本使用场景和事件流程
    libevent 源码学习二 —— reactor 模式
    libevent 库源码学习
    手动配置固定IP参数vim vim
    软件相关
    写xhttpd服务器时 遇到segmentation fault
    c与c++中输出字符指针和字符串指针的问题
    char * argv[] ,string简析
    传入参数与传出参数
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2194075.html
Copyright © 2020-2023  润新知