一 OSI 七层模型:

1 Osi 参考模型产生背景:

20世纪60年代以来,计算机网络得到了飞速增长。各大厂商为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公 司的AppleTalk协议,DEC公司的DECnet,以及广泛流行的 TCP/IP协议。同时,各大厂商针对自己的协议生产出了不同的硬件和软件。各个厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。但由于多种协议的并存,也使网络变得越来越复杂;而且,厂商之间的网络设备大部分不能兼容,很难进行通信。 为了解决网络之间的兼容性问题,帮助各个厂商生产出可兼容的 网络设备,国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模 型)。OSI 参考模型很快成为计算机网络通信的基础模型。在设 计OSI 参考模型时,遵循了以下原则:各个层之间有清晰的边界 ,实现特定的功能;层次的划分有利于国际标准协议的制定;层 的数目应该足够多,以避免各个层功能重复。 OSI参考模型具有以下优点:简化了相关的网络操作;提供即插即 用的兼容性和不同厂商之间的标准接口;使各个厂商能够设计出 互操作的网络设备,促进标准化工作;防止一个区域网络的变化 影响另一个区域的网络,结构上进行分隔,因此每一个区域的网络都能单独快速升级;把复杂的网络问题分解为小的简单问题, 易于学习和操作型。

2 Osi 参考模型的分层

OSI参考模型分为七层,由下至上依次为第一层物理层(Physical layer)、第二层数据链路层(Data link layer)、第三层网络层( Network layer)、第四层传输层(Transport layer)、第五层会话层(Session layer)、第六层表示层(Presentation layer)、第 七层应用层(Application layer)。

通常,OSI参考模型第一层到第三层称为底层(Lower layer), 又叫介质层(Media Layer),底层负责数据在网络中的传送,网络互连设备往往位于下三层,以硬件和软件相结合的方式来实现。OSI参考模型的第五层到第七层称为高层(Upper layer),又叫 主机层(Host layer),高层用于保障数据的正确传输,以软件方式来实现。

3 Osi 七层功能

OSI参考模型各个层次的基本功能如下: 物理层:在设备之间传输比特流,规定了电平、线速和电缆针脚 。 数据链路层:将比特组合成字节,再将字节组合成帧,使用MAC 地址来访问介质,检测差错。(MAC、) 网络层:提供逻辑地址,供路由器确定路径。(IP。ARP)
传输层:提供可靠或不可靠的数据传递以及进行重传前的差错检测。(TCP/UDP) 会话层:负责建立、管理和终止表示层实体之间的通信会话。该 层的通信由不同设备中的应用程序之间的服务请求和响应组成。 表示层:提供各种用于应用层数据的编码和转换功能,确保一个 系统的应用层发送的数据能被另一个系统的应用层识别。 应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。(HTTP)

二 TCP/IP 协议栈

1 TCP/IP协议栈及报文封装

TCP/IP(Transfer Control Protocol/Internet Protocol,传输控制协议/网际协议)TCP/IP协议栈也成为互联网的主流协议。 TCP/IP模型同样采用分层结构,层与层相对独立但是相互之间也 具备非常密切的协作关系。 TCP/IP模型与OSI参考模型的不同点在于TCP/IP把表示层和会话层都归入了应用层。

TCP/IP模型由下至上依次分为网络接口层、 网络层、传输层和应用层四个层次。

2 TCP/IP协议栈报文封装

用户数据经过应用层协议封装后传递给传输层,传输层封装TCP头部,交给网络层,网络层封装IP头部后,再交给数据链路层,数据链路层封装 Ethernet帧头和帧尾,交给物理层,物理层以比特流的形式将数据发送到物理线路上。

3OSI与 TCP/IP对比

其七层模式是概念模型,而TCP/IP的模型才是实际的网络模型。

三 网络层常见协议

1 常用网络层协议

IP(Internet Protocol)、 ICMP(Internet Control Message Protocol) 、ARP(Address Resolution Protocol)、RARP(Reverse Address Resolution Protocol)。

2 IP协议作用及IP地址介绍:

为网络层最主要的协议,其功能即为网络层的主要功能,一是提供逻辑编址,二是提供路由功能,三是报文的封装和解封装。

1 网络层地址

IP地址是一个逻辑地址并非硬件地址,硬件地址是固化在NIC(Network Interface Card)中的 ,如前面提到的MAC地址,用于同一链路上设备相互通信;而IP 地址则是用于不同网络(即不同链路)上的设备相互通信。

2 IP 编址与路由

TCP/IP模型中,每一层都有自己的通信方式,数据链路层依靠 MAC地址通信,而网络层则依靠IP地址。在了解TCP/IP协议模型以及各层的功能之后,本课程重点针对网络层介绍IP地址结构、 IP地址分类、组网的划分,以及网络层设备如何进行数据包的转发,即数据在网络中如何被路由的。 本课程介绍TCP/IP协议栈第三层——网络层。网络层的主要功能 是通过IP协议实现的。包括IP编址和IP路由。 TCP/IP模型中层与层之间彼此交换信息,确保网络设备之间能够通信。这些层之间使用协议数据单元(PDU)来彼此通信。不同层的PDU中包含的信息也不同,根据其包含的信息,PDU被赋予不同的名称。如传输层在上层数据中加入TCP报头后得到的PDU 被称为数据段(segment)。数据段被传递给网络层,网络层添加IP报头,得到的PDU被称为分组。分组被封装到第二层报头中 ,得到的PDU被称为帧。最后,帧被转换为比特,通过网络介质进行传输。

3 网络层数据封装

网络层接收来自传输层的数据,将源地址和目的地址加到这些数据中。 数据链路层有物理地址——MAC地址。MAC地址是全球唯一的。当有数据发送时,源网络设备查询对端设备的 MAC地址,然后将数据发送过去。 MAC地址通常存在于一个平面地址空间,没有清晰的地址层次, 只适合于本网段主机的通信,另外,MAC地址固化在硬件中,灵 活性较差。对于不同网络之间的互连通信,通常使用基于软件实 现的网络层地址----IP地址来通信,提供更大的灵活性。 IP地址,又称逻辑地址,IP地址在一个网络中是独一无二的。每一台网络设备用IP地址作为唯一的标识。

4 IP地址分类:

IP地址的编址经历了三个历史阶段: 1 分类的IP地址:在1981年通过了相应的标准协议 2 子网划分:这个对IP地址最基本的编址方法的改进,在RFC 950 在1985年通过 3 构成超网:1993年提出。 IP地址=网络号+主机号 A 类地址: 0 0000000-0 1111111 为A类地址的网络位及A类地址的第一类地址范围 0-127 B 类地址: 10 000000-10 111111 为B类地址的第一位范围 128-191 C类地址: 110 00000-110 11111 为C类地址的第一位范围 192-223 D 类地址: 1110 0000- 1110 1111 为D类地址的第一位范围 224-239 E 类地址 1111 0000- 1111 1111 为E类地址的第一位范围 240-247

5 特殊IP地址

IP地址用于唯一地标识一台网络设备,但并不是每一个IP地址都是可用的,一些特殊的IP地址有特殊的用途,不能用于标识网络设备。 1 网络地址 对于主机部分全为“0”的IP地址,称为网络地址,网络地址用来 标识一个网段。 2 广播地址 对于主机部分全为“1”的IP地址,称为网段广播地址,广播地址用于标识一个网络的所有主机。广播地址用于向本网段的所有节点发送数据包 。 3 回环地址:用于检测网卡上的IP协议栈是否正常。 对于网络部分为127的IP地址,例如127.0.0.1往往用于环路测试。 4 其他地址 全“0”的IP地址0.0.0.0代表所有的主机,华为VRP系列路由器用 0.0.0.0地址指定默认路由。 全“1”的IP地址255.255.255.255,也是广播地址,但 255.255.255.255代表所有主机,用于向网络的所有节点发送数据包。这样的广播不能被路由器转发。

6 各类地址的分类中的私有地址:

在进行IP地址规划时,通常会在公司内部网络使用私有IP地址。 私有IP地址是由InterNIC预留的由各个企业内部网自由支配的IP地 址。使用私有IP地址不能直接访问Internet是因为公网上没有针对私有地址的路由。当访问Internet时,需要利用网络地址转换( NAT,Network Address Translation)技术,把私有IP地址转换为 Internet可识别的公有IP地址。InterNIC预留了以下网段作为私有 IP地址: A类地址10.0.0.0~10.255.255.255; B类地址172.16.0.0~ 172.31.255.255;
C类地址192.168.0.0~192.168.255.255等。 每一个网段会有一些IP地址不能用作主机IP地址。下面计算一下可用的IP地址。 如B类网段172.16.0.0, 有16个主机位,因此有216个IP地址,去掉一个网络地址172.16.0.0,一个广播地址172.16.255.255不能用作标识主机,那么共有216-2个可用地址。 C类网段192.168.1.0,有 8个主机位,共有28=256个IP地址,去掉一个网络地址 192.168.1.0,一个广播地址192.168.1.255,共有254个可用主机 地址。 每一个网段可用主机地址可以用这样一个公式表示:假定这个网段的主机部分位数为n,则可用的主机地址个数为2n-2个。 网络层设备(例如路由器等)使用网络地址来代表本网段内的主机,大大减少了路由器的路由表条目。

使用私有IP地址,不仅减少了用于购买公有IP地址的投资,而且 节省了IP地址资源。 掩码用于区分网络部分和主机部分。掩码与IP地址的表示法相同 。掩码中用1表示该位为网络位,0表示主机部分。一个255则表示 有8个1。 缺省状态下,A类网络的网络掩码为255.0.0.0,B类网络的网络掩 码为255.255.0.0,C类网络掩码为255.255.255.0。

7 无子网编址

对于没有子网的IP地址组织,外部将该组织看作单一网络,不需 要知道内部结构。例如,所有到地址172.16 .X.X的路由被认为同一方向,不考虑地址的第三和第四个8位分组,这种方案的好处是 减少路由表的项目。但这种方案没法区分一个大的网络内不同的子网网段,这使网络内所有主机都能收到在该大的网络内的广播,会降低网络的性能 ,另外也不利于管理

8 带子网编址

从地址分配的角度来看,子网是网段地址的扩充。网络管理员根据组织增长的需要决定子网的大小。 网络设备使用子网掩码(Subnet Masking)决定IP地址中哪部分为网络部分,哪部分为主机部分。 子网掩码使用与IP地址一样的格式。子网掩码的网络部分和子网部分全都是1,主机部分全都是0。缺省状态下,如果没有进行子网划分,A类网络的子网掩码为255.0.0.0,B类网络的子网掩码为 255.255.0.0,C类网络子网掩码为255.255.255.0。利用子网,网 络地址的使用会更有效。对外仍为一个网络,对内部而言,则分为不同的子网。 这样可使路由器根据目的子网地址进行路由,从而限制 一个子网的广播报文发送到其它网段,不对网络的效率产生影响 。

9 变长子网掩码:

把一个网络划分成多个子网,要求每一个子网使用不同的网络标 识ID。但是每个子网的主机数不一定相同,而且相差很大,如果我们每个子网都采用固定长度子网掩码,而每个子网上分配的地 址数相同,这就造成地址的大量浪费。这时候可以采用变长子网掩码(VLSM,Variable Length Subnet Mask)技术,对节点数比较多的子网采用较短的子网掩码,子网掩码较短的地址可表示的 网络/子网数较少,而子网可分配的地址较多;节点数比较少的子网采用较长的子网掩码,可表示的逻辑网络/子网数较多,而子网 上可分配地址较少。这种方案能节省大量的地址,节省的这些地址可以用于其它子网上。 如上图所示,某公司准备用C类网络地址192.168.1.0进行IP地址 的子网规划。这个公司共购置了5台路由器,一台路由器作为企业 网的网关路由器接入当地ISP,其它4台路由器连接四个办公点, 每个办公点20台PC。从上图可以看出,需要划分8个子网,4个办 公点各网段需要21个IP地址(包括一个路由器接口),与网关路 由器相连的四个网段各需要2个IP地址,每个网段IP地址数目差异 较大,可以采用VLSM技术。四个办公点网段采用子网掩码 255.255.255.224,划出3个子网位,共有5个主机位,可以容纳最 多25-2=30台主机。对于四个办公点路由器和网关路由器相连网段 ,划出6个子网位,2个主机位,最多有2个合法IP地址。

10 无类域间路由

CIDR(Classless Inter Domain Routing,无类域间路由)由 RFC1817定义。CIDR突破了传统IP地址分类边界,将路由表中的 若干条路由汇聚为一条路由,减少了路由表的规模,提高了路由 器的可扩展性。 如上图所示,一个ISP被分配了一些C类网络, 198.168.0.0~198.168.255.0。该ISP准备把这些C类网络分配给各 个用户群,目前已经分配了三个C类网段给用户。如果没有实施 CIDR技术,ISP的路由器的路由表中会有三条下连网段的路由条 目,并且会把它通告给Internet上的路由器。通过实施CIDR技术 ,我们可以在ISP的路由器上把这三条网段198.168.1.0, 198.168.2.0,198.168.3.0汇聚成一条路由198.168.0.0/16。这样 ISP路由器只向Internet通告198.168.0.0/16这一条路由,大大减少 了路由表的数目。 值得注意的是,使用CIDR技术汇聚的网络地址的比特位必须是一 致的,如上例所示。如果上图所示的ISP连接了一个172.178.1.0 网段,这个网段路由将无法被汇聚。

3 ARP地址解析协议:

1 介绍

ARP实现IP地址到硬件地址的动态映射,即根据已知的IP地址获 得相应的硬件地址。 RARP实现硬件地址到IP地址的动态映射,即根据已知的硬件地址 获得相应的IP地址。 地址解析协议ARP是一种广播协议,主机通过它可以动态地发现 对应于一个IP地址的MAC地址。 每一个主机都有一个ARP高速缓存(ARP cache),有IP地址到 物理地址的映射表,这些都是该主机目前知道的一些地址。当主机A欲向本局域网上的主机B发送一个IP数据报时,就先在其ARP 高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的物理地址,然后将该数据报文发往此物理地址。 也有可能查不到主机B的IP地址的条目。可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,假定主机A需要知道主机B的MAC地址,主机A以广播方式发送ARP 请求给网段上的每一台主机。发送的ARP请求报文中,带有自己 的IP地址到MAC地址的映射,同时还带有需要解析的目的主机的 IP地址。目的主机B收到请求报文后,将其中的主机A的IP地址与 MAC地址的映射存到自己的ARP高速缓存中,并把自己的IP地址 到MAC地址的映射作为响应发回主机A。主机A收到ARP应答,就得到了主机B的MAC地址,同时,主机A缓存主机B的IP地址到 MAC地址映射。

2 代理ARP的功能

就是使那些不在同一网络上的计算机或路由器能 够相互通信。 通常情况下,当一台路由器R收到一条ARP请求报文时,路由器R 将进行检查,看该ARP请求的目的地址是否是自己,如果是,发 出ARP应答报文;如果不是,丢弃该报文。 如果路由器R开启代理ARP功能,当路由器R收到一条ARP请求报 文时,发现该报文的目的地址不是自己,路由器R并不立即丢弃该 报文,而是查找路由表,如果路由器R有到达该目的地址的路由, 则路由器R将自己的MAC地址发送给ARP请求方。ARP请求方就 将到该目的地址的报文发送给路由器R,路由器R再将其转发出去 。

3 Gratuitous ARP(免费ARP)

主机发送ARP查找自已IP地址对 应的MAC地址。如果网络上没有另一台主机设置了相同的IP地址 ,则主机不会收到回答。而当主机收到该请求的回答时,则表示 有另一台主机设置了与本机相同的IP地址。于是主机会在终端日 志上生成一个错误消息,表示以太网上存在一个重复的IP地址。 免费ARP的作用: 1、通过发送免费ARP可以确认IP地址是否有冲突。当发送方收到 一条免费ARP请求的回答时,表示存在着一个与该IP地址相冲突 的设备。 2、更新旧的硬件地址信息。当发送免费ARP的主机正好改变了硬 件地址,如更换网卡。免费ARP就可以起到更新硬件地址信息的 功能。当接收方收到一条ARP请求时,并且该ARP信息在ARP表 中已经存在,则接收方必须用新的ARP请求中的地址信息更新旧 的ARP信息表。

4 RARP协议:

在进行地址转换时,有时还要用到逆向地址解析协议RARP。 RARP常用于无盘工作站,这些设备知道自己MAC地址,需要获 得IP地址。 为了使RARP能工作,在局域网上至少有一个主机要充当RARP服 务器。 以上图为例,无盘工作站需要获得自己的IP地址,向网络中广播 RARP请求,RARP服务器接收广播请求,发送应答报文,无盘工 作站获得IP地址。 对应于ARP、RARP请求以广播方式发送,ARP、RARP应答一般 以单播方式发送,以节省网络资源。

四 常见传输层协议:

1 简介:

传输层位于TCP/IP协议栈第四层,为应用程序提供服务。传输层 定义了主机应用程序之间端到端的连通性。传输层将上层的数据 封装到自己的数据部分并加上传输层头部封装成数据段交给下层 协议处理。传输层定了两个不同传输协议TCP和UDP。TCP和 UDP分别定义了自己的报文格式。

2 TCP 协议概述

TCP传输控制协议为应用程序提供可靠的、面向连接的服务。

1 可靠性保持原因

TCP通过如下几方面提供其可靠性: 面向连接的传输:TCP的任何一方进行数据传输之前必须在双方之间建立连接。 MSS(最大报文段长度):表示TCP发往另一端的最大报文段长 度。当建立一个连接时,连接的双方都要通告各自的MSS,以充分利用带宽资源。 传输确认机制:当TCP传输一个数据段后,它启动一个定时器, 等待目的端确认收到这个报文段。如果不能及时收到目的端的确 认报文,TCP将重传该数据段。 首部和数据的检验和:TCP将保持首部和数据的检验和,这是一 个端到端的检验。目的是检测数据在传输过程中的变化。如果收 到段的检验和有所差错,TCP将丢弃该报文段并不确认收到此报 文段。因此TCP将启动重传机制。 流量控制:TCP还能提供流量控制。TCP连接的每一方都有一个 固定大小的缓冲空间。TCP接收端只允许另一端发送接收缓冲区 所能够容纳的数据。这能够防止较快的主机致使较慢的主机缓冲 区溢出。

2 TCP 数据包简介

TCP使用IP作为网络层协议,TCP数据段被封装在一个IP数据包内。

TCP数据段由TCP Head(头部)和TCP Data(数据)组成。 TCP最多有60个字节的首部,如果没有任选字段,正常的长度是20 字节。 TCP报文结构: 16位源端口号:TCP会为源应用程序分配一个源端口号。 16位目的端口号:目的应用程序的端口号。 每个TCP段都包含源和目的端的端口号,用于寻找发端和收端应用进程。 这两个值加上IP首部中的源端IP地址和目的端IP地址可 以唯一确定一个TCP连接。 32位序列号:用于标识从TCP发端向TCP收端发送的数据字节流 。 32位确认序列号:确认序列号包含发送确认的一端所期望收到的 下一个序号。确认序列号为上次成功收到的数据序列号加1。 4位首部长度:表示首部占32bit字的数目。因为TCP首部的最大长 度为60字节。 16位窗口大小:表示接收端期望接收的字节, 由于该字段为16位,因而窗口大小最大值为65535字节。 16位检验和:检验和覆盖了整个TCP报文段,包括TCP首部和 TCP数据。该值由发端计算和存储并由接收端进行验证。

3 TCP 链接的建立

TCP提供可靠的面向连接的全双工传输层协议。TCP的可靠性通过很多方法来得到保障,在数据连接建立之后再传送数据就是其 中一种方法。 TCP的任何一方在传输数据之前都必须在通信的双方之间建立一 条连接。 TCP连接的建立是一个三次握手的过程: 1、请求端(通常也称为客户端)发送一个SYN段表示客户期望连 接服务器端口,初始序列号为X。 2、服务器发回序列号为b的SYN段作为响应。同时设置确认序号 为客户端的序列号加1(X+1)作为对客户端的SYN报文的确认。 3、客户端设置序列号为服务器端的序列号加1(b+1)作为对服务 器端SYN报文段的确认。 这三个报文段完成TCP连接的建立。

4 TCP 链接的终止

前面提到TCP是面向连接的全双工传输层协议。全双工意味着同 一时刻双方向都可以进行数据的传输,因此通信的双方都必须关闭连接。 TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要 经过四次握手。 1、请求端(通常也称为客户端)想终止连接则发送一个FIN段, 序列号设置为a。 2、服务器回应一个确认序号为客户端的序列号加1(a+1)的 ACK确认段,作为对客户端的FIN报文的确认。 3、服务器端向客户端发送一个FIN终止段(设置序列号为b,确认 号为a+1)。 4、客户端返回一个确认报文(设置序列号为b+1)作为响应。 以上四次交互完成双方向的连接的关闭。

3 Udp

1 概述

UDP为应用程序提供面向无连接的服务,所以在传数据之前源端和目的端之间不必要像TCP一样需要事先建立连接。正由于UDP 是面向无连接的传输协议,所以UDP不需要去维护连接状态和收 发状态,因此服务器可同时向多个客户端传输相同的消息。 UDP适用于对传输效率要求高的运用,由应用层提供可靠性的保 障。如常用于认证计费的Radius协议、RIP路由协议都是基于 UDP的。 UDP和TCP一样都使用IP作为网络层协议,TCP数据报被封装在 一个IP数据包内。 由于UDP不像TCP一样提供可靠的传输,因此UDP的报文格式相 对而言较简单。

2 UDP 报文结构:

16位源端口号:为源端应用程序分配的一个源端口号。 16位目的端口号:目的应用程序的端口号 16位UDP长度:是指UDP首部和UDP数据的字节长度。该字段的 最小值为8。 16位UDP检验和:该字段提供与TCP检验和同样的功能,只不过 在UDP协议中该字段是可选的。