Python은 패킷을 전송하기 위해 TCP 및 UDP를 시뮬레이트합니다.

소개

프로젝트 테스트에서 대상 위치에 지정된 내용의 데이터 패킷을 전송해야 하며 전송해야 하는 패킷의 수가 매우 많습니다.실제 환경은 테스트 요구 사항을 충족할 수 없지만 Python을 사용하여 테스트를 지원할 수 있습니다. 기본 언어로 Socket과 Scrapy가 결합되어 있으며 Socket은 로컬 시스템에서 대상 시스템으로 많은 수의 데이터 패킷을 전송할 수 있으며 scapy는 소스 IP를 시뮬레이션하여 데이터 패킷을 대상 시스템으로 보낼 수 있지만 전송 속도와 초당 크기는 Socket만큼 좋지 않으며 두 모듈은 자체 강점이 있으며 서로를 보완합니다.

소켓과 스캐피

네트워크 서비스에 있어서 소켓과 소켓 프로그래밍은 불가분의 관계입니다.이 외에도 크롤러 프레임워크인 Scrapy가 있습니다.이 기사에서는 주로 TCP 형식으로 전송할 수 있는 위의 두 가지 데이터 패킷 전송을 요약합니다. UDP와 UDP가 있지만 TCP 전송은 바이트 스트림을 사용하고 UDP는 데이터 패킷이므로 두 전송 방법을 사용할 때 인코딩에 약간의 차이가 있습니다.

소켓

소켓은 "소켓"이라고도 합니다. 소켓 형식: socket(family, type[,protocal])은 IP 주소와 포트를 설명하는 데 사용되며 통신 체인의 핸들입니다. 응용 프로그램은 일반적으로 네트워크에 요청을 보내거나 "소켓"을 통해 네트워크 요청에 응답합니다. 차이나 모바일 등을 예로 들 수 있습니다.
Python은 저장할 두 가지 기본 소켓 모듈을 제공합니다. 첫 번째는 표준 BSD 소켓 API를 제공하는 Socket이고 두 번째는 네트워크 서버 개발을 단순화할 수 있는 서버 센터 클래스를 제공하는 SocketServer입니다(TCP가 데이터를 보낼 때, TCP 연결이 설정되었으므로 주소를 지정할 필요가 없습니다.UDP는 연결이 없으며 보낼 때마다 보낼 대상을 지정해야 합니다.)
인터넷 프로토콜을 사용하여 통신하려면 AF_INET: TCP 또는 UDP를 사용합니다. 이것이 가장 일반적인 선택입니다. 예를 들어 프로토콜을 직접 구현하고 프로세스가 PF_PACKET을 사용하려면 루트로 실행(또는 특수 기능 사용)해야 하기 때문에 인터넷 프로토콜 계층 아래의 가장 기본적인 수준에서 메시지를 보내고 받으려면 PF_PACKET을 사용합니다.
연결 방법을 선택할 때 UDP보다 더 안정적인 TCP SOCK_STREAM을 선택할 수도 있지만 해당 오버헤드가 커집니다.
여기에 이미지 설명 삽입

스케피

Scapy에는 pf_packet 소켓 프로그래밍, 라우팅 및 객체 지향 설계와 같은 기술이 포함되며 Python으로 작성됩니다. 일반적으로 수신 메시지는 특정 프로토콜을 준수해야 양 당사자가 특정 고정 및 압축 해제 작업을 통해 데이터를 처리할 수 있습니다.많은 경우 사용자 정의 프로토콜은 비교적 간단합니다.먼저 메시지 헤더를 수신하고 메시지 길이를 얻은 다음 메시지 본문을 가져오지만 작성하기 번거로운 프로토콜이 많아 scapy 라이브러리를 사용하여 메시지를 한 번에 가져옵니다. 일반적으로 메시지의 헤더 정보는 소스 주소, 대상 주소, 메시지 길이.
Scrapy의 공식 웹사이트 주소: 링크

도모 케이스

소켓 예

가져와야 하는 모듈: 가져오기 소켓
여기에 이미지 설명 삽입

무서운 예

가져와야 하는 모듈: from scapy.layers.inet import IP, UDP 및 from scapy.all import *, 데이터 패킷이 사전 설정된 IP에 따라 전송될 수 있도록 합니다.
여기에 이미지 설명 삽입

데이터 패킷 왜곡 문제(python3 사용)

import importlib importlib.reload(sys) 모듈을 소개합니다
. 보낸 데이터 패킷이 여전히 왜곡되어 있으면 보낸 인코딩 형식에 문제가 있는지 확인해야 합니다. .encode('GBK') 및 .encode('UTF- 8').
인코딩 형식을 수정하여 수신하지 못한 경우 전송된 데이터 패킷이 너무 긴지, 현재 전송된 데이터 패킷이 너무 길어 전송되지 않는지 확인해야 합니다.

추천

출처blog.csdn.net/qq_36616956/article/details/128929013