URG与PSH的联系与区别
联系:
都是一种对数据的处理方式。
区别:
URG交付给进程的数据:
1、只有紧急数据;
2、紧急数据不进入接收缓冲区而直接交付给进程,余下数据要进入接收缓冲区;
3、URG是处理在前端(收到数据后立马对真正意义上”数据”进行操作,所以说”紧急”。
PSH交付给进程的数据:
1、缓冲区排好序的数据及当前报文中的数据;
2、PSH是在处理的后端,告诉内核,不用等待”满了”再递交数据递交到上层。
TCP报文段首部的6个控制位分别为URG、ACK、PSH、RST、SYN、FIN,下面将对这6个控制位做详细解释。
紧急URG(URGent)
当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与手不中紧急指针(Urgent Pointer)字段配合使用。
确认ACK(ACKnowledgment)
仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。