网络层 | 您所在的位置:网站首页 › udp路由服务不必做路由选择模式 › 网络层 |
网络层
网络层ip协议ip协议报头格式MTU
ip地址子网掩码
私网与公网路由选择
网络层
网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。 网络层的目的:实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术 ip协议在计算机通信中,为了识别通信的对端,就必须有一个类似于地址的识别码进行识别。而在网络层中,ip就充当了地址的作用。 ip地址用于在 连接到网络中的所有主机中识别出进行通信的目标地址,因此,TCP/ip通信中的所有主机或者路由器必须设定自己的ip地址
在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议)以及IGMP协议(Internet组管理协议) ip协议报头格式前三位,表示优先权,目前已经弃用 后面四位,表示最小延时(ssh)+ 最大吞吐量(ftp)+ 最高可用性 + 最小费用。他们之间是一个互斥的关系,如果都是0,则表示使用默认属性 最后一位,是一个保留位,必须置0 16位总长度:表示ip数据报整体的长度,单位是字节,他的最大报文长度时2^16次方,也就是65535个字节,但是由于受到MTU的影响,一般达不到最大字节。 16位标识:是一个标识,唯一标识主机发送的报文。 如果通信使用的是UDP协议,那么当数据长度大于MTU的时候,就需要进行分片传输,这个时候在每一个分片中的16位标识都是相同的,标识着他们是由哪一个数据组成的 3位标志:分别是 保留位,禁止分片,标识更多分片当前分片不是最后分片的时候,第三位为 1 当前分片是最后分片的时候,第三位为 0 13位片偏移:标识着分片在UDP报文中的位置。等同于汇编中的段基址 + 偏移量
所以在计算片偏移的时候,需要在13位数值的基础上 * 8,也就是 片偏移 = 13位数值 * 8,所求出来的数据的单位就是字节,也就是该分片的起始位置 8位生存周期:数据在传输到达目的地之前,所允许经过的路由器的个数;TTL,表示跳数(一般是64),也就是该数据最多可以经过多少个路由器进行转发数据,每经过一个路由器,就进行TTL - 1操作,这是为了防止出现环形路径发生死循环的情况。 如果TTL变成0,并且还没有到达对端,那么转发设备就丢弃该报文 MTU:最大传输单元,可以使用ifconfig命令查看,单位是字节 而数据在封装的过程中,网络层数据来源于传输层,而传输层有两个协议TCP和UDP TCP协议因为TCP协议在三次握手期间就有一个任务,就是互相协商,确定一个MSS(最大报文长度) MTU = MSS + ip头部 + TCP头部 所以说,TCP协议是按照MSS去给网络层提交数据,但是MSS的大小一定小于MTU的,所以TCP协议下通信的数据在网络层是不需要分片传输的 UDP协议UDP协议是面向数据报,一般是整条数据发送,并且整条数据进行接收,所以是很有可能会超过MTU的大小的。 而当UDP协议一次发送的报文超过了MTU字节的大小时,就需要在网络层进行分片传输。 最后,由于UDP协议是不可靠的,而网络层的ip协议也是不可靠的,所以如果在分片传输的过程中丢失了一部分的分片,那么整条UDP数据就会被全部丢失 ip地址对于ipv4的地址,他的类型是unint32_t,所表示的范围是0 ~ 2^32 ip地址 = 网络号 + 主机号 网路号:标识一个子网络,也就是很多ip地址主机号:在子网当中唯一标识一台主机对于那么多的ip地址,他们又被分为5类,依次为A类,B类,C类,D类和E类 A类:最高的1位为0,后面7位为网络号,剩下的24位为主机号
每一个A类子网,最多可以有2^24次方个ip地址,也就是16777216个(包括网络号 和 广播号)
我们可以看出,ip地址虽然有所划分,但是所有的ip地址都是相连的,A类的最大ip地址 + 1 = B类的最小ip地址 同时,C类ip地址拥有着最少的主机号 2^8 ,也就是 256个ip地址。 而如果有人只想要10个ip地址,总不能直接把C类的ip地址都给这个人吧,那样很容易造成ip地址的浪费。这个时候就有了子网掩码 子网掩码针对上面这种情况,引入了一个新的解决方法,叫做CIDR(Classless Interdomain Routing) 他的作用是为了更精确的划分子网,已经精确分配ip地址,从而避免ip地址浪费的问题 使用了一个子网掩码,这其实是一个 uint32_t类型的整数,由一段连续的二进制1构成,利用子网掩码就可以区分最大主机号与网络号 最大主机号:子网掩码取反网络号:子网掩码 & ip地址
在42亿的ipv4的ip地址中,又被划分出来的3个段,在这3个段中的ip地址不具备访问互联网的功能,被称为私网。 与之对应的,可以访问互联网的其他ip地址,就是公网。
当我们在发送数据的时候,这样几个东西总是必不可少的 源ip,标识数据从哪来源端口目的ip,标识数据要到哪里去目的端口protocol,数据传输中所使用的协议
默认路由 如果一张路由表中包含所有网络以及子网的信息,那么就会造成很大程度的浪费。 这个时候,就可以使用默认路由,他是指路由表中的任何一个地址都可以进行匹配的几率 主机路由 ip地址 / 32,这就被称为主机路由,就像 192.168.1.1/32 他的意思是整个ip地址的所有位都将参与路由。进行主机路由,意味着要基于主机上网卡设备的ip地址本身,而不是基于该地址的网络地址进行路由 一般用于不希望通过网络地址路由的情况 环回地址 环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。 一般使用一个特殊的ip地址作为环回地址,127.0.0.1 如果结果是该子网的网络号,那么就直接把数据发送给当前子网中的机器; 如果不是该子网的网络号,表示这个数据不在这个路由器的子网中 如果除了默认网关之外的其他路由条目都没有匹配上,那么这个数据就走默认网关,直接传递给上级路由器在每一个路由器中进行比对的时候,每比对一次,TTL-1,直到TTL耗尽就被丢弃了,或者是数据到达了目标位置,传输成功。 |
CopyRight 2018-2019 实验室设备网 版权所有 |