TCP/TP协议篇:IP协议

马谦马谦马谦 2017年11月12日15:13:09 发表评论
文章最后编辑于:2017-11-18 17:37:46

一、概述

IPTCP/IP协议族中的核心协议,所有TCP UDP ICMP以及IGMP 数据都要通过IP 协议来传输。

IP 是一种无连接协议,不负责维护网络连接中的任何连接状态,提供尽力而为 的服务,即不保证数据能成功到达,位于网络层。

二、IPv4数据报

2.1 IP数据报格式

TCP/TP协议篇:IP协议

2.2 头部解析

  • 版本字段:占四位,声明当前协议是IPv4 还是IPv6 ,也会有其他的协议,只有这两个是常用。
  • IHL字段:头部长度(Internet head length),说明当前数据报文头部的数据长度,单位是4字节,包括选项字段的长度。由于头部长度只有4位,所以IPv4 报文头部最多为(2^4-1)*4=60个 字节。
  • 服务类型字段:
    1. 优先级子字段:3位,用户控制网络优先权。
    2. D子字段:更低的延时服务。
    3. T子字段:更高的吞吐率服务。
    4. R子字段:更高的可靠性服务。
    5. C子字段:选择代价更低的路由服务服务类型字段。
  • 总长度:整个IP数据报的长度,包含首部和数据部分。长度共16位,因此总长度最长为2^16=65535个字节,实际中一般不会超过1500 字节,大多被限制在576 字节。
  • 标识:当前数据包的标识,由于长度的限制,数据包通常会被分为多个不同的数据片分别发送,标识位用于标识当前片所属的数据报。
  • 标志:三位,目前只有最后两位有意义。最低位记为MF,次地位记为DF,其中DF表示是否分片了,MF表示是否为最后一片。
  • 片偏移:本片在数据报中的偏移,以8字节为单位,标志每个数据片的序号。
  • 生存时间TTL:最早表示数据包在网络传输的最大时长,后期被修改为经过的路由跳数,每经过一个路由,跳数减一,一旦TTL为零则丢弃该数据包。
  • 协议:指明上层协议,TCP为6,UDP为17。
  • 校验和:使用二进制反码加法对首部进行求和
  • 源IP和目的IP:表名源目主机地址
  • 选项:用于网络测试、排错等
  • 数据字段:上层协议数据

2.3 数据长度和数据分片

IP数据传输的关键问题是对数据包的分片和重装,分片是为了适应物理网络的最大传输单元MTU,MTU由物理硬件决定。分片后的总长度指的是分片后的首部和数据的长度之和。

假设一个数据包为4820个字节,其中固定首部为20字节,数据部分为4800字节,网络最大传输长度为1420字节,数据分片为:

TCP/TP协议篇:IP协议

 

2.4 首部校验和

本文共执行44次查询,耗时0.294秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: