TCP/TP协议篇:IP协议

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
615
文章
12
评论
2017年11月12日15:13:09 评论

一、概述

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 首部校验和

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

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

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

tcpdump的基本用法

参考:(/linux/linux-maintenance/quick-guide-of-tcpdump-html.html) 一、基本用法 最简单的用法就是直接输入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: