TCP-IP详解笔记1.3 IP:网际协议

from http://www.beyondrails.com/blogs/22

1,TCP
英文原义:Transmission Control Protocol
中文释义:传输控制协议(RFC-793)
该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。
IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。
而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。
另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。
在简化的计算机网络OSI模型中,它完成运输层所指定的功能。
百度百科:TCP

2,UDP
英文原义:User Datagram Protocol
中文释义:用户数据报协议(RFC 768)
用户数据报协议(UDP)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP 协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。
由于UDP比较简单,UDP头包含很少的字节,比TCP负载消耗少。
UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。
UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
百度百科:UDP

3,ICMP
英文原义:Internet Control Message Protocol
中文释义:Internet控制消息协议(RFC 792)
该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。
百度百科:ICMP

4,IGMP
英文原义:Internet Group Management Protocol
中文释义:Internet组管理协议
Internet组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。
IGMP信息封装在IP报文中,其IP的协议号为 2。
IGMP具有三种版本,即IGMP v1、v2和v3。
IGMPv1: 主机可以加入组播组。没有离开信息(leave messages)。路由器使用基于超时的机制去发现其成员不关注的组。
IGMPv2: 该协议包含了离开信息,允许迅速向路由协议报告组成员终止情况,这对高带宽组播组或易变型组播组成员而言是非常重要的。
IGMPv3: 与以上两种协议相比,该协议的主要改动为:允许主机指定它要接收通信流量的主机对象。来自网络中其它主机的流量是被隔离的。IGMPv3 也支持主机阻止那些来自于非要求的主机发送的网络数据包。
百度百科:IGMP

5,不可靠和无连接
不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。
IP仅提供最好的传输服务。
如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。
任何要求的可靠性必须由上层来提供(如TCP)。
无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。
如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

6,IP首部
IP数据报格式及首部中的各字段:

服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
RFC 1340[Reynolds and Postel 1992]描述了所有的标准应用如何设置这些服务类型。
RFC 1349[Almquist 1992]对该RFC进行了修正,更为详细地描述了TOS的特性。
不同应该建议的TOS值,最后一列给出的十六进制值就是tcpdump的输出:

现在大多数的TCP/IP实现都不支持TOS特性。

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。
它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。
当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

7,IP路由选择
从概念上说, IP路由选择是简单的,特别对于主机来说。如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机上。
否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。
IP层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。
当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。
如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。
如果数据报的目的不是这些地址,那么(1)如果I P层被设置为路由器的功能,那么就对数据报进行转发;否则(2)数据报被丢弃。

路由表中的每一项都包含下面这些信息:
1)目的IP地址
2)下一站路由器(next-hop router)的IP地址
3)标志(其中一个标志指明目的I P地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口)
4)为数据报的传输指定一个网络接口

IP路由选择主要完成以下功能:
1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)
2)搜索路由表,寻找能与目的网络号相匹配的表目
3)搜索路由表,寻找标为“默认(default)”的表目
如果上面这些步骤都没有成功,那么该数据报就不能被传送。
如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

默认路由,以及下一站路由器发送的ICMP间接报文(如果我们为数据报选择了错误的默认路由),是IP路由选择机制中功能强大的特性。
为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择机制的另一个基本特性。这样做可以极大地缩小路由表的规模。

8,子网寻址
现在所有的主机都要求支持子网编址(RFC 950[Mogul and Postel 1985])。
不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为2^24-2和2^16-2。
事实上,在一个网络中人们并不安排这么多的主机。
由于全0或全1的主机号都是无效的,因此我们把总数减去2。
例如,这里有一个B类网络地址(140.252),在剩下的16 bit中,8 bit用于子网号,8 bit用于主机号,格式如下图所示。
这样就允许有254个子网,每个子网可以有254台主机。


9,子网掩码
除了IP地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。
这是在引导过程中通过子网掩码来确定的。
这个掩码是一个32 bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。
下图是两种不同的子网掩码格式:

给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的地址是:
(1)本子网上的主机;
(2)本网络中其他子网中的主机;
(3)其他网络上的主机。
如果知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位可以得知),也就知道网络号和子网号之间的分界线。
而根据子网掩码就可知道子网号与主机号之间的分界线。

假设我们的主机地址是140.252.1.1(一个B类地址),而子网掩码为255.255.255.0(其中8 bit为子网号,8 bit为主机号)。
1)如果目的IP地址是140.252.4.5,那么我们就知道B类网络号是相同的(140.252),但是子网号是不同的(1和4)。
2)如果目的IP地址是140.252.1.22,那么B类网络号还是一样的(140.252),而且子网号也是一样的(1),但是主机号是不同的。
3)如果目的IP地址是192.43.235.6(一个C类地址),那么网络号是不同的,因而进一步的比较就不用再进行了。
给定两个IP地址和子网掩码后, IP路由选择功能一直进行这样的比较。

10,7个特殊的IP地址
在这个图中, 0表示所有的比特位全为0;-1表示所有的比特位全为1;netid、subnetid和hostid分别表示不为全0或全1的对应字段。
子网号栏为空表示该地址没有进行子网划分。


11,一个子网的例子


12,ifconfig/netstat
ifconfig用来查看和编辑系统的网络配置
netstat用来监控和显示网络接口设备的状态信息

13,IP的未来
IP主要存在三个方面的问题,这是Internet在过去几年快速增长所造成的结果:
1)超过半数的B类地址已被分配
2)32bit的IP地址从长期的Internet增长角度看,是不够用的
3)当前的路由结构没有层次结构,属于平面型(flat)结构,每个网络都需要一个路由表目

目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。
IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。

与IPV4相比,IPV6具有以下几个优势:
一,IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
二,IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三,IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
四,IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
五,IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

你可能感兴趣的:(数据结构,应用服务器,网络协议,网络应用,百度)