【网络篇】详解TCP/IP协议(下)(IP协议、数据链路层协议)

本文深入解析了TCP/IP协议中的IP协议,包括首部字段解释、IP地址管理以及解决IP地址不足的方法,如动态分配IP、NAT机制和IPv6。同时,介绍了数据链路层的重点协议,如以太网帧格式、MAC地址、MTU对IP、TCP和UDP的影响,以及ARP协议的工作流程。
摘要由CSDN通过智能技术生成

上篇文章中我们详解了TCP/IP协议中的传输层协议详解TCP协议,这篇文章我们来看看TCP/IP协议中的网络层协议IP协议和数据链路层的重点协议。

一、IP协议

在这里插入图片描述

首部字段含义:

  1. 4位版本号:表示IP协议的版本,目前主流使用IPv4和IPv6,本文主要说明IPv4。

  2. 4位头部长度:IP协议首部长度,单位32bit(4字节),此字段也指示了IP数据包的起始位置,最小值5,最大值15,因此IP头部长度是20~60字节。

  3. 8位服务类型(Type Of Services):用于指定IP数据报传输的等级、重要性、时延等特性。

  4. 16位总长度:IP数据报总长度,包括首部+数据,单位:字节,最大表示:65535。那么IP协议是否也像UDP协议那样存在数据长度限制的问题呢?答案是否定的,实际上,IP协议内置了分包组包的功能,如果一个数据太长了,IP协议就会自动的拆成多个数据报,然后进行传输,然后接收方会重新进行组包。

  5. 16位标识:唯一的标识主机发送的报文,如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。

  6. 3位标志字段:第一位保留,第二个位置为1标识禁止分片,这时候报文长度如果超过MTU,IP模板就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为1,其他是0,为1的话就说明报文结束了,是一个结束标志。

  7. 13位分片偏移:是分片相对于原始IP报文开始处的偏移。其实就是表示当前分片在原报文中处于哪个位置。是由发送方填充的字段,用于帮助组装IP数据报的分片。

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

  9. 8位协议类型:指的是当前的数据被接收方收到之后,分用的时候,要把载荷(payload)内容交给传输层的哪个协议。分用的时候必须保证,载荷数据内容必须和接下来的协议相匹配。
    在这里插入图片描述

  10. 16位首部校验和:使用CRC进行校验,来鉴定头部是否损坏。

  11. 32位源IP地址和目的IP地址:表示发送端IP地址和接收端IP地址。

IP协议核心功能:

  1. 地址管理:能够通过一系列的规则,把网络上的设备的地址给描述出来。
  2. 路由选择:根据当下的源地址和目的地址,规划出一条合适的路径。

二、解决IP地址不够用的问题

当下32位的IP地址,最多能表示42亿9千万的IP地址,在现在这个移动互联网的时代,这些IP地址的数目就有些不够用了。
那么就可以通过一下的方式来解决IP地址不够用的问题。

1.动态分配IP

一个设备接入网络了,就分配IP地址,没接入网络就不分配IP地址~

2.NAT机制

使用一个IP地址,来代表一批主机。
在这里插入图片描述
这些设备的IP是局域网中的IP,局域网的IP就只能在局域网内部来使用,局域网内部的IP在同一个局域网内部不能重复使用,但是两个不同的局域网可以使用重复的局域网IP。此时直接连接到广域网(外网)的路由器设备就会有一个“外网IP”。

NAT机制是当下互联网中的典型情况~~

3.IPv6

IPv6是IPv4的升级版,IPv4是使用4个字节(32位)来表示IP地址,IPv6是使用16个字节(128位)来表示IP地址的。

三、数据链路层的重点协议

数据链路层是负责相邻两个节点之间的传输。

1、认识以太网

“以太网”不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,又包含了一些物理层的内容。

2、以太网帧格式

以太网帧就是将网络层交付的数据添加报头信息后,此时的数据以帧的形式传递,以太网帧的格式如下:

在这里插入图片描述
目的地址和源地址都指的是MAC地址,每个主机对应唯一一个MAC地址,是由网卡决定的,长度是48位,所以这里的目的地址和源地址都是6个字节,也就是48个比特位。

在以太网的最后,还有一个CRC校验码,来检验数据是否异常。

在中间有一个两个字节的类型标识。这个类型字段有三种值,分别是IP、ARP、RARP。

IP:
在这里插入图片描述

如果类型码是0800,那么在数据链路层解包完成后,将该数据交给网络层的IP协议来处理该报文。

ARP:
在这里插入图片描述

如果类型码是0806,那么向上层交付的时候就交付给ARP协议,ARP协议是处于数据链路层与网络层之间的一种协议,也叫做地址解析协议,他将IP地址转换为MAC地址。

RARP:
在这里插入图片描述

RARP协议,是将MAC地址转换为IP地址的协议。

3、认识MAC地址

mac地址是数据链路层的地址,长度为6个字节,表示的范围比IPv4的地址要大很多。
IP地址是动态分配的,但是mac地址是在网卡出厂时就确定了,不能修改。

3.1 总结IP地址和MAC地址
  • IP地址描述的是路途总体的起点和终点,是给人使用的网络逻辑地址。
  • mac地址描述的是路途上每一个区间的起点和终点,是在进行路由转发时会不断变化的地址,即每一跳的起点和终点,是给网络硬件设备使用的网络物理地址。

4、认识MTU

物理层其实是存在硬性限制的,对应的数据链路层的数据帧,是有一定大小范围的,这个范围就称为MTU,最大值1500称为以太网的最大传输单元(MTU)。

4.1 MTU对IP协议的影响

在讲到IP协议的时候,提到了IP数据报的长度受数据链路层的MTU影响。数据链路层要求在网络层传过来的数据包必须在MTU范围内,以太网帧中的数据长度必须在46字节到1500字节中。也就是说在网络层添加IP协议报头信息之前,要判断此时由传输层传输过来的数据段是否超过了1480个字节(以太网帧中包括IP协议的报头信息,IP协议的报头信息为20字节),如果超过了,那么则对该数据段进行分片,所有被分片的数据的IP报头信息当中,他们的16位标识是相同的,并且报头中信息的标志字段第二位为0,第三位如果为1,代表着报文的结束。可以看看上一篇的IP协议详解

接收端在收到这里的分片数据后,根据IP报头的16为标识信息、三位标志位、13位偏移信息量进行组装。
如果分片后的数据在接收端丢失某一片,那么就组装失败。即使组装失败,网络层也不负责重新传输,因为这是传输层要做的事情。

我们发现ARP和RARP协议他们的实际数据只有28个字节,于是在它的报文后进行补位,其中PAD就是用来填充的,使ARP、RARP协议的长度达到MTU的最小字节数。

4.2 MTU对TCP协议的影响

TCP协议在传输时也受到MTU的影响。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size)。

TCP在建立连接的过程中,通信双方会进行MSS协商,双方在发送SYN与SYN+ACK时就会在选项内对MSS进行设置,在双方都得到对方的MSS值之后,选择较小的MSS的值作为最终的MSS。

MSS的值其实就是MTU减去网络层报头长度以及传输层报头长度。
在这里插入图片描述

4.3 MTU对UDP协议的影响
  • 一旦UDP携带的数据超过1472(1500-20(IP首部)-8(UDP首部)),那么在网络层就会被分成多个IP数据报。
  • 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败,那么就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

5、ARP协议

虽然是在介绍数据链路层时介绍ARP协议,但是ARP协议不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议

5.1 ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系

  • 在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的MAC地址,因为MAC地址随着在到达目的主机之前经过的中间主机的变化而变化,但是目的IP地址是一直知道且不变的,所以需要通过ARP协议来获得目的主机的MAC地址。
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接受到的数据包的MAC地址与本机的不一致,直接丢弃。

因此在通信之前必须获得目的主机的MAC地址。

主机在最初的联网阶段,就会进行一个“mac学习”的操作,就会把它和相邻的设备的ip和mac的对应关系给维护起来,内部建立一个类似于哈希表这样的结构(key:ip,value:mac)。

5.2 ARP协议的工作流程

在这里插入图片描述

  • 进行ARP寻址时,现在本地ARP缓存表中找,若找到,直接返回MAC地址;
  • 若未找到,则询问“IP地址为xxx的主机的硬件地址是多少?”,并将这个请求广播到本地网段。
  • 目的主机接收到广播的ARP请求,发现其IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的MAC地址填写在应答包中。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值