一文带你看懂TCP/IP协议 (更新中 现更新至网络层部分)

相信大家在编程的学习或应用中,对网络编程都有一定的需求。我们都知道http/https属于TCP/IP协议,也都用到过get,post等方法,但是想要真正的了解这些东西的原理。我认为TCP/IP协议还是很有必要了解一下的。

TCP/IP协议详解

在这里插入图片描述

序言

随着计算机技术与网络技术的不断发展与完善。人们对网络的依赖度越来越高,网络也不断满足着人们对未知世界的渴望与对物质世界的探寻。其实TCP/IP协议在其中就发挥了很大的作用,比如当你在跟远方的朋友写电子邮件,:SMTP - 简单邮件传输协议,它会将邮件上传到SMTP服务器,然后在通过一台或几台服务器的中转送到目标机器上。使用 IMAP 连接到邮件服务器。POP 协议被邮件程序用来取回邮件服务器上面的邮件。当你浏览网页时边会用到http协议,当你在网页浏览中输入敏感信息时,https协议也会成为你的帮手,而这些协议都属于TCP/IP协议。

1.1.1什么是网络协议

网络协议是计算机网络中进行数据交换而建立的规则,标准或者约定的集合。有了这个规范,在数据交换中接收方与发送方便可以遵循相同的协议而进行交换。可以说网络协议使得可上网的设备能够相互交换信息。TCP/IP协议就是一种很常见的网络协议,Internet上的计算机使用该协议。

1.2.1TCP/IP协议(历史和由来不需要可跳过这一部分)

TCP/IP协议可以说是老生常谈了,它不是一个协议而是一个协议族的统称。起初,这个协议是用于保障国防军事通信的,即使被敌人攻击也可以迂回通信。后来就演变成了TCP/IP协议族。直到1983年成为了ARPANET网络中的唯一指定协议。值得一提的是几个我们常用的协议都是属于这个协议族的比如TCP,IPP,ICMP,HTTP等协议其实都属于这个协议族

1.2.2TCP/IP协议层次结构(和各层次功能笼统介绍)

在这里插入图片描述
其中TCP/IP模型的应用层对应着OSI参考模型的应用层+表示层+绘画才能,TCP/IP模型的运输层对应着OSI参考模型的运输层,TCP/IP模型的网络层对应着OSI模型的网络层,TCP/IP模型的网络接口层对应着OSI参考模型的数据链路层和物理层。
TCP/IP协议中的应用层为应用程序提供服务并规定通信细节,传输层就是两台主机间的通信。网际层让数据能够在具有不同的结构的子网之间传递,自动寻找地址和路由选择并且会选择最佳路径。网络访问层提供了与物理网络连接的接口。

1.3.1详细介绍网络接口(访问“whatever你明白就行”)层

TCP/IP协议中我们的网络接口层是对应物理层和数据链路层的,那么我们就通过分析物理层与数据链路层来学习网络接口层。

我们的学习采用1.先介绍一下这两个层然后2.引入网络体系3.然后融合在一起讲解,毕竟协议在网络体系下才能体现它的价值,不然真的是纸上谈兵一样。相信能对你有所帮助。因为我也是看了很多TCP/IP介绍的博文了,但是真的很多都知识单纯的讲解各个层和工作原理,没有引入到网络体系中,我认为这是对学习者不友好的。

物理层是整个开放系统的基础也是OSI模型的第一层层,它的作用是提供数据通路和可靠环境。这样说来比较抽象我们把它具象化,对计算机来说网络适配器就对应物理层。根据网络适配器我们还可以分成两类,第一类是网络适配器比如网卡,第二类是虚拟网络适配器,如宽带拨号连接。(这个地方不理解的可以看一下我的另一篇博客介绍了关于网络的硬件)

https://blog.csdn.net/weixin_45950372/article/details/104628707

数据链路层,数据链路层是OSI模型的第二层,它在物理层和网络层之间起了承接的作用,数据传输的起始位置就是由它定义的并且通过一些规则来为数据传输提供保障。因为它既可以定义起始位置又可以对数据传输提供保证所以它也经常被划分为两个子层。分别如下:

  • 介质访问控制(MAC Media Access Control):提供了跟网络适配器(对计算机来说你可以理解为物理层)的接口。它还有一个大家都知道名字叫MAC,我们经常会说到MAC地址,也就是说的网卡出厂的时候被厂家固化的硬件地址,除了MAC地址还有一个叫做MAC驱动的东西,它是网络适配器的驱动程序。||这之前为介质访问控制部分后面为对MAC地址的展开和一些网络相关的内容。 Mac地址确实是有东西可说的,一会我们还会再详细的介绍MAC地址。MAC地址这个东西是可以被我们用来探知很多消息的,像是IP地址,主机名…都是可以通过一些网络工具通过Mac地址查出来的。一谈到网络很多人会想到网络渗透哈,其实网络渗透的洪水攻击也是与我们的MAC地址和以太帧有关的。另外也不要以为不让别人看自己的电脑别人就没法知道你的Mac地址,其实只需要和对方在同一局域网就可以通过一些工具查到对方的Mac地址进而查出IP,主机名,title。
    (洪水攻击原理这两句不想看可以不看)通过伪造大量的以太网数据包,填满交换机的存储表,使其无法添加新的Mac地址导致交换机不能对新机器查找对应的端口,只能广播转发给所有端口。然后所有的主机就都接收到该数据帧了。
    洪水攻击
  • 逻辑链路控制(LLC Logical Link Control):它对经过子网传递的帧进行错误检查,并且管理自网上通信设备之间的链路。

在网络体系中介绍网络接口层

脱离了网络的通信协议就没啥意义了…所以我们要综合网络体系来具体的展开网络接口层的知识。

没有网络体系的物理层,就是没有灵魂的物理层。                                                                                                                 —尼古拉斯*赵四

网络体系定义了物理网络的构成,和对应的通信协议。{举个例子有线网络(比如用双绞线上网的)和无线网络(比如无线网卡上网的.)}网络体系可以分成网络构成和通信方式两大方面,这两大方面又可以分成四个方面。

  • 数据帧格式:定义了数据传输的格式。

  • 访问方法:定义了计算机使用传输介质(比如双绞线,光纤就属于传输介质)的规则。

  • 布线类型:定义了网络适配器和其他网络设备的连接方式。

  • 布线规则: 定义网络适配器和网络设备连接规范。比如接口类型。
    由于我们生活中对网络接口设备(比如:双绞线,光纤,无线网卡,有线网卡)的需求不一样,所以出现了数据传输过程中使用不同的终端设备的情况,在物理层中识别的网络接口设备当然也是不同的,所以网络体系又可以分为四大类型(前面是功能的四大方面这个是本身的四大类型):
    。。。

  • IEEE 802.3(以太网):大多数家庭啊还有很多企业都用的这个,其实就是基于线缆的网络。(比如双绞线,光纤)

  • IEEE 802.11(无线网络) 普遍应用于很多公共场合,商铺,家庭,企业的无线网络技术.比如WIFI相信大家都很熟悉就不介绍了

  • IEEE 802.16(WiMAX) 用于移动通信长距离无线连接技术,它是一项无线城域网(WMAN)技术,是针对微波和毫米波频段提出的一种新的空中接口标准。

  • 点到点协议(PPP) 用Modem通过电话线进行连接的技术,比如我们经常能在网络上看到的拨号连接。点到点协议PPP是一个被广泛使用的广域网协议,跨过同步和异步电路实现路由器到路由器(router-to-router)和主机到网络(host-to-network)的点到点连接。PPP协议提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。它包含三个协议,有兴趣的朋友可以自己去看看。

综合网络体系与网络接口层

讲到这里,大家应该是对网络体系有一定的概念了,那么我们就把之前讲的网络接口层的知识融入进去,你应该可以更好的理解网络体系下的网络接口层,下面我们在开始讨论物理地址(MAC地址),物理地址其实就是用来标记网络中的设备的标识符,我感觉着可以这么给你举一个不太恰当的例子,假如你现在是一个数据包在一个叫“中国”的局域网,你想从一个叫“郑州”的计算机用一种叫做飞机的通讯运输方式去往一台名字叫“北京“的计算机当然 你还获得了一个记载了这两台计算机名字(特征)的机票。那么郑州与北京其实就分别是发送方的物理地址和接收方的物理地址。而你作为一个数据包想要传输过去就需要机票,机票其实就指的是这双方的物理地址。理解了这个以后,我们来总结一下物理地址的特点Tips 物理地址就是MAC地址
1.通信双方的
物理地址应在同一局域网中。
2,物理地址是用来标记网络中的设备的。
3.传输的数据包都会包含发送方和接收方的物理地址
4.物理地址(MAC地址)具有唯一性,只有这样才能把数据包发送出去,也因此MAC地址都是有生产厂家生产时固化的网络硬件是硬件预留的地址。
下面咱们来讲一下MAC地址的格式,因为MAC地址都是要按照一定规则制造的,所以MAC地址也拥有自己的格式,它采用
十六进制数表示,六个字节(48位(长度自然是48bit)
整个地址可以看做两段,第一段是前24位。第二段是后24位。 分成了两段意义自然是不同的。

  • 前24位成为组织唯一标识符(OUI ,Organizationally Unique Identifier) 是由IEEE注册管理机构分配给不同厂家的代码,是区分厂家用的
  • 后24位就交给厂家自己分配了,称为扩展标识符 。因为MAC地址不重复所以后24位在同一个厂家一定是不一样的。(前24位为了区别厂家用自然也是不同的所以不存在两个一样的MAC地址
    进一步的学习,我们便说一说以太网,为什么要扯它呢?因为以太网实现由局域网中最常用的通信协议标准。那么我们不由的对网络设备之间的连接与数据传输方法产生了疑问,因为我们现在只知道接收发送双方的信息其它具体的过程并不清楚。下面我们继续学习把这个知识学透打败HR,介绍一下以太网连接。首先我们需要了解一下拓扑结构传输介质这些与硬件相关的概念和以太网的工作机制,它为什么可以有这样的功能?
    1. 拓扑结构
    在计算机网络的拓扑结构中我们延续了拓扑学中研究与大小,形状无关的点线关系的方法,我们将网络中的计算机跟通信设备看成点,把 传输的介质(像是什么双绞线,光纤,电话线)抽象为一条线。那么我们就会得到一个点和线组成的图形,我们就称之为拓扑结构。以太网的结构中主要可以分成总线型星型两类。
    在这里插入图片描述
    总线型:所有计算机通过一条同轴电缆进行连接。
    在这里插入图片描述
    2.星型: 所有计算机都连接到一个中央网络设备上。
2.传输介质

无论是什么样的拓扑结构,计算机与通信设备之间都需要传输介质。所以传输介质值得一提。以太网采用了多种连接介质,比如:双绞线(网线),光纤,还有咱刚才在总线型里提过的同轴电缆。这几个里面啊,双绞线 只要是用于主机到集线器或者交换机的连接,光纤用于交换机到路由器点对点的点链路或者交换机之间的级联。至于同轴缆就有一段历史了,基本要退出历史舞台。不多介绍了。

3.工作机制

有了拓扑结构(连线方法),和传输介质(线)。那么现在数据就可以借助传输介质传输了。作为一种广播网络,以太网采用附加冲突检测载波侦听多路访问机制CSMA/CD)。既然是广播网站所以网中的所有节点自然都可以看到网络中发送的所有消息。通过CSMA/CD,所有计算机都可以见识传输介质的状态。并且在传输之前等待线路空闲、如果有两个计算机同时都要发送数据,那就会产生冲突,结果是计算机会等待一个时间间隔然后再重新尝试发送
下面我们来解释一下以太网中的以太主机传输数据时的工作流程
1.监听通道上是否有信号在传输,如果有的话,那么信道处于忙状态,那就只能继续帧听,直到进行中的运输结束信道空闲为止。
2.如果没有监听到信号,那自然开始传输数据。
3.传输数据的时候还要继续监听。如果有了冲突,那就要执行以太网的退避算法,等一个时间间隔,然后重新从第一步开始。也就是说,有冲突产生的话涉及冲突的计算机就要返回到最初的监听信道的状态。没有冲突产生,那自然是发送成功了。

那么关于这一块的知识呢,我觉得还有一点得讲那就是以太帧。

以太帧就是在以太网链路中传送的数据包网络访问层的软件必须要把数据转换成能够通过网络适配器硬件进行传输的格式。那么这个转换的工作机制与具体结构是什么呢?我们再来学透彻,弄清楚这最后一点就透彻很多了。
1.工作机制

1.以太网软件从网络层接收到数据报
2.按照以太网帧数据段的要求把网际层数据分成较小的块。以太网帧整体大小必须在64~1518字节之间(前导码不算)。
3.把数据帧传递给物理层的底层组件,然后这些组件把转换为能通过传输介质的比特流
4.以太网上的其他设备接受到了这个帧,然后检查其中的目的地址(接收方的物理地址),如果目的地址跟网络适配器地址匹配,那适配器就会接收到其中的帧,并且把数据传递给协议栈中更高的层。
以太帧结构
在这里插入图片描述
以太帧结构的开头由同步码帧开始定界符两部分组成,紧随其后的是以太网报头,用MAC地址代表目的地址和原地址(飞机票记得吗?就是那个比喻。)帧的中间是帧负载的包含其他协议报头的数据包,比如IP协议。以太帧的结尾是一个32位荣誉校验码作用是检验数据传输是否出现了损坏,图片结构如上…上面的好像不是很清楚我再补一张在下面。在这里插入图片描述

  • 前同步码:使接收端的适配器接收MAC帧时能够迅速调整时钟频率,使二者(与发送端)频率相同。有7个字节,1和0交替排列
  • 帧开始定界符:正如其名,帧的起始符一个字节长度。前六位是1和0交替,最后两个为连续的1用来告知接收端的适配器要开始接收帧信息了。
  • 目的地址: 接收端的(物理地址或者叫MAC地址),六个字节。作用是检测这个帧的目的地址是否与适配器物理地址相同。如果一致那就说明是送到了自然开始下一步处理,如果不是,那就直接丢弃。
  • 原地址: 发送端的网络适配器的MAC地址,6个字节
  • 类型:上层协议的类型,因为协议是很多的,所以处理数据的时候要标识交给哪个协议处理。
  • 数据:有标识交付给上层的数据,以太网帧数据最小长度46字节最大1500字节,不满46字节自动补充到最小长度。
  • 帧检验序列FSC:检测该帧是否出错,4个字节长度。发送方计算帧的循环冗余码校验的值然后写到帧里,接收方接受的时候也算一次再跟发送端写到帧里的正确值比较,如果不一样肯定出现了问题,就要重新传输这一个帧。其实很好理解,就相当于对方给你寄邮件包裹里放了500块然后弄了张纸片写上500元,到你手里你一看纸片上写的500包裹里就400那肯定是出了问题了,就是这么个原理。

在这里插入图片描述

网络层

写在前面; 关键字IP协议有关知识 ,ARP ,ICMP。其中对IP协议的讲解是这一部分的重点内容。

网络层与IP协议介绍

在这里插入图片描述
网络层在TCP/IP参考模型的第二层,它对应OSI参考模型的网络层。它可以提供独立于硬件的逻辑寻址IP),这就可以实现数据在不同物理结构的子网里相互传递。这种传递方法的根本呢是基于IP协议提供IP地址实现的(请区别于上文讲的MAC地址)。所以呢,我们先从IP说起。

IP地址

简介

讲到IP协议,IP地址(Internet Protocol Address是不可不聊的。IP地址不同于MAC地址在出厂时就由厂家预先设置,IP地址是互联网协议特有的一种地址。它实际上是IP协议提供的一种统一的地址格式。它的作用是为互联网上的每一个网络与计算机(网络设备)提供一个逻辑地址逻辑地址它的作用是用来屏蔽掉物理地址的差异。

IP地址的作用

说到地址,大家想必会想到上文所写的MAC地址。那么是否会对IP地址与MAC地址的区别与不同感到好奇呢?下面我们就来讲讲为什么要有IP地址这个东西。

我们之前说到了在单个局域网网段里,计算机之间可以使用网络接口层提供的 MAC地址(物理地址),进行数据的交换。但是在这里我们强调了在局域网中。那也就是说在其他的一些网络或许利用网络接口层提供的MAC地址进行数据传输并不是那么可行。事实也正是如此,举个例子:在路由式网络中,MAC地址就难以完成跨路由接口的运行。即使完成了,使用MAC地址传输也很麻烦。或许这样说还有些抽象,那么你可以这样想,你在玩一些游戏比如红警,魔兽争霸里面会有局域网选项,这其实就是可以利用MAC地址通讯。这是因为我们的MAC地址在地址空间上并没有引入逻辑结构,它无法具备真正的像是省,市,区…等等的层次。所以我们就引入了一种具有逻辑化,层次化特征的寻址方案,也就是IP地址。

IP地址的构成

为了保障数据传输过程中的正确性,我们需要对这种寻址方案做出统一的标准/规则。以此来保证IP地址可以正确的识别主机位置。IP地址可分为两个部分,分别是网络ID和主机ID。

  • 网络ID :用于识别网络设备所在的网络,每一个物理网络仅有一个网络ID。它的位数决定了可以分配的网络数量
  • 主机ID : 每一个物理网络可能有很多的网络设备(工作站,路由器,计算机等),每一个网络设备都有一个主机ID与其对应。主机ID的位数直接决定了一个网络中最大的主机数量
IP地址的基本类别

我们已经知道,网络ID位数决定了可以分配的网络数量主机ID位数决定了网络中最大的主机数量。所以这就可以满足用户对主机数量与可分配网络数量的不同需求。为了满足这些需求,我们需要判断IP地址中:哪一个部分是网络ID,哪一个部分是主机ID。因此我们将32位地址IP地址划分为了4个8位段。又将IP地址划分为三大类以方便对IP地址的管理,每类地址的分类和具体含义如下:
在这里插入图片描述

  • A类:前8位表示网络ID,后24位表示主机ID(分配给政府机关单位

  • B类:前16位表示网络ID,后16位表示主机ID;(分配给中等规模企业)

  • C类:前24位表示网络ID,后8位表示主机ID;(可分配给任何人有需要的人
    有的读者会发现图片上明明有五类地址为什么我们说仅有三类呢?因为另外两类为隐藏地址。也就是D类和E类地址。

  • D类:不分网络ID和主机ID;该地址用于多播。

  • E类:也不区分网络ID和主机ID,此类地址用于实验。
    我们按照如上分类将IP地址进行了分类,那么如何判断一个IP地址是A类,B类还是C类呢?毕竟IP地址都是32位的数字,我们如果不做出一些标准,显然是无法对其进行区分的。我们所选用的区分方法是将每类IP地址的开头部分设置为固定数值。如: A类开头为0然后接着7(8-1)位网络号和24位主机号。B类则是开头为10,然后后接14(16-2)位网络号和16位主机号。C类开头为110,后接21(24-3)位网络号和8位主机号。(TIPS:IP地址的32位都为二进制格式显示。)
    由于每类地址的开头固定。所以每类地址都会在一定的范围内(4段8位二进制数):

  • A类:IP地址范围0.0.0.0~127.255.255.255

  • B类:IP地址范围128.0.0.0~191.255.255.255

  • C类:IP地址范围192.0.0.0~223.255.255.255

  • D类:IP地址范围224.0.0.0~239.255.255.255

  • E类:IP地址范围240.0.0.0~255.255.255.254

特殊IP地址

所谓特殊IP地址,其实是说一些具有特殊意义的不会分配给互联网主机的IP地址。这些被保留的IP地址有一部分用于私有网络,这些地址被称为私有地址,再如,保留了一部分地址用于测试的被称为保留地址。A B C 三类地址的地址范围及含义:

  • A类地址: 私有地址范围:10.0.0.0~ 10.255.255.255。保留地址范围:127.0.0.0~127.255.255.255
  • B类地址:私有地址范围为172.16.9.9~172.31.255.255.保留地址169.254.X.X
  • C类地址:私有地址范围192.168.0.0~192.168.255.255

说到这里,我觉得应该还要再提一嘴无类域间路由

如上文所说,我们将IP地址分成了ABC类,但是这会造成IP地址的部分浪费。为何这样说呢?什么叫部分浪费呢?怎么解决呢?我们之所以这样说,原因是很简单的,从之前的分类网络可以看出来,IP地址的分类是把32位的IP地址分为4段8位。这也意味着,前缀会是 8,16,24。因为这个局限性,我们可分配的最小地址块仅有256,这对于许多企业是不够用的。而我们可供分配的最大地址块有65536个,这对绝大部分企业来说太多了。这会导致IP地址无法充分使用与路由问题。例如因为需要大量小型网络,而需求许多单独路由。或因距离原因无法形成聚合路由。
所以我们需要无类域间路由(Classless Inter-Domain Routing CIDR)它可以将路由集中起来,在路由表中更灵活地定义地址。这种方法利用CIDR前缀的值划分网络ID部分和主机ID部分。使管理者可以更灵活的定义子网。CIDR标记使用“/”分隔符,后跟一个十进制数表示网络ID所占位数。

子网

数据传递的过程中通过识别网络ID发送到正确的网络。然后再通过主机ID发送到目标主机。这种情况对于小型网络来说当然便捷迅速。但是对于一些大型网络却是没有那么友好。数据在找到对应网络后需要经过一段时间来确认目标主机,为了解决这一问题,我们需要将网络变小也就是进行子网的划分。
子网划分 其实是将主机ID划分为了子网ID+主机ID。子网ID顾名思义是用来寻找子网,主机ID则是在子网中确认主机。为了区分子网ID与主机ID,我们需要子网掩码,子网掩码指明了地址中多少位用于子网ID多少用于主机ID

下面我们进入网络层的灵魂部分,IP协议,从中你将了解到IP协议是什么及其运作方式(其实在讲子网,IP地址这一块的时候应该就已经有点感觉了),与IP协议包的结构,同时学习完这一部分你也会对我们之前提到的洪水攻击有一个更好的概念。

IP协议

IP协议是一种寻址系统。通过他可以在复杂的网络间传递数据,同时也可以将多个交换网络连接起来,在本机与目的地址间传递数据。当然他也可以对数据重新组装来适应不同网络对数据包大小的要求。

两点多了明早八点还有课…本周日之前必定更新完毕这一层QAQ。还没更新完 就不好意思找各位要赞了。嘿嘿但是收藏一下还是可以的哦。 (*・ω< )

在这里插入图片描述

回来了!鸽了半个月 嘿嘿 回来继续更新 咳咳~ 我们来继续聊IP协议工作的方式 跟IP数据包 把IP协议结束掉

IP协议工作方法

在路由式网络中,IP协议在同网段不同网段的工作方式是不一样的。具体如下

1. 同网段

如果与目标主机在同一网段,那么目标主机的IP地址会被ARP协议(不知道ARP协议是什么也没事 咱们聊完IP就聊ARP)解析为MAC地址,然后再根据MAC地址将数据包发送。

2. 不同网段

不在同一网段 ,数据包如此发送:

  • 首先用ARP协议将网关(通常就是路由器)的IP地址解析为MAC地址,然后再根据解析出的MAC地址 ,主机将数据包发送到网关。
  • 网关根据数据包里的网段ID找到对应目标网络,若成功,则将数据包传送到目标网段;若未成功,则重复上一步将数据发送到网关。
  • 数据包被发到正确的网段中后,ARP协议将目标IP地址解析为MAC地址,根据MAC地址,数据包最终被传递到目标主机。

IP协议包结构

在这里插入图片描述
当使用IP协议传输数据时,传输数据的包就被称为IP数据包,它又规定的几部分组成。

这个部分 到处都有介绍 我就给各位 百度上粘贴一段介绍好了 不详细的地方 我再补充下。毕竟这种规定的东西 也没啥好解释的…嘿嘿 偷个懒
固定部分:
(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,还处于草案阶段。
(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但只有2位有意义。
● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255。
(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
(11)源地址 占32位。
(12)目的地址 占32位。
可变部分
IP首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。这些任选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(让每个路由器都记下它的IP地址)
(3)时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
(4)宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)
(5)严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址) [1]
-----来自百度百科

简介 洪水攻击

当我们用IP协议传输IP数据宝石,首先需要判断这个数据包的大小是否大于网络接口的最大传输单元值(MTU)。如果大于,我们就要将数据包分片。而洪水攻击呢也就是在中间发送大量无效的IP分片包。使得目标机在收到分片包后,重组成报文过程中有大量无效IP分片包干扰。如果对IP分片攻击感兴趣可以看看这个人的博客。

https://blog.csdn.net/neubuffer/article/details/16900875

我们会在接下来介绍 ARP协议 和ICMP协议 然后开启传输层知识各位晚安,祝各位技术越来越好加油!! ٩(๑❛ᴗ❛๑)۶在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章