代码参数里的 payload 是什么意思???

代码参数里的 payload 是什么意思??? - 简书 https://www.jianshu.com/p/1bf3456a396a

http中的payload怎么理解? - 知乎 https://www.zhihu.com/question/26689845

TCP/IP中的Payload概念以及由此引申出的一些问题 - 恩赐解脱ゞ - 博客园 https://www.cnblogs.com/gaoshaonian/p/12610728.html

胶囊里的药粉就是payload

外面的皮是为了保证中间药粉的完好有效

payload就是协议报文中的有效载荷所占报文的百分比,用报文中去除协议的长度/报文总长度,协议设计的时候需要考虑到有效载荷所占的比重,避免出现payload很小的情况,比如TCP在设计的时候,就考虑在发送报文过程中,增加了接收报文的确认,而不是单独发送一个确认,因为单独发送一个报文的payload太低,网络利用率不高。
 
作者:Kimtto
链接:https://www.zhihu.com/question/26689845/answer/125553343
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.

In computing and telecommunications, the payload is the part of transmitted data that is the actual intended message. The payload excludes any headers or metadata sent solely to facilitate payload delivery.

2.

In computer security, the payload is the part of malware such as worms or viruses which performs the malicious action; deleting data, sending spam or encrypting data. In addition to the payload, such malware also typically has overhead code aimed at simply spreading itself, or avoiding detection.

3.

In the computer networking, data to be transmitted is the payload, but is almost always encapsulated in some type of a "frame" composed of framing bits and a frame check sequence.Examples are Ethernet frames, Point-to-Point Protocol (PPP) frames, Fibre Channel frames, and V.42 modem frames.

4.

In computer programming, the most common usage of the term is in the context of message protocols, to differentiate the protocol overhead from the actual data. For example, a JSONweb serviceresponse might be:


{  
   "data":{  
      "message":"Hello, world!"
   }
}

The string "Hello, world!" is the payload, while the rest is protocol overhead.

payload 字面意思 “有效载荷,有效负荷,有效载重”。

 

维基百科payload中的解释:

计算机科学电信领域,负载(英语:Payload)是数据传输中所欲传输的实际信息,通常也被称作实际数据或者数据体。信头元数据,或称为开销数据,仅用于辅助数据传输。[1][2]
计算机病毒电脑蠕虫领域中,负载指的是进行有害操作的部分,例如:数据销毁、发送垃圾邮件等。

比如有一位客户需要支付一笔费用委托货车司机运送一车石油,石油本身的重量、车子的
重量、司机的重量等等,这些都属于载重(load)。但是对于该客户来说,他关心的只有石
油的重量,所以石油的重量是有效载重(payload,也就是付费的重量)。

那么payload对于程序员来说就是在程序中 起关键作用的代码。

维基百科给出了这个样的例子:




TCP/IP中的Payload概念以及由此引申出的一些问题

 

TCP报文一次性最大运输的货物量(Payload),大体可以这么来计算:

  IP报文头长度  +  TCP报文头长度  +  Payload长度  ≤ MTU

 

即左边的三者之和,要小于等于右边MTU的长度,其中:

Internet 路由器接口标准MTU = 1500

IP报文头长度 = 20

TCP报文头长度 = 20

 

所以

Payload长度≤ MTU – IP报文头长度 – TCP报文头长度

                    ≤ 1500 -20 -20

                    ≤ 1460

 

TCP为了提高传输效率,通常会使用最大上限1460字节来传输应用层数据,如http,除非http待传输数据小于1460

  

但是TCP没有那么简单,所以还需要考虑得更多一点。

 

TCP报文通常有3部分组成:IP Header + TCP Header + Payload

 

但是,当前主流操作系统的TCP/IP协议栈,为了提高传输性能,通常还会使用 TCP Option选项。

 

一个例子

客户端在TCP握手连接,告诉服务器自己支持以下三个option:

(1)   Maximum Segment Size

(2)   SACK Permitted

(3)   Timestamp

 

服务器接收到该报文,却有不同的意见,服务器只支持这三者中的Maximum Segment Size

Option,翻译成中文是选项。所谓选项,不是强制标准,对方如果不支持或不理解,完全可以忽略。

 

在这里服务器并没有打算支持选项2 ,3, 所以双方共同支持双方的交集,即选项1

 

Maximum Segment Size

MSS的存在是为了通信双方交换各自TCP Payload最大传输长度,这个长度上限一般为1460,即上文计算的方法。

 

如果双方的MSS不一样,将选择较小的MSS值,作为接下来通信Payload的长度上限。

 

假如服务器支持选项2,“Timestamp”,那么TCP报文将会包含4部分:

 

IP Header + TCP Header + TCP Option +Payload

 

 

这里的TCP Option为“Timestamp”,长度为 10字节,看看 Payload最大可以传输多少字节?

 

IP Header + TCP Header + TCP Option +Payload ≤ 1500

 

IP Header + TCP Header + Timestamp +Payload ≤ 1500

 

Payload ≤ 1500 - IP Header -TCP Header – Timestamp

              ≤ 1500 -20 -20 -10

              ≤ 1450

 

简而言之,没有携带option的TCP报文,最大可以支持1460字节的Payload长度。

一旦携带option,由于option需要占用空间,留给payload的空间将会相应减少,具体减少的空间等于option占用的空间。

 

Payload长度和Window Size有关系吗?

有一点点关系。

 

如果把Payload 1460看成一个标准的集装箱,Window Size可以看作双方的仓库大小,用于临时堆放对方运过来的集装箱,在集装箱被客户运走之前,一直会呆在TCP仓库里。

 

为了更高效地利用仓库,最理想的方法就是,仓库的大小是集装箱的整数倍,这样就不会产生零星的空间。

 

零星的空间一直无法使用,因为不够容纳一个标准集装箱,势必会造成仓库空间的浪费。

空间浪费只是直接后果,还有一个间接后果,更加严重。

 

假设接收方的仓库空间还有200字节,于是通过window size update消息告诉发送方。

 

发送方心急火燎发200字节,那么一个标准1460报文,将会分成8个小报文发送,这样的传输效率会非常低下。

 

为了避免这种低效传输场景,TCP协议有了新的严格规定:

 

如果 window size < MSS , 不允许更新自己的window

上文用通俗语言表达为,一旦接收方的仓库空间小于一个标准集装箱,window size update = 0 , 即善意欺骗对方,仓库已经用完,不允许再发货物过来。

 

以上是从接收方入手,万一接收方没有遵守规定,那就让发送方严格执行另外一个规定。

 

发送方一旦发现对方的window size < MSS,理解为对方的仓库已经占满(剩余空间不足以容纳一个标准集装箱),不会发送任何集装箱。



原文地址:https://www.cnblogs.com/rsapaper/p/10238268.html