TCP Psuedo报头需要发送方和目的地IP地址和协议类型。所有这些信息都存在于网络层/IP报头中。由于传输层无法访问网络层中的数据,它如何构造伪报头?
发布于 2018-11-15 10:34:23
TCP伪标头只包含用于创建原始连接(源和目标IP地址)的信息、长度(可用于上层)和众所周知的常量,该协议(TCP是Internet协议编号6)。
来自RFC 793,p17。
+--------+--------+--------+--------+
| Source Address |
+--------+--------+--------+--------+
| Destination Address |
+--------+--------+--------+--------+
| zero | PTCL | TCP Length |
+--------+--------+--------+--------+这意味着,将一系列数据字节包装到一个段中,然后放入一个包中的过程只使用上层所拥有的信息。实际上,您将看到,对于给定的连接,除了长度都是常量的,这意味着到这一点为止的校验和可以在连接-打开和存储时计算。每个数据包的计算可以从伪报头中的长度字段开始。某些特定的实现实际上可能会将长度存储在该位置,如果这样做会稍微优化代码的话。
发布于 2018-11-15 10:37:56
伪标头实际上并不存在-它只是临时创建的,以计算校验和。
在IP堆栈中,网络层将L3信息向上传递给传输层--同样,传输层将L3和L4信息向上传递到应用层。信息不是作为原始数据包传递,而是通过数据字段传递/从API函数传递。这些API函数没有IETF标准,但大多数OSes使用BSD风格的“套接字”。
https://networkengineering.stackexchange.com/questions/54727
复制相似问题