关注IT
关注系统玩家

TCP/IP概述

1    TCP/IP协议栈概述

1.1  OSI七层协议与TCP/IP的对应

6748091131

    TCP/IP的链路层包含了OSI的物理层和数据链路层,应用层包含了OSI的会话层、表示层及应用层。

    网络协议分为层(layer),每层实现不同的功能。

1.2   协议层解析

1.2.1 链路层

       也称为一层或二层,有时也称为数据链路层、网络接口层或数据转发层,处理数据在网络

    内的转发,数据单位为位(bit)和帧(frame),链路、网卡、L2交换机处于此层;此层的详细

    的学习请参考《从以太帧认识以太网》

1.2.2 网络层

       也称为互连网层、三层或IP层,处理数据包在网络间的转发,数据单位为数据包(packet 或

    datagram),路由器及L3交换机处于此层;包括的协议有IP,ICMP,IGMP协议

1.2.3 传输层

       也称为4层,在两个主机之机建立或提供一个流,数据单位为段(segment),主要包括TCP和

    UDP协议。传输层的具体学习请结合第五章《TCP简介》

1.2.4 应用层

    也称为7层,处理某个应用的具体细节,由传输层的具体端口(port)规定,数据单位为data;

4327756668

    TCP/IP协议栈不仅仅包含TCP和IP,它包含一系列协议,TCP、IP只是其中两个最主要的协议。

2  IP详解

2.1  IP地址分类

       IP地址也叫Internet address,由32位二进制数组成,分为两部分:网络标识+主机标

    识,由网(Net)或子网(Subnet)掩码(MASK)来定位网络标识和主机标识,共分为五类:

    A类:0xxxxxxx  yyyyyyyy  yyyyyyyy  yyyyyyyy

           ‐‐‐,MASK是8位,网络标识从1‐127开始

    B类  10xxxxxx  xxxxxxxx  yyyyyyyy  yyyyyyyy

          ‐‐‐MASK是16位,网络标识从128‐191开始

    C类:110xxxxx  xxxxxxx  xxxxxxxx  yyyyyyyy

           —MASK是24位,网络标识从192‐223开始

    D类:  1110yyyy  yyyyyyyy  yyyyyyyy  yyyyyyyy

           —MASK是4位,网络标识从224‐239开始‐‐‐组播网段

    E类:  11110yyy  yyyyyyyy  yyyyyyyy  yyyyyyyy

           —MASK是4位,网络标识从240‐247开始‐‐‐暂未用

                8580824376

2.2  私有网段(Private Network)(RFC 1918)

       即不能到公网上去进行路由(non‐routable),因为公网上的路由器、防火墙的基本原则

    是对私有网络进行过滤,即对IP头在包含私有网段IP地址的包采用丢弃的原则。

    10.0.0.0—10.255.255.255 (A类地址)

    172.16.0.0—172.31.255.255 (B类地址,但MASK为12位)

    192.168.0.0—192.168.255.255 (C类地址,但MASK为16位)

2.3  链路本地地址(Link‐local)(RFC3330)

       当一个主机通过DHCP获取IP地址时,如果找不到DHCP服务器,那么会自动配置一个地

    址,其地址段为:169.254.0.0/16,对此地址的限制比私有网络地更加严格,绝对不能让其

    通过一个路由器。

2.4  超网(Supernet)和子网(Subnet)

    CIDR(Classless Inter‐Domain Routing)机制可合并网络,如192.168.0.0/16

    Subnet Mask子网掩码机制把主机位变为子网位使网络细分,如10.10.10.0/24

2.5  IP头解析

 3866302313

IPV4包头抓包分析:

7594512393

a)  版本号

    共4位,IPV4或IPV6;

b)  头长度

    如果没有选项,长度为20个字节,最大60个字节;

c)  TOS

       共8位,前3位为优先级,接着4位为TOS,现已基本不用,只是有时用于动态路由协议

    OSPF和IS‐IS的路由选择之用;取而代之的这个字段被改为DSCP,以下是DSCP值,其中

    仍然包括了TOS的优先级(CS1‐CS7,DF)

5600446606

d)  TTL

    数据包的生存时间,初始值为32、64或255,最大值为255;

e)  协议类型

    即指定三层IP包所封装的四层数据类型。

9575616719

f)  选项

    是可以选择的,一般不用。以下是有strict source route的可选项的抓包分析:

9341009433

2.6  附IPV6的报文头

2460087751

2.7 单播、广播和组播

    由数据报文中目的地址决定。

2.7.1 单播(Unicast)

    报文中目的地址主机标识不为全1,如10.10.10.10/24

2.7.2 广播(Broadcast)

    报文中目的地址主机标识为全1,如10.10.10.255/24

       (1)受限广播:255.255.255.255       /0

       (2)网段广播:10.255.255.255        /8

       (3)子网广播:10.10.255.255         /16

       (4)所有子网广播:131.255.255.255   /16

2.7.3 组播(Multicast)

    报文中目的地址为D类1110yyyy  yyyyyyyy  yyyyyyyy  yyyyyyyy

    IP首字段为224—239,有关组播详细解析另见《IBM交换机与组播IGMP》。

3   路由

3.1 概述

       能够进行网络间数据包传递的设备叫网关、路由器或三层设备, 具有路由功能的交换机称

    为L3交换机;

       路由器与主机都有路由表,但不同的是,主机中的路由表是用于本身发送包文的,而路由

    器是用于转发包文的。

       路由表主要包括目的主机地址或目的网段地址,以及下一跳地址(或叫网关地址)。

       路由器对路由的选择是逐跳进行的,即hop‐by‐hop basis,路由表匹配的优先顺序为明细

    优先:

    A)  主机地址

    B)  网络段地址

    C)  缺省网关(default gateway,即选择路由0.0.0.0/0.0.0.0 )

3.2  路由的分类

3.2.1 按AS

    A)  IGP(Interior Gateway Protocol)

        a) RIP V1/V2

        b) OSPF V2/V3

        c) IGRP/EIGRP

        d) IS‐IS;

    B)  EGP(Exterior Gateway Protocol)

        a) EGP

        b) BGP:  IBGP/EBGP

3.2.2  按动态和静态

    A)  直连(connected)

    B)  静态(static)

    C)  动态(dynamic)

        a) 矢量路由(vector):RIP..

        b) 链路状态(Link state): OSPF,ISIS

3.2.3  按有类无类

     A)  有类(classless):RIP V2, OSPF…..

     B)  无类(classful):RIP V1, IGRP

3.3  路由协议的管理距离

    每种路由协议都有一个AD(Administrative Distance)值,越小越优先。

 7280835136

3.4  有关IP的练习

    a) 不同网络掩码的地址之间PING;

       10.10.10.128/24  10.10.10.193/25‐‐‐PING通

       10.10.10.128/24  10.10.10.193/26‐‐‐PING不通

    b) 对广播地址的PING;

       对PC进行广播PING,PC不响应

       对路由器进行广播PING,路由器对匹配的广播响应,如:

       一个路由器的接口地址为10.10.10.1/16,那么对PING

       10.10.255.255响应,而对PING 10.255.255.255不响应。

    c) 配置一条静态路由

       在路由器上:……

 6341916659

8589624867

       在PC机上:……

       Route ADD 192.168.2.0 MASK 255.255.255.0 10.10.10.2

       Route print

    d) 静态路由在路由器上可实现ECMP,进行Load Balance,但在PC上不能。

    e) 特殊的静态路由—缺省路由

    f) 直接路由与静态路由的区别

4  ARP

       Address Resolution Protocol,地址解析协议,用于提供一个三层IP址址到二层地址如

    MAC地址的映射。

       数据的通信,最后是要落实到二层的链路地址或叫硬件地址如MAC,当一个主机用自己

    的源IP去与目的IP进行通信时,首先会检查本身的ARP表,如果没有目的主机IP与MAC映射

    表项,那么源主机会用ARP去询问目的IP主机的MAC,如果源IP与目的IP不在一个网

    段,ARP会去用ARP去

    解析缺省网关的MAC,之后把数据包发给缺省网关。

4.1  ARP几种特性:

    A) 包分为两种,一种是ARP请求,一种是ARP应答;

    B) 属于三层协议,但在包头里不用IP地址,其二层所指的协议书类型为0X0806;

    C) ARP请求是广播,ARP应答是单播;

    D) 以下是两种包的抓包分析:

4156341744

 6899226597

4.2  Proxy ARP

       一个具有路由功能的设备如路由器或三层交换机可配置成ProxyARP即ARP代理,当一个

    ARP请求未有目的主机应答时,这个代理会欺骗ARP请求者进行回应,之后请求者会把正常

    的数据包发给Proxy ARP,由Proxy ARP进行路由转发。这个功能有时是很重要的,由一个

    主机未配置缺省网关,当这个主机向其它网段的主机通信时,Proxy ARP就会起到缺省网关

    的作用。

4.3  Gratuitous ARP即免费ARP

       当一个主机配置、修改IP地址或从DHCP服务器获得一个IP后,主机会自动发一个解析自

    己IP地址的ARP数据包,如果网上有回应,那么就意谓着有其它主机具有与自己相同的IP地

    址,即网上有地址冲突。

6517092853

    注:小心使用Proxy ARP,以免造成一个主机中ARP表进行动荡。

4.4  ARP表

    a) 每个主机(三层设备)都有一个ARP表,如PC机上

3808829543

    交换机上看ARP表的命令:

    G8264#show arp

    b) ARP表可以静态配置,进行IP与MAC地址的绑定,起到省略ARP解析及安全作用。

      G8264(config)# ip arp <ip address> <MAC address> vlan <vlan

        number> port <port number>

4.5  静态多播ARP

       Microsoft NLB工作在多播模式下,有一个特殊的需要,即一个单播Cluster IP地址要对

    应一个多播的MAC地址,如果交换机作为一个三层设备,它必须具备一个能力,即生成单播

    IP地址对应组播MAC的ARP表项,一般三层设备不具这个能力。IBM交换机7.6版本以上支

    持此项功能。

8382422775

4.6  ARP欺骗(ARP Spoofing)

       也叫ARP毒化(ARP Poisoning),是一种攻击手段,即中间人用ARP响应用自己的MAC地

    址去冒充别人,使ARP申请主机把数据错误地发送给冒充者,一个后果是实现中间人攻击,

    另一个后果是用大量的ARP响应包来攻击网上主机,使主机的ARP缓存崩溃。

4.7  DAI(Dynamic ARP Inspect)

       为了防止ARP欺骗,结合DHCP Snooping静态方法生成有效的IP与MAC的映射数据库,

    之后对非信任端口上收到的ARP数据包与事先生成的数据库进行比较,如果不一致,就拒绝

    授受。

       IBM交换机目前支持DHCP Snooping,但不支持DAI。

5   ICMP

       ICMP是TCP/IP的一部分,是处于三层的协议,主要是用于IP本身及更高层TCP/UDP来

    利用充当工具,我们日常经常用的PING就是用ICMP的一些报文类型实现的实用工具。

5.1  ICMP的报文格式如下:

 2034816077

 1067404168

5.2  ICMP报文由类型及代码组合成不同的类型:

6230675427

5.3   Traceroute

5.3.1  概述

       Traceroute也是一个利用ICMP的常用工具,它可以跟踪数据包从源到目的所经过的路

    径。当一个目的不可达时,我们可以利用这个工具去跟踪所走的路由,看路由到哪一跳的路

    由器后数据的三层转发被中止,以便进行trouble shooting排错。

5.3.2实现的原理

5.3.2.1 主要利用ICMP报文实现—Windows的实现方法

       先设PING的TTL=1,第一跳的路由器收到PING包后,把TTL减1后发回一个超时的

    ICMP数据包,再设PING的TTL=2,第二跳路由器发回一个超时的ICMP数据包

    (type=11, code=0  TTL=0超时错误),以此类推,直至最后一跳有效的路由器,如此可

    以判断可达的路径。

    Windows操作系统下Traceroute的命令是tracert

9381291992

5.3.2.2  主要利用UDP报文实现‐‐‐Cisco路由器。

    此种方法不同的是,路由器分别发 TTL=1,TTL=2,TTL=3….并且目的端口非常大的

    UDP报文,而不是ICMP报文,收到逐级的回应是目的端口不可达的ICMP,而不是超时不

    可达ICMP。

    路由器、交换机及Linux服务器的命令一般是traceroute,以下是Cisco路由器traceroute的例子:

拓朴

 8294309899

结果

 7379595241

 抓包分析

2284620680

 1236189194

6   TCP简介

       TCP是普遍应用的四层协议,为应用层提供面向连接、可靠、字节流的端到端

    (end‐to‐end)、全双工的服务。下面从应用的角度、总体上对TCP协议进行介绍。

6.1  TCP包头

     TCP的单位是数据段(segment),其头缺省为20个字节,同IP扩展为60字节(同IP相同)。

 1156337753

 3771902658

    a)  源目端口号

        用来确定和寻找相应的应用程序,如端口号23是telnet应用;

    b)  序号

        用来标识TCP发送端向接收端发送的数据字节流,表示这个报文段(Segment)的第一个字节;

    c)  确认号

        期望下一次要接收的字节序号,等于上次已成功收到数据的序号加1,TCP的确认是TCP

       可靠性的主要保证。

    d)  标识位(flag)

 3936895384

    e)  校验

        包含对头及数据的检验(IP只对头进行校验)

    f)  选项MSS

        Maxmum Segment Size,最长报文段的大小或称为最大数据块,当TCP建立连接时,

    收发双方都在SYN报文的选项(option)中进行通告,之后再进行协商。

        通常下,数据的块越大,数据传输越有效,但如果数据块大可能存在数据分片的问题。

    当建立连接时,每一端都以自己的物理接口的MTU为大小通告MSS,协商选最小的值。缺

    省值为536。

       如果TCP两端不在一个本地网络上,可能有一些中间网络设备,那么为了确定一个合适

    MSS而不导致数据段的分片,还要采用“path MTU discovery mechanism”。

    以下是TCP包头的抓包分析:

 1911860460

6.2  TCP连接的建立与终止

6.2.1  连接建立

    连接建立需要三次握手:

 4544297860

    当一个TCP连接建立之后,IP地址与TCP的端口号就形成了一个回定的Socket。

6.2.2  连接终止

    连接终止(正常终止FIN)需要四次握手:

 1290831479

       连接终止分为正常终止(Orderly Release)和非正常终止(Abort ive Release),正常终

    止是在数据传输完成后由收发双方发FIN报文实现的,非正常终止由连接一方发RESET报

    文实现的,RESET报文不需要确认。

6.3  流量控制(滑动窗口+拥塞窗口)

6.3.1  滑动窗口(Sliding Window)

       TFTP用停止等待机制来控制流量,即TFTP在未收到前一个报文的确认之前不发送下一

    个报文。而TCP是用滑动窗口机制来控制流量(字节流),该协议允许发送方在未收到接收方

    的确认前一次发送多个报文组,提高了效率。

 1070625886

6.3.1.1 提供窗口(Offered Window/advertised window)

       提供窗口大小是由接收方提供的,即意味着接收方能最大接收的数据量,实际值为接收

    缓存区的大小决定,缺省最大值为64K,但可以通过window scale option进行扩展。

       接收方会根据自己缓冲区的情况动态随时向发送方通告窗口大小,发送方也会根据发出

    去的报文字节数量以及收到的确认报文字节数量,动态移动窗口的左边及或边,使可用窗

    口的大小改变及向右移动,以此来进行流量控制。

6.3.2  拥塞窗口

       按照滑动窗口的概念,发送方开始可以发送多个报文分组,直至达到提供窗口的大小,

    但是在广域网中就会出现问题由拥塞,所以TCP又支持一个叫慢启动的机制,它是通过拥

    塞窗口实现的。

       拥塞窗口的大小是由发送方设定的,一开始为1个报文段(segment,而滑动窗口大小为

    字节数),每当收到一个确认后,窗口大小增加1倍。发送方每次取拥塞窗口与提供窗口的

    最小值来决定发送的报文数量。

       当出现丢包重传后,拥塞窗口重置,恢复到大小为1。

       拥塞窗口是发送方控制流量的,提供窗口是接收方控制流量的,二者相结合,提供了完

    整的TCP的流量控制机制。

7    总结

       以上是从功能及实际使用的角度去对TCP/IP协议栈的主要协议进行了简介,关于协议实

    现的细节及其它未在本文中涉及的协议如UDP、FTP、DNS等请参考

    《tcpip‐illustrated‐volume1》。

未经允许不得转载:系统玩家 » TCP/IP概述

分享到:更多 ()
喜欢 0
rancher

评论 抢沙发

评论前必须登录!