본문 바로가기
프로그래밍/NETWORK HACKING

[네트워크 보안] 파이썬 소켓 통신(UDP) / UDP 에코서버 실습

by B T Y 2017. 6. 13.
반응형

파이썬 소켓 통신(UDP) / UDP 에코서버 실습에 대해서 정리한다.

 

 

※ 소켓
  - 입/출력을 하기위한 fd와 비슷한 역할
  - 통신하려는 타입에 맞게 소켓을 생성해서 사용
   ( 파일과 마찬가지의 개념 )

 

많은 언어들이 네트워크 통신을 하기 위해서는 소켓을 사용하도록 하고 있다.

 

* 소켓 프로그래밍 = 네트워크 프로그래밍

 

서버 : 요청을 받는 쪽

  실행 -> 수신 대기

 

  아이피 : 네트워크 상에서 호스트를 식별할 수 있는 식별정보

      * 네트워크 전체에서 중복되선 안된다

      ex) 집주소

 

    포트 : 호스트 상에서 서비스를 식별하는 식별정보

      * 호스트에서만 중복되지 않으면 된다.

      ex) 이름

 

클라이언트 : 요청을 하는 쪽

  실행 -> 송신


  - netstat -anu를 통해서 udp에서 사용하고 있는 포트번호 확인 가능
    ( 옵션 u는 udp를 의미하고 소켓 통신을 할때 netstat 명령어를 이용해서 열려있는 포트를 항상 확인 해보는 습관을 

     들여야 한다!! )

 


 


※ 실습: UDP 에코서버

 

 

1. 서버
클라이언트로부터 전송된 문자열을 그대로 클라이언트에게 다시 돌려준다.

 

1). 서버 소켓 생성
  sock = socket.socket( AF_INET, ... )

2). 데이터를 받을 준비 ( 포트 번호를 지정 )
  sock.bind( '', 특정번호 )

3). 수신
  info = sock.recvfrom( 크기 )    # 블록

8). 송신
  sock.sendto( ... )

 

 * 록 함수: input()
  특정 행동이 취해질 때까지 기다린다.

 

 

( 서버쪽 소켓 프로그래밍 코드 )

 


2. 클라이언트
서버에게 문자열을 전송하고, 서버로부터 들어오는 문자열을 그대로 화면에 출력

 

4). 소켓 생성
  sock = socket.socket( .. )

5). 데이터를 보낼 준비
  sock.bind( '', 0 )    # 0번이면 임의의 번호로 포트가 열린다.

6). 송신
  sock.sendto( data, addr )

7). 수신
  sock.revfrom( ... )  # 블록

 

 

( 클라이언트쪽 소켓 프로그래밍 코드 )

 

반응형

댓글