684OSI 模型和TCPIP模型:.ppt
OSI 模型和TCP/IP模型:,TCP/IP 模型,OSI模型,OSI模型,Application 两个作用:1、给用户提供接口。2、提供标准的服务。主要包括:SNMP,FTP,TELNET,NET,DHCP,TFTP,HTTP,DNS等。Presentation的主要作用:1、指定独立结构的数据传送格式。2、编码和解码数据格式,加密和解密数据,压缩。主要包括:.jpg,.pdf,.doc,加密等Session层:会话层。主要包括netbios,appletalk,radius等。传输层的主要作用:1、管理网络层。2、提供可靠的报文传输机制。IP层:1、地址和路由。DATA LINK:1、帧 2、控制物理层数据流。物理层:1、接口 2、定义电气特性,IP和IP头部格式:,IP即internet protocol;所有的应用层程序、TCP、UDP、ICMP等在IP层都以IP报文来传输。IP提供不可靠的、无连接的数据传递服务。不可靠:IP不保证数据可靠的达到目的地。IP提供“尽最大努力地”服务。如果数据发生错误,IP有一个简单的错误处理机制,即丢掉该报文,并通过ICMP通过给发送者。任何可靠的数据传递都必须依靠上层的协议来保证。无连接:IP不提供任何的状态信息来记录成功的数据。每个IP报文都是单独的处理,IP报文的传递也是无序的。,IP头部格式详解:,版本(4bit):IP的版本号,当前的版本为4,通称为IPv4。版本为6,即为IPv6。首部长度(4bit):表示IP头的长度,由一系列32 bit组成。4 bit的头,表示IP头的总长度为15*32=480 bit=60 byte.服务类型(8 bit):表示IP报文的服务类型,高3位的表示IP报文的优先级,低4位代表Tos,最后一位未用保留。,总长度(16bit):表示IP报文的总的长度,最大的长度为216 65535byte;标识(16bit):标识每个分片。与flags和fragment offset一起使用。当一个报文的大小超过了接口的MTU值,报文必须被分片成小于或者是等于MTU的报文。标志(3bit):表示报文是否是分片报文。Bit 0 没有使用,bit 1为DF为(DF0,不分片;DF1分片);bit2为MF(MF0,最后的分片报文;MF1,更多的分片报文)片偏移(13bit):表示分片报文在原IP报文的位置。分片报文的大小是64bit的倍数,第一个分片报文的offset为0。每个分片报文的格式有和原报文一样的IP报文格式。,IP头部格式详解:,生存时间(8bit):IP报文的在网络中的存活时间。当IP报文经过一台路由器,IP报文的TTL值将减一。当IP报文的TTL值为0,设备将丢弃该报文,并发送一个错误消息给源。推荐的值为64。协议(8bit):表示IP报文中封装的报文类型。,首部检验和(16 bit):IP报文头的检验。报文的TTL值经过路由器发生变化,接受该IP报文的路由器对IP头的checksum要进行重新计算。,IP地址:,IP地址的长度32位,每台设备的IP地址必须是单独唯一的。IP地址表示方式有二进制和十进制两种表示:二进制:00001010-11010110-01010111-10000011 十进制:172.16.1.132位的二进制地址用4个八位组表示,每个八位组用十进制来表示,并使用圆点(dot)隔开。00000001000000010000000100000001,八进制和十进制的换算:每个八位组对应一个十进制组,换算方法是:十进制位2(n-1)(n=18)。在八进制中二进制位顺序从左到右依次增大;n代表1在八进制位中位置。比如:10011001的计算方法为:2(1-1)+2(4-1)+2(5-1)+2(8-1)=1+8+16+128=153,十进制的表示方法是方便记忆和阅读;而设备以二进制来计算IP地址。,IP地址分类:,根据IP网络的大小,IP地址分为A类、B类、C类、D类和E类地址。A类地址表示大型的网络,支持大量的IP地址;B类地址表示中型的网络;C类表示小型的网络。为了区分这些地址,利用第一个八位组规则(first octet rule)。,类别位:第一个八进制的第一位为0,表示A类地址。第一个八进制的头两位为10的,表示B类地址。第一个八进制的头三位为110的,表示C类地址。第一个八进制的头四位为1110的,表示D类地址。第一个八进制的头五位为1111的,表示D类地址。,IP地址分类:,IP地址的指派范围:,一般不使用的特殊IP地址:,公有IP和私有IP:,公有地址:公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。,私有地址:私有地址(Private address)属于非注册地址,专门为组织机构内部使用。,以下列出留用的内部私有地址:A类 10.0.0.010.255.255.255Mask:255.0.0.0B类 172.16.0.0172.31.255.255Mask:255.255.0.0C类 192.168.0.0192.168.255.255Mask:255.255.255.0,掩码(Netmask):,掩码用来区分IP地址中的网络地址和主机地址。掩码的表示方法和IP地址一样,有十进制和二进制两种表示方法,对A类、B类、C类地址的掩码为:,网络地址的确定方法:将二进制的掩码和IP地址的二进制位进行“与”的操作,得出的结果就是网络地址;剩余的位就是主机地址。,掩码(Netmask):,对于有类IP地址,由网络位和主机位组成。,子网的概念:,子网:对于A和B类地址,主机位的数量巨大,而网络地址的数量很少。而在现实场景中,一个网络的主机地址不需要这么多,所以对于有类的地址造成了地址的大量的浪费;同时大量的主机地址将降低网络的性能和带宽利用率。为了充分的利用主机位地址,将Host 位进行分割,分割的部分用来作为网络地址,这样即增加了网络地址,又充分利用了主机位地址。分割的部分为子网。,两个相关概念:,CIDR(Classless Inter-Domain Routing)无类型域间选路,VLSM(Variable Length Subnet Mask)可变长子网掩码,VLSM 与CIDR的区别:,CIDR是把几个标准网络合成一个大的网络VLSM是把一个标准网络分成几个小型网络(子网)CIDR是子网掩码往左边移了,VLSM是子网掩码往右边移了CIDR(Classless Inter.Domain Routing 无类别域间路由)VLSM(Variable Length Subnetwork Mask 可变长子网掩码),子网的计算:,1、给定一个网络地址,和主机数量,计算子网地址。给一个B地址,172.16.0.0,可以划分多个C类地址?B类地址的第三个八位组主机位全部划分为子网位:2 8-1=255个子网(子网位从0254)。给一个C类(192.168.1.0)地址,每个网段的主机数量位30个,子网是多少?先计算主机位,根据2 z-2=30,计算z5,所以主机位由5位。(n取整数)然后计算子网位:C类地址的主机位共有8位,所以的子网位为3位,所以子网网段为(192.168.1.0,192.168.1.32,192.168.1.64,192.168.1.128,192.168.1.96,192.168.1.160,192.168.1.192,192.168.1.224。,2、给定一个IP地址和掩码,计算出子网地址、广播地址、和有效IP地址的范围。(172.16.103.2 255.255.252.0).,CIDR(classless inter-domain routing):无类域间路由:,随着网络的快速发展,Internet 路由表逐渐增大,为了减少路由表的大小,需要对路由进行汇聚。CIDR在RFC中定义是将多个有类的网络地址聚合成一个单一的网络地址。主要的目的是提高路由表的扩展能力。全球每个地区被分配了一个或者多个聚合的C类地址,然后将聚合里的C地址分配给不同的ISP,ISP进行子网划分给不同的客户,这样形成一个金字塔的结构,在塔尖只有汇聚的路由。,192.0.0.0193.255.255.255,Isp1:192.1.0.0/24,192.1.1.0/26,Isp2:192.2.0.0/24,Isp3:192.3.0.0/24,192.2.1.0/26,192.3.1.0/26,UDP协议:,UDP(User Datagram Protocol),用户数据包协议,位于TCP/IP层的运输层。UDP协议是一种无连接、不可靠的运输协议。无连接:发送的每一个用户数据报都是独立的数据报,不同的用户数据报之间没有任何关系,它是没有序号即不是有序的被接受。不可靠:在某个数据报被丢弃或遗失后不会得到重传或着得到通知。哪为什么还要用?它的缺点有时也会变成优点。UDP是一个非常简单的协议,使用的额外开销也是最小的。若某进程想发送一个很短的报文且不关心其可靠性,它就可以使用UDP。使用UDP发送短报文时,在发送方和接受方之间交互要比使用TCP时少得多。,UDP协议首部格式:,1.源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。,2.总长度:占2个字节。可定义的总长度是从0,216字节。但是,实际的总长度必须比这个数值小,因为UDP用户数据报要放在总度为216字节的IP数据报之中。UDP数据报中的长度字段实际上不是必需的。用户数据报被封装在一个IP数据报中。在IP数据报中有一个字段定义了总长度,另外还有一个字段定义了首部的长度。因此如果我们把总长度字段的值减去首部字段的值,就可以推到出封装在IP数据报中的UDP数据报的长度。,3.检验和:占2个字节。检验和字段检验的范围包括首部和数据这两部分。,TCP协议:,TCP(transport control protocol),传输控制协议,位于TCP/IP层的传输层,是运输层的主要协议,另外还有UDP协议和SCTP协议。TCP协议为应用层的程序提供面向连接、可靠的服务。面向连接:在交换数据包之前,通信的双方必须建立起TCP连接;提供状态信息来记录成功的数 据。可靠性体现在以下几个方面:1、发送的TCP数据都需要经过确认,如果没有接受到确认,TCP将重传。2、采用滑动窗口机制,来控制发送方的数据大小。3、TCP头部和数据部分都需要检验,确保数据准确无误。4、TCP总是将应用层的数据分割为发送方认为最合适大小的报文。保证有效地传递数据。5、IP报文是无序到达目的地,而TCP可以对接受的数据进行重新排序,然后传给应用程序。6、流量控制。TCP连接双方都有一个固定的缓存空间,接受方只允许发送方发送缓存空间能接受 的数据。,在TCP层,应用层的数据以TCP 片段(segment)发送给IP层;在两个应用程序之间,通过TCP层时,数据变成8bit字节构成的字节流进行交换也叫字 节流服务。,TCP使用的熟知端口号:,详情请看/etc/services,/etc/services,16,0,31,TCP协议头部格式:,TCP首部固定部分各字段的意义:,1.源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。UDP也含有这两个字段。,2.序号:占4个字节。序号范围是0,232-1,既共232个序号。序号层加到232-1后,下一个序号就回到0.也就是说,序号使用mod 232运算。TCP是面向字节流的。在意个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则是指的是本报文段所发送数据第一个字节的序号。例如:一个报文段的序号字段值是1001,而携带的数据共有200字节。这就表明:本报文段的数据的第一个字节的序号是1001,最后一个字节的序号是1200。那么,下一个报文段的数据序号应是从1201开始,即下一个报文段的序号字段值应为1201.这个字段的名称也叫“报文段序号”。,3.确认号:占4个字节。是期望收到对方下一个报文段的第一个数据字节的序号。例如:B收到了A发送过来的一个报文段,其序号字段值是1001,而数据长度是200字节(10011200),这就表明B正确收到了A发送的到序号1200为止的数据。因此,B期望收到A的下一个数据序号是1201,于是B在发送A的确认报文段中把确认号设置为1201.若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。,TCP首部固定部分各字段的意义:,4.数据偏移:占4位,它指出TCP报文段的数据起始处距TCP报文段的起始处有多远。这个字段实际上指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。但请注意,“数据偏移”的单位是32位字。由于4位二进制数能够表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。,5.保留:占6位,保留为今后使用,但目前应置为0。,6.URG、ACK、PSH、RST、SYN和FIN(各占1bit):(紧急)URG:当URG=1时,表明紧急指针字段有效。(确认)ACK:仅当ACK=1时确认号字段才有效。(推送)PSH:当PSH=1时,接受方不再等待整个缓存都存满了后再向上交付,而是直接交付给接受应用程序。(复位)RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也称为重建位或重置位。(同步)SYN:在建立连接时用来同步序号。当SYN=1而ACK=0时,表明这 是一个连接请求报文段。(终止)FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。,7.窗口:占2字节。窗口值是从0,216之间的整数。窗口指的是发送本报文段的一个方的接受窗口。窗口值告诉对方:从本报文段首部中的确认号算起,接受方目前允许对方发送的数据量。之所以要有这个限制,是因为接受方的数据缓存空间是有限的。总之,窗口值作为接受方让发送方设置其发送窗口的依据。,TCP首部固定部分各字段的意义:,8.检验和:占2个字节。检验和字段检验的范围包括首部和数据这两部分。,9.紧急指针:占2个字节。紧急指针仅在URG=1时有效,它指出本报文段中的紧急数据的字节数(紧急数据接受后就是普通数据)。因此紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为零时也可以发送紧急数据。,TCP连接的建立与终止:,TCP连接的建立需要经过3次握手之后,才能建立起 TCP连接。,发送方,接受方,seq:8000Ack:,FYN,seq:1500Ack:8001,FYN+ACK,seq:8000Ack:1501,ACK,SYN不携带数据,但消耗一个序号,SYN+ACK不携带数据,但消耗一个序号,ACK不携带数据,但消耗一个序号,TCP连接的终止需要经过4次握手之后,才能终止起TCP连 接,这种终止也叫正常终止。,TCP连接的建立与终止:,从客户端到服务器的确认,从服务器到客户端的数据报文,主动关闭,连接关闭,被动关闭,连接关闭,关于Iptables:,PREROUTING,INPUT,POSTROUTING,接口,接口,OUTPUT,FORWARD,关于Iptables:,推荐:Iptables中文指南,http:/,Thats all!Thank you!,