TCP/IP协议族

#TCP/IP协议族

----------

##分层(概述)

###链路层:

也可以称作**数据链路层**或者**网络接口层**,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或者其他传输媒介)的物理接口细节

###网络层:

**处理分组在网络中的活动**。在TCP/IP协议族中,网络层协议包括**IP**,**ICMP**,**IGMP**。

###运输层:

也可以叫**传输层**。主要为两台主机上的应用程序提供端到端的通信。TCP/IP协议族中有两个:TCPUDP

TCP

提供可靠的传输,应用层不用负责。

UDP

不保证到达,可靠性由应用层负责。

###应用层

负责处理特定的应用程序细节。

例如:Telnet,FTP,SMTP,SNMP。

----------

##链路层

目的:

1.接收和发送IP数据报

2.接收ARP应答和发送ARP请求

3.接收RARP应答和发送RARP请求

###SLIP (Serial Line IP) 串行线路IP

它是一种在串行线路上对IP数据报进行封装的简单形式。

SLIP协议定义的帧格式:

**1.**IP数据报以一个称作**END(0xc0)**的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数在数据报的开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。

**2.**如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符,**但是它的值与ASCII码的ESC字符(0x1b)不同。**

**3.**如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节 0xdb和0xdd来取代它。

缺陷:

1) 每一端必须知道对方的I P地址。没有办法把本端的IP地址通知给另一端。

2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,

那么它不能同时使用其他协议。

3)SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。

###PPP:点对点协议

主要包括:

1) 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的**异步模式**

(如大多数计算机上都普遍存在的串行接口) ,还支持面向比特的同步链接。

2) 建立、配置及测试数据链路的**链路控制协议**(LCP:Link Control Protocol) 。它允许通信双方进行协商,以确定不同的选项。

3) 针对不同网络层协议的**网络控制协议**(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。

总的来说,PPP比SLIP具有下面这些优点:(1) PPP支持在单根串行线路上运行多种协议,

不只是IP协议;(2) 每一帧都有循环冗余检验; (3) 通信双方可以进行IP地址的动态协商(使用IP网络控制协议);(4) 与CSLIP类似,对TCP和IP报文首部进行压缩; (5) 链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

###最大传输单元MTU

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。

###路径MTU

当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果

两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。

两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同) ,因此路径MTU在两个方向上不一定是一致的。

----------

##IP:网际协议

IP是TCP/IP协议族中最为核心的协议。所有的TCP,UDP,ICMP,IGMP都是以IP数据报格式传输的。

IP提供不可靠、无连接的数据报传输。

不可靠:不保证IP数据报能成功到达目的地。

无连接:每个数据报都是独立传输的,IP不维护后续数据报的状态信息。

###IP首部

20字节

**版本号**:IPv4、IPv6

首部长度

单位是4个字节

有4位,所以首部最长60字节(4位=15 15*4=60)

**服务类型**4bit分别代表最小时延、最大吞吐量、最高可靠性、最小费用。

**总长度字段**是指整个IP数据报的长度,以字节为单位,利用首部长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。(大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过 5 7 6字节的数据报。)

总长度字段是I P首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据

以达到最小长度。尽管以太网的最小帧长为 4 6字节,但是I P数据可能会更短。如

果没有总长度字段,那么I P层就不知道4 6字节中有多少是I P数据报的内容。

**标识字段**唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。

**TTL(time - to - live)生存时间字段**设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64) ,一旦经过一个处理它的路由器,

它的值就减去1。当该字段的值为 0时,数据报就被丢弃,并发送 ICMP报文通知源主机。

**首部检验和字段**是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。 ICMP、

IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

为了计算一份数据报的 IP检验和,首先把检验和字段置为 0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串 16 bit的字组成) ,结果存在检验和字段中。当收到一份I P数据报后,同样对首部中每个 16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全 1。如果结果不是全1(即检验和错误) ,那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。

最后一个字段是**任选项**,是数据报中的一个可变长的可选信息。目前,这些任选项定义

如下:

• 安全和处理限制(用于军事领域,详细内容参见 RFC 1108[Kent 1991])

• 记录路径(让每个路由器都记下它的 I P地址)

• 时间戳(让每个路由器都记下它的 I P地址和时间)

• 宽松的源站选路(为数据报指定一系列必须经过的 I P地址)

• 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能

经过其他的地址) 。

这些选项很少被使用,并非所有的主机和路由器都支持这些选项。

选项字段一直都是以 32 bit作为界限,在必要的时候插入值为 0的填充字节。这样就保证

I P首部始终是32 bit的整数倍(这是首部长度字段所要求的) 。

###IP路由选择

从概念上说,I P路由选择是简单的,特别对于主机来说。如果目的主机与源主机直接相

连(如点对点链路)或都在一个共享网络上(以太网或令牌环网) ,那么I P数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。

在一般的体制中,IP可以从TCP、UDP、ICMP 和 IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。 IP层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由 IP首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么如果IP层被设置为路由器的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);否则数据报被丢弃。

**路由表**中的每一项都包含下面这些信息:

•**目的IP地址**。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。主机地址有一个非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网) 。

•**下一站(或下一跳)路由器( next-hop router)的IP地址,或者有直接连接的网络 IP地址**。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。

•**标志**。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口。

•**为数据报的传输指定一个网络接口**。

IP路由选择是逐跳地(hop - by - hop)进行的。从这个路由表信息可以看出, IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的) 。所有的IP路由选择只为数据报传输提供下一站路由器的 IP地址。它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。

**IP路由选择**主要完成以下这些**功能**:

1) 搜索路由表,寻找能与目的 IP地址完全匹配的表目(网络号和主机号都要匹配) 。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值) 。

2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目

指定的下一站路由器或直接连接的网络接口(取决于标志字段的值) 。目的网络上的所

有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表

目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。

3) 搜索路由表,寻找标为“默认( d e f a u l t) ”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。

如果上面这些步骤都**没有成功**,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“**主机不可达**”或“**网络不可达**”的错误。

完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由,以及下一站路由器发送的 ICMP间接报文(如果我们为数据报选择了错误的默认路由) ,是IP路由选择机制中功能强大的特性。为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是 IP路由选择机制的另一个基本特性。这样做可以极大地缩小路由表的规模,比如 Internet上的路由器有只有几千个表目,而不会是超过100万个表目。

你可能感兴趣的:(TCP/IP协议族)