简单介绍IP协议

一、介绍

IP协议是TCP/IP协议栈中最核心的协议,所有的TCP、UDP等数据的传输都是靠IP协议来完成的,IP协议是一个不可靠的,无连接的协议。

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

二、IP报文格式

IP数据包格式

  • 4位版本号:主要有IPv4和IPv6两个版本
  • 4位首部长度:单位是4个字节,所以能表示的范围是0-60个字节
  • 8位服务类型:3位优先权字段(已弃用),4位TOS字段和1位保留位(必须为0),4位TOS分别表示最小延时、最大吞吐量、最高可靠性、最小成本,四者相互冲突,最多有一个能置位1,应用程序应该根据实际需要来设置它。比如像ssh和telnet这样的登陆程序需要的是最小延时服务,而文件传输程序ftp则需要最大吞吐量的服务
  • 16位总长度:IP数据报的最大长度为65535个字节,但是由于MTU(最大传输单位)的限制,长度超过MTU的数据报都会被分片,所以实际长度是打不到最大值的
  • 16位标识:因为IP协议有分包组包的机制,所以就需要标识哪些数据片是属于同一个数据报的
  • 3位标志:第一位保留,第二位表示"禁止分片",如果第二位为1时,报文长度又超过了MTU,这时IP就会丢弃这个报文,第三位表示"更多分片",一个包分出的最后一个包,这个位为1,其他片都为0,相当于一个结束标记
  • 13位片偏移:标记同一个包的不同分片谁在前谁在后
  • 8位生存时间(TTL):一个IP数据报又一个初始生存时间,可能是32或64,每次这个IP数据报经过一个设备的转发,TTL就会减1,当减到0时,IP模块就会丢弃这个包,并发送 I C M P报文通知源主机
  • 8位协议:明确的指出这个IP数据报携带的数据部分是属于哪个传输层协议(传输层协议是通过端口号来指出数据是属于哪一个应用层协议的)
  • 16位首部校验和:验证数据是否有效(数据部分的数据已经在上层协议中验证过了)

三、地址管理

IP地址本质上是一个32位的整数,因为对于人来说不好理解,所以就有了点分十进制表示法。

1、网段划分

一个IP地址一般分为两个部分,前半部分表示网络号,后部分表示主机号。网络号用来区分局域网,主机号用来区分同一个局域网中的不同主机,同一个局域网中的网络号必须相同,主机号必须不同;不同局域网的网络号必须不同,主机号可以相同。

  • 传统的划分方法分为ABCDE五类IP地址(现在已经不用这种方法了,因为浪费严重)
    在这里插入图片描述
  • 通过"子网掩码"来进行划分,称为"CIDR"。子网掩码从二进制的角度来看,前半部分全是1,后半部分全是0,拿子网掩码和IP地址进行按位与的操作,得到的结果就是网络号,剩余的部分就是主机号。

在这里插入图片描述

2、特殊的IP地址

  • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网
  • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主
    机发送数据包
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

3、IP地址的数量限制

IP地址的初衷是让每一个主机能有唯一的一个IP地址,但随着时代的发展,移动端时代的到来,IPv4地址显然是已经不够达到这个初衷了。所以面对这个问题,有三种解决方案

  1. 动态分配IP地址:如果某个设备不上网就不分配IP地址,只给上网的设备分配IP地址
  2. NAT机制:把IP地址分为"外网IP"和"内网IP",用一个外网IP代替N个内网IP,当一个局域网中的主机A和主机B都要访问同一个服务器时,请求先发送的路由器中,路由器对其中的信息做出了调整,把源IP换成了外网IP,同时还替换了其中一个端口(为了区分服务端返回的数据报到底是给谁的)
    在这里插入图片描述
  3. 采用IPv6来代替IPv4,这种方法属于终极方案,因为IPv6采用了16个字节,但是由于IPv4和IPv6互不兼容,就会导致如果要采用IPv6的话,就要大面积的替换设备,所以目前还无法普及

四、路由选择

路由选择就是选择路线,就比如我们要去一个陌生的地方办一个事时,我们就可以通过问路的方式一步一步到达目的地,网络通信也是这样的,当客户端构造出一个IP数据报传给路由器时,相当于就是向路由器问路,路由器会有一个路由表,通过查询对比,如果找到IP数据报中的目的IP,就会从指定接口发送给目的IP主机,如果没有找到,就会从一个默认的端口发送,传个上一级路由器。路由表是路由器中维护的一种数据结构,由路由表生成算法生成,其中的记录有他周围路由器和主机的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值