scapy를 사용하여 Python에서 TCP 서버와 같은 것을 개발 중입니다. 일반적인 TCP 서버는 이와 같이 작동합니다.
sniff
.sr1
. 이것은 호출로 수행됩니다 .sniff
.그러나 문제는 요청 패킷 이 호출되기 전에 도착한 패킷을 캡처하지 않기 때문에 요청 패킷이 sr1
와 두 번째 사이에 도착 sniff
하여 손실 될 수 sniff
있다는 것입니다. (Wireshark에서 패킷이 도착하고 있음을 알 수 있습니다).
SYNACK을 보내고 ACK와 요청을 한 번의 호출로 '원자 적으로'수신하려면 어떻게해야합니까?
(일반적인 TCP 연결에서 클라이언트는 시간 초과 후 요청과 함께 패킷을 재전송하지만 내 작업의 조건에 따라 패킷 재전송이 없으며 패킷이 손실되지 않습니다).
당신은 scapy 소켓 호출 만들 수 있습니다 sr1
또는 sniff
그것에을. 예를 들어
from scapy.config import conf
sock = conf.L3socket()
sock.sr1(....)
sock.sniff(...)
동일한 소켓이기 때문에 패킷 손실이 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다