网络层--IP协议

 一、基于UDP实现可靠传输(本质上是设计一个TCP)

二、网络层:

主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由 器的统称

1、网络层包含了两个方面:

1)、地址管理

2)、路由选择

三、IP协议

1、协议头格式


4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4;

4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最 大的数字是15, 因此IP头部最大长度是60字节【是变化的】;

8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤用), 4位TOS字段, 和1位保留字段(必须置为 0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一 个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.【按照不同的需要将IP数据报设置成不同的格式】;

16位总长度(total length): IP数据报整体占多少个字节【ip报头到完成的应用层数据结束的总长度】【可以通过总长度和ip报头的长度计算出真实数据的长度】;

16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面 的这个id都是相的【对唯一的IP数据报进行标志,一般情况下,不同的报文对应的标志不同,有的情况下可能一样(ip数据报可能会分包)(传输层数据太长,超过了ip数据报表示的范围)(分包之后的序列号完全相同,分包后,有UDP/TCP报头的数据在前面)】;


3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1 表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分 片了的话, 最后一个分片置为1, 其他是0. 类似于一个结束标记;【当传输层的数据太大(上限取决于数据链路层的限制)的时候,IP数据报需要进行分包和重组】

13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前 分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之 外, 其他报文的长度必须是8的整数倍(否则报文就不连续了);【通过16位标识区分出哪个来自一个IP数据报,通过13位片偏移来确定若干个数据报先后顺序。通过3位标志位判定分片的数据报是否已经结束(其中有1位作为结束位,结束置为1,没结束为0)。(分包之后16位标识相同,13位片偏移有大有小,小的在前面,大的在后面;接收端重组时,按照片偏移进行排序。)】

8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路 由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环 ;

8位协议: 表示上层协议的类型【表示的传输层协议,交给哪个上层传输层协议(TCP/UDP)(TCP/UDP拿到数据后,根据端口号判定把数据交给哪个应用层协议)】;

16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏;

32位源地址和32位目标地址: 表示发送端和接收端;

选项字段(不定长, 最多40字节):

2、IP地址:进行地址管理的核心要素(“收货地址”)【IP地址不重复,每个人都有一个独立的IP地址】

(1)IP地址的分配:

网络号:保证相互连接的两个网段具有不同的标识;

主机号:同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;

(2)路由器:运营商的网线(Wan口),个体上网的网线(Lan口)。一台主机上可以配置两个IP地址,该IP地址具有不同的网络号;若是两台主机的网络号和主机号都相同,则不能上网。

同一网端内,让主机号不同;不同网端内,IP地址一定不同。

DHCP帮助用户自动分配IP地址,路由器保证网端内的所有IP地址都不同。

(3)网段划分:

1‘、IP地址的利用率很低


主机号为24位,表示2^24=2^10*2^10^2^4=1600万;这种划分方式会导致大量的主机号被浪费。所以A类和B类会大量浪费IP地址。

2’、CIDR方案:通过子网掩码来标识(相当于一个位图,32位的整数);子网掩码与IP地址按位与得到的结果为网络号。

【前三个字节表示网络号,最后一个字节表示主机号】

特殊的IP地址

将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网; 

将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发 送数据包; 

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

(4)IP地址的数量

IP地址(IPV4)使用的是一个32位的正整数,2^32,大概位42亿9千万,每个主机都需要一个IP地址,IP地址会不够用,解决I地址不够用,优化:

A、CIDR:没有客观的改变IP地址的数量,只是提高了IP地址的利用率;

IP地址动态分配:主机没有联网的时候,把IP地址空闲出来,分配给其他的设备。下次联网后,IP地址可能发生改变,因为被重新分配了一个IP地址。随着发展,即使只给联网的设备分配IP地址,还是会出现着IP地址不够用的局面

B、NAT计数

C、IPV6:并不是IPV4的升级版本,这两个协议不兼容。因为兼容性不好,导致IPV6至今都没有普及,升级的成本高。

(5)、私有IP地址和公网IP地址

A、192.168.*:局域网中(设备和设备都只在局域网内,是否和其他局域网的IP地址重复并不重要)的IP地址。局域网内部的IP地址可以和其他局域网中的IP地址重复

B、172.16到172.31:局域网内的IP地址

C、10.*:局域网内的IP地址

其余的都是公网IP。【局域网IP上面搭建的云服务器,外网是无法访问的,在公网IP上搭建云服务器,外网可以访问。】

那么,我们的网络都是什么样的结构呢?如下:

(1)星型网络结构

【这里所说的上网,指的是上“外网(国内的网即可)”,也就是Internet】【上网其实就是运营商分配给我们的一个独一无二的IP地址(“外网IP”)】【局域网内部的电脑要访问外网,数据会经过路由器设备,路由器会把IP数据报中的源IP,进行替换,替换为路由器的WAN口IP。所以被访问的网页看到的IP地址是路由器的IP。被访问的网页返回信息时,先返回到路由器上,路由器决定把返回的数据给局域网中的那一个客户端。NAT设备对数据进行替换,并且在被访问的网页返回信息的时候,把返回的数据按照同样的规则进行替换。】

2‘、如何解决几个房间中,有的房间wifi信号弱的情况?【路由器的级联:卧室路由器的WAN口对应运营商路由器的LAN口,卧室路由器的LAN口连接客厅路由器的WAN口,客厅路由器的LAN口连接着电视。【通过电视访问“爱奇艺”时,电视给“爱奇艺”发送一个IP数据报,目的IP就是“爱奇艺”的IP,源IP就是“电视的IP”,数据报经过客厅路由器NAT设备进行IP地址替换,把电视的IP替换为客厅路由器的WAN口IP,再将数据发送到卧室路由器上,进行NAT替换,把源IP替换为卧室路由器的WAN口IP。再将数据报发送给运营商路由器,进行NAT的替换。


A、在192.168.1.2这台设备上,在局域网之外,能否访问这个服务器?【能够访问到的只能是局域网内部的设备,局域网之外的设备是不能访问的。】

B、如果卧室路由器坏了,那么整个整个卧室路由器下面控制的设备都不能访问了;如果运营商路由器坏了,那么就大范围不能上网(运营商路由器存在备份冗余,防止出现这种情况)。

真实的网络拓扑存在很多的冗余,路径很多,某几条出错,不会影响整个网络。

四、路由选择:

路由:找出一条通往终点的路线。路由的过程是“一跳一跳”的过程。【(1)必须知道相连的主机(2)应该往哪个方向走】

1、路由表:

(1)路由表是什么样的?

查看路由表的指令:

route

查看主机上的路由表,查到的数据是有限的,应该查看路由器上的路由表

路由器上的路由表

列:目的IP,子网掩码,默认网关,跳跃数,设备接口(数据报是从WAN口出,还是从LAN口出)

行:表项:什么样的IP应该走什么样的接口(数据IP与哪个口匹配,就从哪个口出去).。全0的IP地址表示默认表项,若是前面的若干条都不匹配,就会匹配默认的表项。

(2)路由表的查询过程:路由器收到数据会包含IP协议的报头,IP协议报头包含了源IP和目的IP(目标),用目的IP和路由表项中的每一项的子网掩码依次进行计算,进行按位与操作,得到网络号,比较得到的网络号和表项是否匹配,如果匹配,则命中这条路由表,从对应的网络接口输出。(如果数据都没有命中,请求的IP地址是一个外网IP,走default(默认选项)即全0的IP(不同的设备表现形式不同)【下一跳对应的网络接口对应的设备是当前设备的上一级路由器(defalt往往表示的是上一级的路由器))

常见路由器的生成办法:



猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/80702957