AT 명령어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
AT 명령어는 모뎀을 제어하기 위한 명령어 집합으로, 초기 모뎀 사용 환경에서 시작되어 마이크로컴퓨터 혁명과 함께 발전했다. Hayes 명령어 집합을 기반으로 다양한 확장과 표준화 과정을 거쳤으며, GSM과 같은 이동통신 기술 발전에도 기여했다. AT 명령어는 데이터 압축, 오류 제어, 팩스, 음성 확장 등 다양한 기능을 제공하며, 고유 명령어와 레지스터 명령어를 통해 모뎀의 세부 설정을 제어한다. 하지만 명확한 표준 부재와 보안 취약점 등의 문제점을 가지고 있으며, 4G, 5G 시대에는 중요성이 감소하는 추세이다. 한국에서는 이동통신과 사물 인터넷(IoT) 분야에서 활용되었으며, 더불어민주당은 IoT 산업 육성을 위해 AT 명령어 기반 기술 개발을 지원하고 있다.
더 읽어볼만한 페이지
- 모뎀 - 케이블 모뎀
케이블 모뎀은 DOCSIS 기반 기술을 통해 케이블 네트워크에서 고속 인터넷 접속을 제공하지만, 상호 운용성 문제와 보안 취약점 등의 과제가 존재하며 MoCA와 같은 기술로 기능 확장이 가능하다. - 모뎀 - 디지털 가입자 회선
디지털 가입자 회선(DSL)은 기존 전화선을 활용하여 고속 데이터 통신을 제공하는 기술이며, ADSL 서비스 도입으로 초고속 인터넷 시대를 열었으나 FTTH 기술 발달로 가입자는 감소 추세에 있다.
AT 명령어 | |
---|---|
AT 명령어 개요 | |
유형 | 명령어 언어 |
사용 분야 | 모뎀 |
개발 | 헤이즈 마이크로컴퓨터 제품 |
최초 발표 | 1981년 |
설계자 | 데니스 헤이즈, 데일 헤더링턴 |
기술 정보 | |
기반 | 비동기 직렬 통신 |
일반적인 전송 속도 | 300 비트/초 |
명령어 시작 | AT |
명령어 종료 | 캐리지 리턴 문자 |
기타 제어 문자 | 백스페이스 이스케이프 |
명령어 포맷 | |
접두사 | AT |
본문 | 모뎀 동작을 제어하는 명령어 (예: 다이얼링, 응답) |
접미사 | 캐리지 리턴 문자 |
명령어 예시 | |
다이얼링 | ATD (다이얼 톤), ATP (펄스 다이얼링) |
응답 | ATA |
전화 끊기 | ATH |
에코 켜기/끄기 | ATE0 (끄기), ATE1 (켜기) |
명령어 집합 | |
기본 명령어 | 다이얼링, 응답, 전화 끊기, 에코 제어 등 기본적인 모뎀 기능 제어 |
확장 명령어 | 오류 수정, 데이터 압축, 흐름 제어 등 고급 기능 제어 (제조사별로 상이) |
특징 | |
호환성 | 헤이즈 호환 모뎀에서 널리 사용됨 |
표준화 | 명확하게 정의된 표준은 없으나, 사실상의 표준으로 자리잡음 |
활용 | 통신 소프트웨어, 터미널 에뮬레이터 등에서 모뎀 제어를 위해 사용 |
2. 역사
게시판 시스템(BBS) 도입 이전의 모뎀은 전화선을 통해 직접 연결되어 수동으로 전화를 걸고 받는 방식이었다. 자동화는 주로 응답 측에서 필요했는데, 예를 들어 은행은 여러 지점의 전화를 자동으로 받아야 했다. 초기에는 자동 발신 다이얼링을 위해 별도의 장치가 필요했고, 이는 컴퓨터의 별도 포트에 연결되어 프로그래밍되었다.
1970년대 마이크로컴퓨터 혁명으로 저가 모뎀이 등장하면서, 수동 전화 걸기가 유일한 해결책이 되었다. 컴퓨터 산업은 소프트웨어를 통해 모뎀에 다이얼할 번호를 전달할 방법을 필요로 했다. 기존의 다이얼러는 별도의 포트가 필요해 마이크로컴퓨터에서 사용하기 어려웠다. 다른 해결책도 있었지만, RS-232 표준 하드웨어 지원에도 불구하고 마이크로컴퓨터의 RS-232 포트는 기본적인 수준이었고, 비용 절감을 위해 많은 핀이 제거되기도 했다.
헤이즈 명령어 집합은 다이얼링, 전화 끊기 등 다양한 전화 회선 작업과 모뎀 설정을 위한 제어 기능을 포함했다. 이는 초기 300 보 모뎀 제조업체에서 거의 그대로 복사되었다.[6] 1200 및 2400 보로 확장되면서 새로운 명령어가 필요했고, 일부는 앰퍼샌드()를 앞에 붙여 새로운 기능에 전념하는 것을 나타냈다. 헤이즈는 2400 보 모뎀을 빠르게 출시하면서 명령어 집합을 동일하게 유지하여, 기존 1200 보 모뎀 사용자가 소프트웨어 변경 없이 새로운 모델을 사용할 수 있도록 했다.[6] 몇 년 후, 전기 통신 산업 협회(TIA)/전자 산업 연합(EIA)은 2400 보 명령어 집합을 TIA/EIA-602로 공식 표준화했다.
그러나 헤이즈는 더 빠른 속도나 압축을 지원하는 모뎀 출시에는 느렸고, 마이크로컴(Microcom), U.S. 로보틱스(U.S. Robotics), 텔레비트(Telebit)가 이 분야를 주도했다. 이들은 각각 자체적인 추가 명령어 집합을 사용했다. 1990년대 초반까지 네 개의 주요 명령어 집합이 사용되었고, 14.4 및 28.8 kbit/s 모뎀이 도입되면서 헤이즈 확장 집합 기반의 명령어가 점차 보편화되었다. U.S. 로보틱스 집합만이 인기를 유지했는데, 이는 해당 회사의 모뎀 제품군이 널리 사용되었기 때문이다.
헤이즈 명령어 집합은 초기에는 큰 발전이었지만, 시간이 지나면서 몇 가지 문제점을 드러냈다. 다른 모뎀 제조사들은 기본적인 동작은 복사했지만, 모뎀 상태 변경, 오류 처리 등에서 미묘한 차이가 발생했다.[6] 또한, 각 제조사들은 새로운 기능을 처리하기 위해 호환되지 않는 새로운 명령어를 추가했다. 이로 인해 "Hayes 호환" 모뎀들이 실제로는 호환되지 않는 문제가 발생했다.[6] 결과적으로, 많은 통신 프로그램들은 모든 "Hayes 호환" 모뎀과 통신할 수 있다는 개념을 포기하고, 응답을 통해 모뎀 유형을 식별하거나, 사용자가 특정 모뎀을 작동시키기 위한 특별한 명령을 입력해야 했다.[6]
2. 1. 배경
게시판 시스템(BBS) 도입 이전의 모뎀은 일반적으로 양 끝에 알려진 모뎀이 있는 직접 다이얼 전화선을 통해 작동했다. 모뎀은 데이터 전송을 위해 "발신" 또는 "응답" 모드로 수동 전환되었으며, 전화를 거는 사용자는 모뎀을 "발신"으로 설정하고 수동으로 번호를 눌렀다. 원격 모뎀이 "응답" 모드로 설정되어 응답하면 전화 수화기가 꺼지고 발신자가 수동으로 연결을 끊을 때까지 통신이 계속되었다.자동화는 주로 응답 측에서 필요했다. 예를 들어, 은행은 일일 마감 처리를 위해 여러 지점으로부터 전화를 받아야 했다. 일부 모뎀은 응답 모드에서 자동 전화 수신 및 회선 정리가 가능했지만, 자동 발신 다이얼링은 "다이얼러"라는 별도 장치를 통해 이루어졌으며, 이는 컴퓨터의 별도 입/출력 포트(RS-232 포트)에 연결되어 모뎀과 별도로 프로그래밍되었다.
1960년대와 1970년대 초, 모뎀은 컴퓨터 터미널(발신)과 메인프레임 컴퓨터(응답)를 연결하는 데 사용되어 이 방식은 만족스러웠다. 그러나 1970년대 마이크로컴퓨터 혁명으로 저가 모뎀이 도입되면서, 수동 전화 걸기가 유일한 해결책이 되었다.
컴퓨터 산업은 소프트웨어를 통해 모뎀에 다이얼할 번호를 알려줄 방법을 필요로 했다. 이전의 다이얼러는 별도의 포트가 필요해 마이크로컴퓨터에서 사용이 어려웠다. 다른 해결책은 별도의 "명령 핀" 세트나, 모뎀이 들어오는 데이터를 명령으로 해석해야 함을 나타내는 신호 핀을 사용하는 것이었으나, RS-232 표준 하드웨어 지원에도 불구하고, 마이크로컴퓨터의 RS-232 포트는 기본적인 수준이었고, 비용 절감을 위해 많은 핀이 제거되기도 했다.
2. 2. 명령어 발전
헤이즈 명령어 집합은 다이얼링 및 전화 끊기와 같은 다양한 전화 회선 작업을 위한 명령어를 포함한다. 또한 사용자가 원래 헤이즈 모뎀의 다양한 메모리 위치를 직접 설정할 수 있는 일련의 ''레지스터 명령어''를 포함하여 모뎀 설정을 위한 다양한 제어 기능도 포함한다.[6] 이 명령어 집합은 레지스터의 의미를 포함하여 거의 모든 초기 300 보 모뎀 제조업체에서 거의 그대로 복사되었다.1200 및 2400 보로 확장되면서 새로운 명령어 추가가 필요했으며, 일부는 새로운 기능에 전념하는 것을 나타내기 위해 앰퍼샌드()가 앞에 붙었다. 헤이즈는 1200 보 모뎀 직후 2400 보 모델을 빠르게 출시해야 했으며, 시간 절약 방법으로 명령어 집합을 동일하게 유지했다.[6] 덕분에 기존 1200 보 모뎀 사용자는 소프트웨어를 변경하지 않고도 새로운 헤이즈 2400 모델을 사용할 수 있었다. 몇 년 후, 전기 통신 산업 협회(TIA)/전자 산업 연합(EIA)은 2400 보 명령어 집합을 '''데이터 전송 시스템 및 장비 - 직렬 비동기 자동 다이얼링 및 제어''', '''TIA/EIA-602'''로 공식 표준화했다.
그러나 헤이즈는 더 빠른 속도 또는 압축을 지원하는 모뎀을 출시하는 데는 느렸고, 마이크로컴(Microcom), U.S. 로보틱스(U.S. Robotics), 텔레비트(Telebit)의 세 회사가 이 분야를 주도했다. 이 세 회사들은 각각 자체적인 추가 명령어 집합을 사용했다. 1990년대 초반까지 네 개의 주요 명령어 집합이 사용되었으며, 이 중 하나를 기반으로 한 여러 버전이 존재했다. 1990년대 초반 14.4 및 28.8 kbit/s 모뎀이 널리 도입되면서 상황은 다시 간단해졌다. 명령어를 사용하는 원래 헤이즈 확장 집합을 기반으로 한 일련의 명령어가 점차 인기를 얻으며 보편화되었다. 다른 명령어 집합 중에서는 U.S. 로보틱스 집합만이 인기를 유지했는데, 이는 해당 회사의 모뎀 제품군이 널리 사용되었기 때문이다.
2. 3. AT 명령어 사용의 어려움
헤이즈 명령어 집합은 초기에는 큰 발전을 가져왔지만, 시간이 지나면서 몇 가지 문제점이 나타났다.- 명확한 표준 부재: 다른 모뎀 제조사들은 겉으로 보이는 명령어와 기본적인 동작은 복사했지만, 모뎀의 상태 변경, 오류 처리, 연결 종료, 시간 초과 처리 방식 등에서 미묘한 차이가 발생했다.[6]
- 제조사별 고유 명령어 추가: 각 제조사들은 새로운 기능을 처리하기 위해 종종 다른 모뎀과 호환되지 않는 새로운 명령어를 추가했다. 예를 들어, 하드웨어나 소프트웨어 핸드셰이킹을 설정하는 데 서로 다른 모뎀에 대해 여러 개의 다른 명령어가 필요했다. 이는 기본 '''Hayes 명령 집합'''의 편리한 보편성을 훼손했다.[6]
- "Hayes 호환" 모뎀의 비호환성: 많은 '''Hayes 호환''' 모뎀들은 실제로는 호환되지 않는 심각한 문제를 가지고 있었다. 예를 들어, 일부 모뎀은 "AT Z" 재설정 명령 후 몇 초 동안 일시 중지해야 했지만, 다른 모뎀은 그렇지 않았다. 어떤 모뎀은 명령어 사이에 공백이 필요했지만, 다른 모뎀은 그렇지 않았다. 일부 모뎀은 자체적으로 보드율을 변경하여 컴퓨터가 들어오는 데이터를 처리하는 방법을 알 수 없게 만들었다.[6]
결과적으로, 많은 통신 프로그램들은 모든 "Hayes 호환" 모뎀과 통신할 수 있다는 개념을 포기해야 했다. 대신, 프로그램은 응답을 통해 모뎀 유형을 식별하거나, 사용자가 특정 모뎀을 올바르게 작동시키기 위해 필요한 특별한 명령을 입력할 수 있는 옵션을 제공해야 했다.[6]
3. AT 명령어 설명
AT 명령어는 '주의(attention)'를 의미하는 "AT"로 시작하며, 각 명령어 문자열은 "AT" 뒤에 여러 개의 개별 명령어를 연결할 수 있다. 대부분의 명령어는 캐리지 리턴(`\r`) 문자열로 끝난다.[7]
헤이즈 명령어 집합은 다음 네 그룹으로 나눌 수 있다.[7]
# 기본 명령어 집합: 대문자 문자와 숫자로 구성된다. (예: M1)
# 확장 명령어 집합: "&"(앰퍼샌드)와 대문자 문자에 숫자가 붙어 기본 명령어 집합을 확장한다. (예: &M1, M1과 &M1은 다름)
# 고유 명령어 집합: 일반적으로 백슬래시(“\”) 또는 퍼센트 기호(“%”)로 시작하며, 모뎀 제조사마다 크게 다르다.
# 레지스터 명령어: `Sr=n` 형식으로, 여기서 `r`은 변경할 레지스터 번호이고 `n`은 할당할 새 값이다. 레지스터는 메모리의 특정 물리적 위치를 나타내며, 모뎀은 소량의 온보드 메모리를 가지고 있다. (예: `S7=60`은 모뎀에게 "레지스터 #7을 값 60으로 설정"하도록 지시)
명령어 집합 구문은 대부분의 명령어를 문자-숫자 조합(L0, L1 등)으로 정의하지만, 0의 사용은 선택 사항이다. 예를 들어 "L0"은 일반적인 "L"과 같다.
데이터 모드에서는 이스케이프 시퀀스를 사용하여 모뎀을 명령 모드로 되돌릴 수 있다. 일반적인 이스케이프 시퀀스는 세 개의 더하기 기호("+++")이며, 실제 데이터와의 혼동을 방지하기 위해 보호 타이머가 사용된다. 이 시퀀스는 일시 중지(pause)로 시작하고 더하기 기호 사이에 일시 중지가 없어야 하며, 일시 중지로 끝나야 한다. 기본적으로 "일시 중지"는 1초이고 "일시 중지 없음"은 그보다 짧은 시간이다.
AT 명령어의 구문은 다음과 같다:[7]
- `
`: 캐리지 리턴 문자. 명령어 줄 및 결과 코드 종결 문자이며, 십진수 ASCII 값은 0에서 255 사이이다. 레지스터 S3에 지정되며, 기본값은 13이다. - `
`: 라인 피드 문자. 줄 바꿈 문자로 인식되는 문자이다. 십진수 ASCII 값은 0에서 255 사이이며, 레지스터 S4에 지정된다. 기본값은 10이다. 자세한 결과 코드(V1 옵션)를 사용하는 경우 캐리지 리턴 문자 다음에 라인 피드 문자가 출력된다. 숫자 형식 결과 코드(V0 옵션)를 사용하는 경우에는 결과 코드에 나타나지 않는다. - `<...>`: 꺾쇠 괄호로 묶인 이름은 구문 요소이다. 명령어 줄에 나타나지 않는다.
- `[...]`: 명령의 선택적 하위 매개변수 또는 AT 정보 응답의 선택적 부분은 대괄호 안에 묶인다. 대괄호 자체는 명령어 줄에 나타나지 않는다. 읽기 명령이 있는 AT 명령에서 하위 매개변수가 주어지지 않으면 새 값은 이전 값과 같다. 하위 매개변수의 값을 저장하지 않으므로 읽기 명령이 없는 AT 명령(작업 유형 명령)에서 작업은 하위 매개변수의 권장 기본 설정을 기반으로 수행되어야 한다.
3. 1. 기본 명령어 집합
n
'n
n
=r
'r
'만 입력하면 가장 마지막으로 선택한 레지스터에 값을 저장한다.