TCP/IP协议簇之IP协议

Posted 各种西瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP协议簇之IP协议相关的知识,希望对你有一定的参考价值。

TCP/IP协议族之IP协议

你们一个要为爱人杀我,一个要为妻子杀我,一个更要为天下人杀我!那好,今天老夫就让你们见识见识什么是真正的上乘武功。

1.OSI参考模型和TCP/IP协议参考分层模型

作为一位开发人员,我想大家对着这两种网络协议应该都有所了解,如果不知道请自行百度。我们没有必要真正的去真正的记住这两个模型中每一层的作用,因为记住了也没什么用。但是我想我们应知道为什么会这样搞分层。我想我们可以从宏观世界去理解这个事情(这是一个哲学问题,任何的微观现象在宏观世界都会有所体现),现在我们把网络协议比作一个物流系统,这不能理解,因为网络协议的作用实际上就是为了端到端的通信所用。那么一个物流公司为了高效的管理企业一定会设置很多的职能不同的部门和上下级关系,一定不会说顺丰的老板亲自去送快递,但是这样做也有一定的弊端那就是太复杂了,部门越多越难管理。正所谓有无相生,那么网络协议分层设计道理亦是如此。实际上OSI参考模型是一个标准,所有的网络协议都必须按照这个标准去做,但是由于它太复杂,所以TCP/IP协议模型实现了它的所有功能但是并有按照它去划分层次,所以我们主要了解的就是TCP/IP协议模型。

2.网络接口层

3.网络层

4.IP协议

4.1 IP协议的功能


  • 提供不可靠的,无连接的数据传送服务:无连接即通信双方不会建立会话,假如你要向你女朋友邮递一件生日礼物,你为了给她一个惊喜你一定不会通知她而是直接邮给她。快递员会尽最大努力将快递送到,但是有可能丢了,这就是不可靠。


  • 数据报的分片和重组:当数据报较大的时候,无法一次性发送,就需要对数据报进行分片传输,到了目标主机之后再进行重组。

注:实际上在真正的网络环境当中情景要远比我们想象的复杂的多,这是只是简单的对IP协议的功能做了一个描述。

5.IP数据报格式

TCP/IP协议簇之IP协议

IP数据报分为首部和数据两个部分,首部又分为占20个字节的固定部分和最大长度为40个字节的可变部分。为了避免太抽象,我们使用WireShark抓一个包,来详细说明IP协议的数据报首部的格式。

  • 版本:占4位(比特),二进制0100代表版本是IPV4,0110代表IPV6。


  • 首部长度:占4位(比特),0101代表首都长度为5个单位,每个单位4个byte(字节)。最大长度为15个单位(1111)。


  • 服务类型:占8位,前3bit表示数据传输的优先级,Delay=1=延迟小,Throughput=1=吞吐量大,Reliability=1=质量比较高,Cost=1=最小代价!同一时刻只能有一位是1,最后一位为0,没有被使用。但是在我们抓的包中服务类型已经被差分服务替代了,但是他们的思想是类似的。


  • 总长度:占16位,最大长度为2^16-1=65355个字节。


  • 标识:占16位,是一个计数器用来标识数据的类型,类似于一个身份证明。


  • 标志:占3位,表示数据之后是否还存在分片,第一位为保留位没有被使用,第二位N=1代表后面没有分片,第三位M=1代表后面还有分片,同一时刻只能有一位为1。


  • 片偏移:每个数据片不同时传输,标志着谋片在原分组中的相对偏移位置,以8字节为偏移单位。


注:例如我们要运输一大批水果,一辆卡车没有办法装的下就需要分开装,这个时候就得知道哪一辆车运输的是什么(标时),这辆车运完后还有没有下一辆车(标志),有的话下一辆车什么时候发(片偏移)。

  • 生存时间(TTL):占8位,TTLl是为了防止数据报发送在路由器中出现环路,因为数据报在传送的过程中要占用一定的带宽,使用“跳数“作为TTL的单位。数据报每经历一个路由器时对应的TTL值就会减1,当TTL值为0时,数据报文将被丢弃。


  • 协议:占8位,表示IP协议的上层协议是何种协议,以便目标主机使用相应的协议处理数据报。


  • 首部校验和:占16位,检验IP数据报头部是否被破坏、被篡改和丢失等,不包含数据部分。




以上是关于TCP/IP协议簇之IP协议的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP协议簇之网络层

TCP/IP协议簇之数据链路层

TCP/IP协议簇之数据链路层

TCP/IP协议簇之传输层

TCP/IP协议簇之传输层

TCP/IP协议簇之应用层