网络层IP协议

1、基本概念

在这里插入图片描述
如图,以主机B和主机C通信为例,主机B和主机C并不是直接连接的。所以主机B给主机C发送数据需要交给路由器F、路由器G、路由器H、路由器C、路由器D,最后再由路由器D将数据发送给主机C。所以这里就会面临两个问题:
1、凭什么要交给下一跳路由器的问题(路径选择的问题)。
你要将数据千里迢迢的从主机B发送给主机C,那么你为什么要将数据交给路由器F、G、H…呢,路由器G和H、E都是直连的,为什么交给H而不交给E呢?这是为什么的问题。此处需要引入一个IP地址的概念,我们暂且理解为全网内具有唯一性的IP(公网IP)。所以通过IP标识全网的唯一一台主机C,主机B未来就可以通过某种算法进行路径选择,而进行路径选择的最重要标识就是主机C的IP地址。

2、怎么把数据交给路由器F的问题。怎么办的问题。
我们要知道主机B和路由器F是一个子网,而路由器F和路由器G也是在一个子网里面的,后面同样如此。因此网络通信的本质是通过一个一个子网进行传输的。

问题1对应的是网络层(IP)的问题,问题2对应的是局域网通信的问题。而局域网通信我们在网络基础概念已经说过了,因此今天的重点在于网络层。

关于IP地址分为两类:IPV4和IPV6。
IPV4:32位地址​​,通常以点分十进制表示,例如:42.194.197.13。其中每个8位的返回是0~255,所以就是:[0,255].[0,255].[0,255].[0,255]
IPv6:​​128位地址​​,以十六进制表示,用冒号分隔(例如:2001:0db8:85a3::8a2e:0370:7334)。
IP地址能表示主机的唯一性。

我们以唐僧取西经为例,唐僧最终要去的目标是西天的大雷音寺面见佛祖,但是唐僧在到达西天之前都会跟别人说我要去西天,比如唐僧在女儿国会说我要去西天,那么我该怎么走呢?而当唐僧到了西天,唐僧就会说我要到大雷音寺,请问该怎么走呢?在我们现实生活中也是如此,今天你要从云南去北京天安门广场,那么你问别人就会说,我要去北京请问该怎么走呢?一直到你到了北京,这时候你问人就会说,我要去天安门广场,请问该怎么走呢?在这个过程中,在路上我们选择的是北京进行路由,当到了目的地我们采用的是故宫进行路由。
实际上IP地址是被分成两部分的,IP地址=目标网络+目标主机

主机:配有IP地址,也要进行路由控制的设备。
路由器:既配有IP地址,又能进行路由控制。
节点:主机和路由器的统称。上面主机B到主机C这一条路径上的主机和路由器我们都可以成为节点。


重谈TCP和IP:
在这里插入图片描述
我们的数据经过传输层,添加了传输层如TCP报头后是要继续向下层交付的,然后网络层继续封装网络层报头,数据链路层也是如此,而同层之间认为自己在和对方直接通信。
我们把传输层的报文叫做数据段、网络层叫做数据报、数据链路层叫做数据帧。

IP核心作用:把数据包跨网络转发给目标主机!
如果丢包了呢?IP不关心,这是传输层TCP的事情,TCP没有收到应答就会进行超时重传。

IP提供了一种能力,把数据从A主机跨网络转发给B主机。但是有能力就一定能做到吗?有能力只是代表着有非常大的概率做到。
假设你们学校有个能力很强的张三,张三数学有考150分的能力,但是这并不意味着他能100%考150分,可能他这次考了148,147等。那么就存在一个教学主管,教学主管说为了让张三考满分,我们每次考试如果张三没有满分,我们就成绩作废全部重考。那么这样就保证了张三每次考试一定能考满分,因为如果没有满分就会重考,直到满分位置。
上面的教学主管就是TCP,张三就是IP,通过TCP+IP:提供了一种可靠的能力,把数据从A主机跨网络转发给B主机。而重考就是TCP的超时重传机制。TCP做的是策略的问题,比如之前的超时重传、确认应答、滑动窗口、拥塞控制等。IP做的是具体的转发。它们之间结合就能提供可靠的发送数据的能力。


2、IP协议报头

在这里插入图片描述
IP报头和TCP报头很相似,前面20字节固定长度,可以携带选项,然后后面就是有效载荷了。
1、如何进行解包和封包?
首先读取固定长度20字节,然后提取出4位首部长度。这里的4位首部长度跟TCP是一样的,取值返回是0000->1111,也就是[0, 15],是有基本单位的,基本单位也是4字节,所以长度范围就是[0, 60],而IP报头固定有20字节,因此IP报头的取值范围就是[20,60]。比对4位首部长度计算的值和20字节,如果大于20字节就在将选项读取上来,如果刚好20字节就说明不携带选项。另外IP报头中还存在16位总长度,因此IP报文也可能存在多个报文粘在一起的情况,所以可以提取出16位总长度,然后减去4位首部长度,就可以将有效载荷准确的读取上来。而TCP不存在总长度,因为TCP是面向字节流的,应用层要自己解决粘包问题。
因此IP的解包就解决了,那么封包也就不是问题了。

2、如何做到分用?
IP报头中8位协议字段,传输层UDP和TCP协议在操作系统内是有协议号的,TCP的协议号6,UDP的协议号是17。因此填上8位协议号,将来进行分用的时候提取8位协议号就知道要将有效载荷交付给上层的哪个协议了。

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

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

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

16位标识、3位标志、13位片偏移到后面IP组装和分片再谈。


3、网段划分

有了目的地址是不够的!
比如今天我要从云南到北京,你想去就能去吗?这是因为从云南到北京修了路,从云南到北京的各种路段都是被设设计过的,所以你可以到北京。因此路是被设计过的。

而IP报文光有目的IP是不够的,网络也是被设计过的——子网划分。
那么网络被谁设计的呢?——网络服务提供商ISP,在我国就是三大运营商:移动、电信、联通。

在这里插入图片描述
如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值