IP协议报字段

IP数据报

在TCP/IP协议中, 使用IP协议传输数据的包称为IP数据包
TCP和IP的区别
TCP: 传输控制层协议, 位于传输层, 它是一种有连接、可靠、面向字节流、基于IP的传输层协议
IP: 因特网协议, 位于网络层, 它是一种无连接、不可靠、IP协议规定了数据传输时的基本单元和格式

IP数据报由首部和数据部分组成, 首部的前一部分是固定的, 共20字节, 然后还有一部分是可选字段, 它的长度是可选的

IP数据报头字段

在这里插入图片描述版本: 表示IP协议的版本, 如目前广泛使用的IPV4, 在通讯的时候, 双方的IP协议必须是一样的

首部长度: 占用4字节, 所以最大是为15(1111), 值为1标识的是1个4字节也就是32位字的长度, 所以最大长度为15*4=60字节长度, 因为固定部分长度为20字节, 所以这个值最小为5。如果可选字段的长度不是4字节的数据, 就用尾部的填充部分来填充

区分服务: 用来获取更好的服务, 一般情况下不适用

总长度: 首部长度和数据长度, 总长度为16位, 数据报的最大长度为2^16-1=65535

标识: 用来标识数据报, 占16位, IP协议在存储器中维持一个计数器。没产生一个数据报, 计数器就加1, 并将此值赋给标识字段。当数据报的长度超过网络的MTU时, 需要进行分片, 而分片后的报文都赋相同的计数器的值(标识值)。具有相同标识字段值的分片报文最终重新组成原来的数据报。

标志: 占3位, 第一位值为0不使用, 第二位称为DF, 表示是否允许分片, 0表示允许, 1表示不允许。第三位MF, 表示是否还有分片正在传输, 设置为0表示没有更多分片需要发送或者数据报没有分片

片偏移: 占13位, 数据报被分片之后, 片偏移标记该分片在原报文中的相对位置, 片偏移以8个字节为偏移单位, 也就是说, 除了最后一位分片, 其他分片的偏移值都是8字节的整数倍。

生存时间(TTL): 它主要是为了防止数据报在互联网中循环传送, 每经过一个三层设备(路由器), 该值会减一, 当该值为0时则丢弃该数据报

协议: 表示该数据报文所携带的数据所使用的协议类型,占 8 位。例如ICMP协议号为1、TCP协议号为6、UDP协议号为17

首部校验和: 用于校验数据报的首部, 占16位, 数据报每经过一个路由器都要重新计算校验和, 因此校验和不包括数据部分可以减少计算工作量

源地址: 发送数据的IP地址, 占32位

目的地址: 接收数据的IP地址, 占32位

可选字段: 该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。

### TCP/IP协议字段详解 #### IP 数据格式解析 IP数据是互联网上传输的数据单元。IPv4头部固定部分有20字节,可选部分长度不定。 - **版本 (Version)**:占4位,指明IP协议的版本号,对于IPv4来说该值为4[^3]。 - **首部长度 (IHL, Internet Header Length)**:占4位,表示IP头的长度,单位为32比特边界。最小值为5(即20字节),最大值为15(即60字节)。 - **服务类型 (Type of Service, ToS)/区分服务(DiffServ)**:8位,用于指定服务质量参数,如优先级、吞吐量等特性。 - **总长度(Total Length)**:16位,代表整个IP数据的长度(包括头部和数据区),其度量单位是最小传送单元——字节。因此理论上最大的IP包大小可达65535字节。 - **标识(Identification)**:16位,在分片重组过程中用来识别属于同一原始数据文的不同片段。 - **标志(Flags)**:3位,主要用于控制或指示特殊处理情况,比如是否允许分片以及此段是不是最后一段。 - **片偏移(Fragment Offset)**:13位,指出较长的分组被分割后的每一片在网络层应如何重装回原来位置的信息。 - **生存时间(Time to Live, TTL)**:8位,限制了数据可以在Internet上经历的最大网关数,每当它通过一个路由器时减去1;当TTL达到零,则丢弃这个数据并发送ICMP消息通知源主机。 - **协议(Protocol)**:8位,表明高层所使用的协议种类,例如TCP对应的是6,UDP则是17等等。 - **头部校验和(Header Checksum)**:16位,仅对IP头部进行计算得到的一个简单错误检测机制,不覆盖任何有效载荷内容。 - **源地址(Source Address)**:32位,记录着发送端设备的逻辑地址信息。 - **目标地址(Destination Address)**:同样也是32位,指向接收者所在的位置或者多播/广播群体成员之一。 - **选项(Options)**:如果存在的话会紧随上述必填项之后出现,提供额外的功能支持,像严格路由选择、宽松路由选择等功能都可通过这里实现。这部分是非必需存在的,并且它的实际尺寸取决于具体配置需求。 #### TCP 文段结构分析 TCP作为一种面向连接可靠的传输层协议,具有更为复杂的文格式: - **源端口(Source Port)** 和 **目的端口(Destination Port)** 各占用16位空间,分别标明发起请求的应用程序和服务进程的身份编号。 - **序列号(Sequence Number)** 及 **确认号(Acknowledgment Number)** 均采用32位编码方式,前者用以追踪当前发送出去的数据流中的每一个八位组的确切次序;后者则告知对方自己期望收到下一个字节的索引值。 - **数据偏移(Data Offset)** 或称为“头长度”,同IP里的IHL相似,不过这里的计量基准变成了四字节而非三十二比特宽度。 - **保留域(Reserved Field)** 设计之初预留了一些未分配用途的空间,目前全置为0,未来可能扩展新功能。 - **控制位(Control Bits/C Flags)** 是一组六个标记位,它们分别是URG、ACK、PSH、RST、SYN与FIN,各自承担不同的操作指令传递职责。 - URG=1 表示紧急指针字段有效; - ACK=1 则意味着确认号码字段含有意义; - PSH=1 提醒接收方尽快把缓冲区内待处理的数据提交给应用层; - RST=1 通常是在异常情况下强制断开连接的表现形式; - SYN=1 发起同步建立新的通信链路过程; - FIN=1 请求终止现有对话关系。 - **窗口(Window Size)** 字段占据16位,向另一侧传达本地可用缓存容量大小以便调整流量速率防止拥塞现象发生。 - **检验和(Checksum)** 负责验证整个TCP段(含伪头部、真实头部加上净荷)的一致性完好无损状态,确保接收到的内容准确性。 - **紧急指针(Urgent Pointer)** 当URG设置成激活模式下才生效,给出相对于序列号而言紧跟在最后一条正常消息后面第一个急需关注字符的具体定位点。 - **填充(Padding)** 若有必要会在结尾处补充若干个空闲bit使得整体能够满足特定排列组合的要求。 - **选项(Option Fields)** 类似于IP头部中提到过的附加属性设定区域,可以动态增加诸如最大文长度MSS(Maximum Segment Size)之类增强型特征描述。 综上所述,通过对这些关键组成部分的理解可以帮助更深入地掌握TCP/IP协议的工作原理及其内部运作细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT自习小空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值