IP协议是TCP协议栈中的核心协议,也是网络编程的基础之一。
IP服务特点:
IP协议为上层协议提供无状态,无连接,不可靠的服务。
-
无状态:IP通信双方不同步状态传输信息,因此所有IP数据报的发送和接收都是相互独立的,这样也就造成了它无法处理乱序,重复的IP数据报。相对于面向连接而设定的,例如TCP协议,它能够自己处理乱序,重复的报文段。他递交给上层的内容绝对是有序的正确的。但是IP协议的状态也是有优点的,它简单高效,因为我们无需为保证它的状态而分配一些内核数据结构。
-
无连接:通信双方都不长久的维持对方的任何信息,那么就需要上层协议去指定传输的IP地址。
-
不可靠服务:不可靠指的是IP协议不能保证IP数据报完整并且准确的到达接收端。因此使用IP的上层协议需要自己做数据确认,超时重传等可靠传输机制。
IP基础知识
IP地址属于网络层地址
在计算机通信过程中,必须要有一个唯一标识来识别通信对端,之前数据链路层中,通过MAC地址来识别同一个数据链路中的不同主机。IP地址是作用在网络层的,用于区分网络中每一台主机
路由控制
路由控制是指将分组数据发送到最终目标地址的功能。即使是在复杂的网络环境中,也可以通过路由控制确定通往目标地址的一条通路。 一跳:数据链路层及以下的分层中传输数据帧的一个区间。数据链路层是通过MAC传输数据帧,也就是说他是主机或路由器网卡不经过其他路由器而能直接到达相邻主机或路由器网卡之间的一个区间。
路由控制表:为了将数据包发送给目标主机,所有主机都维护着一张路由控制表,该表记录IP数据下一步应该发送给哪个路由器。
数据链路抽象化
不同的数据链路最大区别就是他们的最大传输单位,MTU。以太网是1500字节,FDDI是4352字节,等。
IP是实现多个数据链路之间通信的协议,不管底层数据链路是以太网还是无线网,对IP都没有影响。IP(协议)会较大的IP包分成多个小IP包,这样可以完全忽略了不同数据链路的最大传输单位。
IP协议属于面向无连接型
面向无连接的传输方式相比较面向有连接的传输方式而言,简化了许多繁琐的步骤,效率更高。IP协议只需要关注把数据发送出去,并不验证数据是否收到。至于验证数据是否可靠传输,这是交由TCP来处理的。
IP地址基础知识
IP地址定义
IP地址是TCP/IP通信时候,用于识别主机和路由器的标识,IPV4由32位二进制组成,习惯表示为4个十进制的整数:172.20.1.1
IP地址由网络地址和主机地址组成
网络地址用于区分不同的网段,主机地址用于区分同一网段里不同的主机。以C类地址192.168.24.1为例,其中前24位是网络地址,后8位是主机地址。如果两个IP地址在同一个子网内,则网络地址一定相同为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过AND运算后就可以得到网络地址。
IP地址的分类
-
A类地址:第1到8位是网络地址,首位以二进制0开头,后24位二进制是主机地址。
-
B类地址:第1到16位是网络地址,前两位是二进制10,后16位二进制是主机地址。
-
C类地址:第1到24位是网络地址,前三位是二进制110,后8位二进制是主机地址。
-
D类地址:第1到32位是网络地址,前四位是二进制1110,没有主机地址。
子网掩码
子网掩码也是32位的二进制表示,他用1表示IP的网络地址位置,用0表示IP地址主机地址位置,比如C类IP地址子网掩码:11111111 11111111 11111111 00000000
全局地址和私有地址
对于那些没有接入互联网的独立网络中的主机,只要保证在这个网络内地址唯一就好,不用考虑互联网就可以对主机配置相应的IP地址。
A类私有网络:10./8
B类私有网络:172.16/12
C类私有网络:192.168/16
包含在这个范围内的IP地址都属于私有IP,在此之外的IP称为全局IP。
路由控制
网络中每一个主机都有一张路由控制表,它记录着“网络地址”和“与网络地址相对应的路由器的地址”。路由控制实际上是利用IP地址中的网络地址进行路由
原理:
发送IP包时,首先确定IP包首部的目标IP地址,再从路由表中查找目标IP中网络地址对应的路由器的地址,然后把IP包发送给响应的下一个路由器。
ARP地址解析协议
只要知道了目标地址的IP,就可以向这个目标IP发送数据包,但是,在网络层以下的链路层,实际进行通信的还是MAC,实际上也就是两个网卡之间的通信。ARP地址解析协议以IP地址为线索,用来定位下一个应该接收数据包的主机的MAC地址。ARP是根据IP地址获取MAC地址的一个网络层协议。
原理:主机A:172.20.1.1向主机B172.20.1.2发送数据包,计算机间的通信实际上是两个网卡间的通信,也就是MAC之间的通信,主机A只知道主机B的IP地址,于是主机A为了获取主机B的MAC地址,会通过广播发送一个ARP请求包,ARP请求包中包含了主机B的IP地址,接收到ARP请求包的主机,会拿自己的IP地址与ARP请求包中的目标IP进行对比,如果是发给自己的,就将自己的MAC地址响应给主机A,如果不是发给自己的就丢弃掉。因此,主机A就通过主机B的IP地址获取到了主机B的MAC地址了。
IP地址和MAC地址缺一不可
计算机通信实际上是两个MAC之间通信,数据链路上只要知道接收端的MAC地址不就可以了,还要IP地址干嘛?
主机A和主机B如果不在同一个数据链路中,也就是不在同一个网段,主机A想要发送数据给主机B,必须要经过路由器。如果只知道主机A和主机B的MAC地址,主机A在自己的网段中找不到主机B的MAC,便会发送数据给路由器,但是这时候如果没有IP协议和ARP地址解析协议,是无法进行路由控制,获取路由器的MAC,这样主机A的数据就到达不了路由器,更到达不了主机B。
网友评论