目录
- IP数据报
-
- 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位
【java|IP协议报字段】可选字段: 该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。
推荐阅读
- java|网络编程懒人入门(一)(快速理解网络通信协议(上篇))
- java|编程必备基础 计算机组成原理+操作系统+计算机网络
- 数据结构|线性表练习之Example040-删除单链表中数据域绝对值相等节点,仅保留第一次出现的节点而删除其余绝对值相等的节点
- 数据结构|线性表练习之Example018-删除单链表中所有值为 x 的节点
- JAVA|java-单链表反转解法及分析
- 链表|LeetCode - 24 - 两两交换链表中等的节点 - Java - 三种解法(递归 + 栈 + 迭代)
- Programming|在单链表中删除指定值的节点-解法一(Java)
- Java毕业设计项目实战篇|Java项目:养老院管理系统(java+SpringBoot+thymeleaf+HTML+Js+mysql)
- Java毕业设计项目实战篇|Java项目:博客论坛管理系统(java+SpringBoot+JSP+LayUI+maven+mysql)