本文共 1898 字,大约阅读时间需要 6 分钟。
IP数据包的首部
Version(版本号) //如IPV4,IPV6
IHL (Inernet Header Length, IP包头的长度) 4字节为1个单位来记录 Type of Service(服务类型) //D:若为0表示一般延迟,若为1表示为低延迟, //T:若为0表示一般传输量,若为1表示高传输量; //R:若为0表示一般可靠度,若为1表示高可靠度 //UU:保留尚未被使用 //PPP:表示此IP数据包的优先级,目前很少使用 Total Length(总长度) //指这个IP数据包的总容量,包括报头与数据DATA部分,最大可达65535bytes Identification(识别码) //每个小IP分段是否来自同一个IP资料,那就是这个标示符的作用 Flages(特殊标志) //这个地方的内容为“0DM”,其意义为: D:若为0表示可以分段,若为1表示不可分段。 M:若为0表示此IP最后分段,若为1表示非最后分段、、 Fragment Offset(分段偏移) //有点像是序号,有这个序号才能将所有的小IP分段组合成为原本的IP数据包大小。 Time To Live (TTL,生存时间) //当这个IP数据包通过一个路由器时,TTL就会减1,当TTL为0时,这个数据包将会被直接丢弃。 Protocol Number(协议代码) //来自传输层与网络层本身的其他数据都是放置在IP数据包中,序号对应相关的协议,如6代表TCP协议 Header Checksum(报头校验码) //用于检查这个IP报头是否存在错误 Sourse Address(来源的IP地址) //从这里我们也知道IP是32位的 Destination Address //目标IP地址 Options(其他参数) //提供包括安全处理机制、路由记录、时间戳、严格与宽松的来源路由等。 Padding(补齐项目) //若Options的数据不足32bits时,则由Padding自动补齐 TCP数据包的首部
Source Port (源端口)
Destination Port(目标端口) Sequence Number(数据包序列号) //TCP太大分段时,这个记录每段的序列号,便于组合。 Acknowledge Number(回应序号) //为了确定主机确实收到我们所发出的数据包, Data Offset(数据补偿) //由于Options字段是非固定的们为了要确认整个TCP数据包的大小,就需要这个标志来说明整个数据包字段的起始位置。 Reserver(保留) //未使用的字段 Code (Control Flag,控制标志码) //当我们进行网络连接的时候,必须要说明这个连接的状态,好让接受端了解这个数据包的主要动作。共有6个bits,分别代表6个句柄,若为1则为启动: URG(Urgent) //若为1则代表该数据包为紧急数据包,接受端应该紧急处理,此时Urgent Pointer会被启用 ACK(Acknowledge) //若为1则代表这个数据包为响应数据包,则与Acknowledge Number有关 PSH(Push function) //若为1,代表要求对方立即传送缓冲区内的其他对应数据包,而无需等待缓冲区满了才发送 RST(Reset) //若为1时,代表连接马上结束,而无需等待终止确认手续, SYN(Synchronous) //若为1,代表发送端希望双方建立同步处理,也就是要求建立连接,通常带有SYN的数据包表示“主动”要连接到对方的意思 FIN(Finish) /若为1,代表传送结束,所以通知对方数据传送完毕,是否同意断线,知识发送者还在等待对方的响应而已。 Window(滑动窗口) //控制数据包的流量,可以告诉对方目前本机的缓冲器还可以接收的数据包,当其为0时表示缓冲器已满,所以应该要暂停传送数据 Checksum(确认校验码) //当数据送出前,会进行一个校验动作,并将该动作标注在字段上,接收者接收到后,会再次验证,相符就接收。 Urgent Pointer(紧急数据) //同URG Options(其他参数) //提供包括安全处理机制、路由记录、时间戳、严格与宽松的来源路由等。 Padding(补齐项目) //若Options的数据不足32bits时,则由Padding自动补齐