TCP/TP 协议篇:IP 协议

马谦马谦马谦 TCP/IP评论1,293字数 937阅读 3 分 7 秒阅读模式

一、概述

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

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

二、 IPv4 数据报

2.1 IP 数据报格式

TCP/TP协议篇:IP协议-图片1

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

 

2.4 首部校验和

  最后更新:2017-11-18
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2017 年 11 月 12 日 15:13:09
  • 转载请务必保留本文链接:https://www.dyxmq.cn/network/tcpip/ip-protocol.html
TCP协议中的三次握手和四次挥手 TCP/IP

TCP 协议中的三次握手和四次挥手

一、三次握手 TCP 协议的三次握手和四次挥手分别表示了 TCP 连接的建立和释放过程,在整个 TCP 协议是一个很重要的内容,同时也是面试时的常见考点。 趁着找工作的劲,使用 socket+tcpdump 分析了...
Wireshark抓取以太网数据包 Wireshark

Wireshark 抓取以太网数据包

一、概述 几乎所有的数据包都是通过以太网来传输,所以使用 wireshark 抓取以太网数据包非常容易,这里我们以 DNS 数据包为例。 二、抓包 1. 准备数据 打开 wireshark,在筛选栏输入 dns,...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证