您的位置:首页 > 理论基础 > 计算机网络

网络基本功:IP协议

2016-04-30 16:25 459 查看
IP协议

            IP协议是TCP/IP 的核心协议,所有的TCP.UDP.ICMP.IGMP都是按照这种格式发送数据的。
            IP提供的是一个“尽力而为”服务。IP协议在产生时是一个松散的网络,这个网络由各个大学的局域网相互连接而成,由一群蓬头垢面的Geek维护,所以IP协议认为自己所处的环境是不可靠的。它的出现只是为了将各个分散的实验室网络和校园之间的网路连接起来。在这样的环境下,IP提供的协议只是“我尽力(best efffort)”。 IP不提供可靠的传输服务,它不提供端对端或(路由)结点到(路由)结点的确认,对数据没有差错控制,如果事情出错不要怪我,我只是尽力的做,不能保证什么。如某个路由器暂时用完了缓冲区,IP有个简单的处理错误的算法,:丢弃该数据,它只使用报头的校验码,它不提供重发和流量控制,如果出错,可以通过ICMP报告给信源,ICMP在IP模块中实现。需要更好的服务需要高层的协议来处理。它只负责效率的传输。也正是“best
effort”式的设计方式,成就了现在的IP协议的效率。
            “效率优先”也体现在IP包的顺序上,及时出发地和目的地保持不变,IP协议也不保证IP包到达的顺序,IP的接力是根据routing table决定接力路线的。如果在连续的IP包发送过程中,routing table更新,那么后发出的IP包不一定按照原先的路径走,可能会选择一条更快的捷径,那么后发的包可能先到。

            IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,他还对数据大小的重新分片和组装功能,以适应不同网络对包大小的要求。IP的责任就是把数据从源传到目的地。它不负责保证传送可靠性,流控制,包顺序和其他对于主机到主机协议来说很普通的服务。
IP实现两个基本的功能:寻址和分段。

            IP可以将根据数据包包头中包含的目的地址数据传送到目的地址,在此过程中IP负责传送的道路,这种选择道路称为路由功能。

            如果有些网络只能传送小数据,IP可以将数据重新组装并在包头域注明,也即分段功能。

            另外,Identification, flags和fragment offset,这三个包都是为碎片化(fragmentation)服务的。碎片化是指一个路由器将接收到的IP包分拆成多个IP包传送,而接收这些“碎片”的路由器或者主机需要将“碎片”重新组合(reassembly)成一个IP包。不同的局域网所支持的最大传输单元(MTU, Maximum Transportation
Unit)不同。如果一个IP包的大小超过了局域网支持的MTU,就需要在进入该局域网时碎片化传输(就好像方面面面饼太大了,必须掰碎才能放进碗里)。碎片化会给路由器和网络带来很大的负担。最好在IP包发出之前探测整个路径上的最小MTU,IP包的大小不超过该最小MTU,就可以避免碎片化。IPv6在设计上避免碎片化。每一个IPv6局域网的MTU都必须大于等于1280 bytes。IPv6的默认发送IP包大小为1280 bytes。

IP使用四个关键技术提供服务:

             time to live存活时间。time to live最初是表示一个IP包的最大存活时间。如果IP包在传输过程中超过Timeto Live,那么IP包就将作废,后来IPv4的这个区域纪录一个整数(比如30),表示在IP包接力过程中最多经过30个路由能力,如果超过30个路由能力,那么该IP就作废。IP每经过一个路由,路由器就将time to live减一,当一个路由器发现time to live为0时,就不在发送IP包。time
to live避免了IP包在互联网中无限接力。

            Type of service服务类型。type of service最初主要是用来给IP包分优先级,比如语音通话需要实时性,所以它的IP包应该比web服务包的IP包有更高的优先级。然而这个最初的想法没有被微软所采纳。在windows下生成的IP包都具有相同的优先级,所以在当时造成Linux和Windows混合网络中,Linux的IP传输会慢于Windows (仅仅是因Linux更加守规矩!)。后来,Type of
Service被实际分为两部分:Differentiated Service Field (DS, 前6位)和Explicit Congestion Notification (ECN, 后2位),前者依然用来区分服务类型,而后者用于表明IP包途径路由的交通状况。IPv6的Traffic Class也被如此分成两部分。通过IP包提供不同服务的想法,并针对服务进行不同的优化的想法已经产生很久了,但具体做法并没有形成公认的协议。比如ECN区域,它用来表示IP包经过路径的交通状况。如果接收者收到的ECN区域显示路径上的很拥挤,那么接收者应该作出调整。但在实际上,许多接收者都会忽视ECN所包含的信息。交通状况的控制往往由更高层的比如TCP协议实现。

            选项option:。对于控制函数来说选项是重要的,但对于通常的通信来说它没有存在的必要。选项包括时间戳,安全和特殊路由
            包头校验码:Header Checksum:这个checksum用于校验IP包的头部信息。报头校验码保证数据的正确传输。如果校验出错,抛弃整个数据报。

参考博文资料:
http://blog.csdn.net/houdong/article/details/1505798 http://www.cnblogs.com/vamei/archive/2012/12/02/2796988.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: