packet (패킷) 생성 실습해보기
UDP와 TCP 프로토콜에서 패킷을 생성하는 실습 코드를 보여드리겠습니다.
UDP 패킷 생성 코드:
import socket
UDP_IP = '127.0.0.1' # 수신 IP 주소
UDP_PORT = 5005 # 수신 포트 번호
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # IPv4, UDP 소켓 생성
message = b'Hello, UDP!' # 전송할 데이터
sock.sendto(message, (UDP_IP, UDP_PORT)) # 데이터 전송
위 코드는 UDP 소켓을 생성하고, "Hello, UDP!"라는 데이터를 지정된 IP 주소와 포트 번호로 전송하는 코드입니다. sock.sendto()
함수는 데이터와 수신 주소를 인자로 받아 UDP 패킷을 생성하여 데이터를 전송합니다.
TCP 패킷 생성 코드:
import socket
TCP_IP = '127.0.0.1' # 연결할 서버 IP 주소
TCP_PORT = 5005 # 연결할 서버 포트 번호
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # IPv4, TCP 소켓 생성
sock.connect((TCP_IP, TCP_PORT)) # 서버에 연결
message = b'Hello, TCP!' # 전송할 데이터
sock.sendall(message) # 데이터 전송
위 코드는 TCP 소켓을 생성하고, 지정된 IP 주소와 포트 번호로 서버에 연결한 후 "Hello, TCP!"라는 데이터를 전송하는 코드입니다. sock.sendall()
함수는 데이터를 모두 전송할 때까지 계속해서 패킷을 생성하여 전송합니다.
UDP와 TCP는 패킷 생성 방식이 다르기 때문에 데이터 전송 방식에 차이가 있습니다. UDP는 비연결 프로토콜이기 때문에 패킷에 목적지 주소와 포트 번호만 지정하고 전송합니다. 따라서 패킷 생성 속도가 빠르지만 데이터 전송의 신뢰성이 낮습니다. 반면 TCP는 연결 지향 프로토콜이기 때문에 패킷에 목적지 주소와 포트 번호 뿐만 아니라 연결 정보도 포함하여 전송합니다. 이로 인해 패킷 생성 속도가 느리지만 데이터 전송의 신뢰성이 높습니다.