【TCP/IP】IP协议

IP简介   

        IP协议作为TCP/IP的核心协议,对应着OSI参考模型的网络层,主要实现的是终端节点之间的“点对点”通讯。为了简化和提速,IP协议设定为了面向无连接型,因此在发包之前不需要建立与对端目标地址之间的连接(但为了确保传输的可靠性,IP的上层的TCP采用的是有连接型)。IP协议主要包含了IP地址,路由控制以及对数据链路的抽象化。

网络层和数据链路的关系

        网络层本身和数据链路层密不可分。数据链路层互连了同一种数据链路的节点之间的包传递,而网络层在它的基础上实现了不同数据链路之间的数据包传输。可以理解为数据链路层实现了一个区间(段)之间的数据传输,而如果要实现远程的两个主机之间的通信,则需要网络层来规划传输的方式,否则数据链路层并不会知道数据该往何处传递,同理网络层本身并不负责数据的具体传输实现,所以网络层不能在没有数据链路层的情况下传递数据。

IP地址

        类似于数据链路中的MAC地址,IP的地址信息称为IP地址,用于在“连接到网络层中的所有主机中识别出进行通信的目标地址”。TCP/IP中通信的所有主机或者路由器必须设定自己的IP地址(网桥或交换集线器等物理层或数据层包转发设备中,不需要设置IP地址)。IP地址也是对数据链路层的一种抽象,数据链路的类型对于IP地址形式透明。

        IP(IPv4)地址是由32位正整数来表示的,而在计算机内部则是以二进制方式被处理。为了便于阅读,往往将32位的IP地址以8位为一组,分成4组,用'.'隔开,再将二进制转换为十进制数。IP地址并不取决于主机的台数,而是由网卡来决定,网卡可以配置一个或多个IP地址,同时一个设备也可以按多个网卡。

        IP地址并不是全部用来识别主机,它分为网络识别和主机识别两部分。网络标识在数据链路的每段会配置不同的值,而每个段的地址不相重复。位于相同段内相连的主机必须有相同的网络地址。路由器往往可以通过只识别网络标识就可以确定主机所在的网段。而在同一个网段中,IP的主机标识也是不能重复的。IP的主机地址有一定的限制,例如主机位不能全为0或者1(比特位的表示时)。全是0只有在对应的网络地址或者IP地址不可知才会使用。而全是1则通常作为广播地址,用于在同一个链路中相互连接的主机之间发送数据包。广播可以分成本地广播和直接广播两种。

        IP地址分为四个级别,即A、B、C、D四类。

        A类地址的首位为0,从第1位到第8位(实际上只有7位,因为首位都是0)是它的网络标识(0.0.0.0-127.0.0.0),后24位是它的主机标识。因此一个网段可以容纳的主机地址上限为2^24-2个。

        B类地址是前两位为10的地址,从第1位到第16位(去掉分类位剩下14位)是它的网络标识(128.0.0.0-191.255.0.0)。B类地址的后16位相当于主机标识。

        C类地址的前三位都是110。从第1位到第24位是它的网络标识(192.0.0.0-223.255.255.0)。C类地址的后8位是主机标识。

        D类地址的前四位为1110,从第1位到第32位都是网络标识(224.0.0.0-239.255.255.255),所以D类地址没有主机标识,常被用于多播。多播用于将包发送给特定组内的所有主机(但这种方式并不可靠)。

子网掩码

        通过IP地址的分类,可以知道网络标识和主机标识。但是有的时候,网络中并不会消耗那么多主机标识,从而会产生一定的浪费。子网和子网掩码则可以让网络标识和主机标识不在受限于该地址的类别。通过子网掩码,可以在原有的网络地址基础上再细分出更小粒度的网络。实现上就是将部分的主机地址充当了子网地址。

        子网掩码如果用二进制表示也是一个32位的数字,它对应的IP地址网络识别部分的位全部为1,对应的IP地址主机标识部分全部为0。

全局地址和私有地址

         随着互联网的发展,IP地址不足的问题日趋显著。为了防止IP地址耗尽,出现了全局IP和私有的IP地址。其目的是不让某个设备一直持有一个固定的IP地址,而是再需要的时候分配给他一个唯一的IP地址。私有IP规定了一个范围,如果IP地址再找个范围内,则属于私有IP,此外的IP称为全局IP。私有IP最初不能和全局IP通信,不过通过NAT技术可以实现这个过程。因为IP是私有的,所以不需要在考虑是否在互联网内唯一,只要在自己的域中唯一即可实现识别。

        虽然有了子网掩码和私有地址,但是IPv4还是面临着不够用的窘境,因此在之后又推出了IPv6。IPv6对地址进行扩大(变成了128位)并且性能得到了增强,还支持多种其他功能,但是由于IPv4转成IPv6很费力,所有现在还没有完全普及。

路由控制

        路由控制是指将分组数据发送到最终目标地址的功能。IP地址的传输并不是直接确定路线,当一个IP包到达路由器时,路由器并不会直接告诉它怎么直接到目标主机,而时先查找目标地址,之后将包发送到临近的另一个服务器。每次的传递只在短距离的范围内,通过多次的周转让IP包到达它的目标主机。一般为了将数据包发送给目标主机,所有主机都维护者一张路由控制表,记录着IP数据在下一步应该发送给哪个路由器,IP根据这个表来在各个数据链路上传。这里有几个概念: 

        默认路由,其是指路由表中任何一个地址都能与之匹配的记录,其一般被标记为default;

        主机路由,它代表整个IP地址的所有位都参与路由,进行主机路由意味着要基于主机上网卡配置的IP地址本身,而不是基于网络地址部分进行路由。

        环路地址,其是在同一台计算机上的程序之间进行通信的时所使用的一个默认地址,我们熟悉的127.0.0.1就是环路地址。

数据链路抽象化

        IP为了解决不同数据链路之间的不同特点,需要对不同的数据链路的相异特性进行抽象化。其中最大的不同时最大传输单位MTU。为了解决MTU的不同,IP往往会进行分片处理,机将较大的IP包分成多个较小的IP包,并在之后对数据报进行重组。重组的步骤只有目标主机进行,而路由器只会分片。但是分片本身比较消耗路由器的资源,并且容易丢失,所以产生了路径MTU的概念,其是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送。

   本文为个人学习笔记,如有问题欢迎讨论和指出@茱莉亚之歌

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值