<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개인공간</title>
    <link>https://ha7708.tistory.com/</link>
    <description>https://github.com/ha7708
https://ha7708.tistory.com/74</description>
    <language>ko</language>
    <pubDate>Sun, 19 Jul 2026 03:49:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>라임tree</managingEditor>
    <item>
      <title>Cron 과 Cband 이용 일일 트래픽량 기록하기</title>
      <link>https://ha7708.tistory.com/267</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 쉘 스크립트 작성&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1784191722941&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash

DOMAIN=&quot;도메인.com&quot;
CBAND_DIR=&quot;/var/spool/cband&quot;
LOGFILE=&quot;/var/log/cband_daily_traffic.csv&quot;

HTTP_FILE=&quot;${CBAND_DIR}/${DOMAIN}&quot;
HTTPS_FILE=&quot;${CBAND_DIR}/$(echo &quot;$DOMAIN&quot; | tr '[:lower:]' '[:upper:]')_SSL&quot;

get_bytes() {
    if [ -f &quot;$1&quot; ]; then
        od -An -tu8 -N8 &quot;$1&quot; | tr -d ' '
    else
        echo 0
    fi
}

HTTP_BYTES=$(get_bytes &quot;$HTTP_FILE&quot;)
HTTPS_BYTES=$(get_bytes &quot;$HTTPS_FILE&quot;)
TOTAL_BYTES=$((HTTP_BYTES + HTTPS_BYTES))

HTTP_MB=$(awk &quot;BEGIN {printf \&quot;%.2f\&quot;, $HTTP_BYTES/1024/1024}&quot;)
HTTP_GB=$(awk &quot;BEGIN {printf \&quot;%.3f\&quot;, $HTTP_BYTES/1024/1024/1024}&quot;)

HTTPS_MB=$(awk &quot;BEGIN {printf \&quot;%.2f\&quot;, $HTTPS_BYTES/1024/1024}&quot;)
HTTPS_GB=$(awk &quot;BEGIN {printf \&quot;%.3f\&quot;, $HTTPS_BYTES/1024/1024/1024}&quot;)

TOTAL_MB=$(awk &quot;BEGIN {printf \&quot;%.2f\&quot;, $TOTAL_BYTES/1024/1024}&quot;)
TOTAL_GB=$(awk &quot;BEGIN {printf \&quot;%.3f\&quot;, $TOTAL_BYTES/1024/1024/1024}&quot;)

# 최초 1회 헤더 생성
if [ ! -f &quot;$LOGFILE&quot; ]; then
    echo &quot;DATE,DOMAIN,HTTP_BYTES,HTTP_MB,HTTP_GB,HTTPS_BYTES,HTTPS_MB,HTTPS_GB,TOTAL_BYTES,TOTAL_MB,TOTAL_GB&quot; &amp;gt; &quot;$LOGFILE&quot;
fi

echo &quot;$(date +%F),$DOMAIN,$HTTP_BYTES,$HTTP_MB,$HTTP_GB,$HTTPS_BYTES,$HTTPS_MB,$HTTPS_GB,$TOTAL_BYTES,$TOTAL_MB,$TOTAL_GB&quot; &amp;gt;&amp;gt; &quot;$LOGFILE&quot;
[root@web61 log]# crontab -l
00 17 * * * touch /iweb/zzzzzzz
0 3 * * * /root/crowdsec_apply.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. cron 등록&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1784191736939&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;crontab -e&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784191836749&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;55 23 * * * /bin/bash /opt/cmd/script/cband_daily_traffic_record.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 결과: 이렇게 누적 저장 됨&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;1016&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;89&quot; height=&quot;22&quot;&gt;DATE&lt;/td&gt;
&lt;td width=&quot;130&quot;&gt;DOMAIN&lt;/td&gt;
&lt;td width=&quot;97&quot;&gt;HTTP_BYTES&lt;/td&gt;
&lt;td width=&quot;77&quot;&gt;HTTP_MB&lt;/td&gt;
&lt;td width=&quot;74&quot;&gt;HTTP_GB&lt;/td&gt;
&lt;td width=&quot;105&quot;&gt;HTTPS_BYTES&lt;/td&gt;
&lt;td width=&quot;85&quot;&gt;HTTPS_MB&lt;/td&gt;
&lt;td width=&quot;82&quot;&gt;HTTPS_GB&lt;/td&gt;
&lt;td width=&quot;107&quot;&gt;TOTAL_BYTES&lt;/td&gt;
&lt;td width=&quot;87&quot;&gt;TOTAL_MB&lt;/td&gt;
&lt;td width=&quot;83&quot;&gt;TOTAL_GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;22&quot;&gt;2026-07-16&lt;/td&gt;
&lt;td&gt;도메인.com&lt;/td&gt;
&lt;td&gt;120189109&lt;/td&gt;
&lt;td&gt;114.62&lt;/td&gt;
&lt;td&gt;0.112&lt;/td&gt;
&lt;td&gt;1860238964&lt;/td&gt;
&lt;td&gt;1774.06&lt;/td&gt;
&lt;td&gt;1.732&lt;/td&gt;
&lt;td&gt;1980428073&lt;/td&gt;
&lt;td&gt;1888.68&lt;/td&gt;
&lt;td&gt;1.844&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;22&quot;&gt;2026-07-16&lt;/td&gt;
&lt;td&gt;도메인.com&lt;/td&gt;
&lt;td&gt;120189109&lt;/td&gt;
&lt;td&gt;114.62&lt;/td&gt;
&lt;td&gt;0.112&lt;/td&gt;
&lt;td&gt;1872588334&lt;/td&gt;
&lt;td&gt;1785.84&lt;/td&gt;
&lt;td&gt;1.744&lt;/td&gt;
&lt;td&gt;1992777443&lt;/td&gt;
&lt;td&gt;1900.46&lt;/td&gt;
&lt;td&gt;1.856&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/리눅스</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/267</guid>
      <comments>https://ha7708.tistory.com/267#entry267comment</comments>
      <pubDate>Thu, 16 Jul 2026 17:52:33 +0900</pubDate>
    </item>
    <item>
      <title>SMTP 로그 파헤치기</title>
      <link>https://ha7708.tistory.com/266</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;상태 코드 의미를 알아두면 로그만 보고도 장애를 상당히 빨리 판단할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1784002873251&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@host logs]# grep -E &quot;421|450|451|452|550|551|552|553|554&quot; /var/MailRoot/logs/smtp-202607*

[root@host logs]# grep -Ei &quot;error|failed|timeout|refused|reject|retry&quot; /var/MailRoot/logs/*&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; XMail SMTP 로그 &lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 395px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 상태값 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 원인 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 조치 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;AUTH=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;SMTP 인증 성공&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상 로그인&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;&lt;b&gt;AUTH=EFAIL:TYPE=LOGIN&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;SMTP 인증 실패&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;아이디/비밀번호 오류, 무차별 로그인 공격&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;비밀번호 확인, 공격 IP 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;&lt;b&gt;AUTH=EFAIL:TYPE=CRAM-MD5&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;CRAM-MD5 인증 실패&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;인증 방식 불일치&lt;/td&gt;
&lt;td style=&quot;height: 42px;&quot;&gt;메일 클라이언트 설정 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RCPT=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;수신자 주소 확인 완료&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;다음 단계 진행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RCPT=EFAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;수신자 거부&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;계정 없음, Relay 거부&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;계정 존재 여부 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RECV=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;메일 데이터 수신 완료&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;메일 저장 성공&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RECV=EFAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;메일 데이터 수신 실패&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;디스크 문제, 세션 종료 등&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;서버 상태 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;DATA=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;DATA 단계 완료&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;DATA=EFILTER&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;필터에서 차단&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;바이러스, 스팸, 정책&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;필터 로그 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;DATA=EFAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;DATA 처리 실패&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;저장 실패 등&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;서버 로그 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;MAIL=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;MAIL FROM 정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;MAIL=EFAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;MAIL FROM 거부&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;SPF/정책 등&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;발신 정책 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;QUIT=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;SMTP 세션 정상 종료&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;QUIT=EFAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;세션 비정상 종료&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;연결 끊김&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;네트워크 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RSET=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;SMTP 세션 초기화&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;NOOP=OK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;연결 확인 명령&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정상&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; XMail 내부 처리 관련 &lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 상태값 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 주로 발생 원인 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;LOCAL&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;로컬 계정 전달&lt;/td&gt;
&lt;td&gt;같은 메일서버 사용자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;SMTP&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;외부 메일 발송&lt;/td&gt;
&lt;td&gt;외부 MX로 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;POP3&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;POP3 접속&lt;/td&gt;
&lt;td&gt;메일 가져오기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;IMAP&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IMAP 접속&lt;/td&gt;
&lt;td&gt;메일 동기화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Relay&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;릴레이 발송&lt;/td&gt;
&lt;td&gt;SMTP 인증 후 발송&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 장애 시 자주 보이는 오류 &lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 223px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 상태 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt; 우선 의심할 것 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;421&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;서비스 일시 중단&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;상대 서버 장애&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;450&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Mailbox Busy&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;상대 서버 과부하&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;451&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Temporary Error&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;DNS, 네트워크, Greylisting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;452&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Storage 부족&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;상대 서버 용량 부족&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;550&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;영구 거부&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;계정 없음, Relay 금지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;551&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;User not local&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;전달 설정 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;552&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Mailbox Full&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;사서함 용량 초과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;553&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Invalid Mailbox&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;주소 형식 오류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;554&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Transaction Failed&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;스팸 차단, 정책 거부&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연결 오류&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 메시지 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Connection refused&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;상대 서버가 25번 포트를 거부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Connection timed out&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 또는 방화벽 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Host unreachable&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;라우팅 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;No route to host&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;경로 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;DNS lookup failed&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;MX/DNS 조회 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Relay denied&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;인증 없이 릴레이 시도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;User unknown&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;존재하지 않는 계정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Mailbox full&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;수신함 용량 초과&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2094&quot; data-start=&quot;2075&quot; data-section-id=&quot;u2mz5w&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;XMail 로그&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2337&quot; data-start=&quot;2096&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2127&quot; data-start=&quot;2096&quot; data-section-id=&quot;vpe3r9&quot;&gt;&lt;b&gt;AUTH=&lt;/b&gt; &amp;rarr; SMTP 로그인(인증) 관련&lt;/li&gt;
&lt;li data-end=&quot;2161&quot; data-start=&quot;2128&quot; data-section-id=&quot;nzz47c&quot;&gt;&lt;b&gt;MAIL=&lt;/b&gt; &amp;rarr; 발신자(MAIL FROM) 처리&lt;/li&gt;
&lt;li data-end=&quot;2193&quot; data-start=&quot;2162&quot; data-section-id=&quot;1m45d0h&quot;&gt;&lt;b&gt;RCPT=&lt;/b&gt; &amp;rarr; 수신자(RCPT TO) 처리&lt;/li&gt;
&lt;li data-end=&quot;2218&quot; data-start=&quot;2194&quot; data-section-id=&quot;1a1coln&quot;&gt;&lt;b&gt;DATA=&lt;/b&gt; &amp;rarr; 메일 본문 처리&lt;/li&gt;
&lt;li data-end=&quot;2247&quot; data-start=&quot;2219&quot; data-section-id=&quot;1evhshx&quot;&gt;&lt;b&gt;RECV=&lt;/b&gt; &amp;rarr; 서버가 메일 수신 완료&lt;/li&gt;
&lt;li data-end=&quot;2272&quot; data-start=&quot;2248&quot; data-section-id=&quot;1qvad1d&quot;&gt;&lt;b&gt;SMTP&lt;/b&gt; &amp;rarr; 외부 서버로 발송&lt;/li&gt;
&lt;li data-end=&quot;2300&quot; data-start=&quot;2273&quot; data-section-id=&quot;1oueq6a&quot;&gt;&lt;b&gt;LOCAL&lt;/b&gt; &amp;rarr; 내부 사용자에게 전달&lt;/li&gt;
&lt;li data-end=&quot;2337&quot; data-start=&quot;2301&quot; data-section-id=&quot;1ydprh&quot;&gt;&lt;b&gt;POP3 / IMAP&lt;/b&gt; &amp;rarr; 사용자가 메일을 가져감&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2477&quot; data-start=&quot;2339&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2477&quot; data-start=&quot;2339&quot; data-ke-size=&quot;size16&quot;&gt;AUTH, MAIL, RCPT, DATA, RECV 중 어디에서 실패했는지부터 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/리눅스</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/266</guid>
      <comments>https://ha7708.tistory.com/266#entry266comment</comments>
      <pubDate>Tue, 14 Jul 2026 13:18:40 +0900</pubDate>
    </item>
    <item>
      <title>SMTP 연동 실패 해결방법</title>
      <link>https://ha7708.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;Gmail의 Send mail as / 다른 주소에서 메일 보내기 기능을 활용하여&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;xxx@xxx.co.kr을 발신 주소로 추가하려고 하는데 SMTP 연결 수립 실패&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해석&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gmail 이 SMTP 서버에 로그인하여 메일을 보낼 수 있는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Gmail SMTP 설정 시도 옵션 (3가지) : Error Message&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;1. mail.xxx.co.kr / 465 / SSL&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr; Couldn`t connect to the server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;2. mail.xxx.co.kr / 587 / TLS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr; STARTTLS not supported&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;3. mail.xxx.co.kr / 25 / TLS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr; connection established but transaction timeout, state SENT_EHLO&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인해야 하는 것&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SMTP 서비스가 열려있는지&lt;/li&gt;
&lt;li&gt;SMTP AUTH 가능한지&lt;/li&gt;
&lt;li&gt;Submission 서비스가 있는지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&lt;b&gt;확인 단계&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;다음 명령을 실행.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1782702454440&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -tlnp | egrep ':25|:465|:587'

postconf | grep smtpd_sasl_auth_enable&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtpiwd/dJMcabLzUZv/Xmr53UD9PGNF0QjFXMQxkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtpiwd/dJMcabLzUZv/Xmr53UD9PGNF0QjFXMQxkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtpiwd/dJMcabLzUZv/Xmr53UD9PGNF0QjFXMQxkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdtpiwd%2FdJMcabLzUZv%2FXmr53UD9PGNF0QjFXMQxkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;57&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt; 메일 서버 프로그램(Mail Server Software) 으로 XMail 을 쓰고 있음을 확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;(사이트에 따라 대표적으로 XMail, SendMail, Postfix, Exim 등도 사용)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gmail 외부 SMTP 연동 테스트 결과 SMTP 서비스 포트 및 보안 방식 설정을 확인해야 하는 상황&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;mail.xxx.co.kr:465 / SSL&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Gmail에서 서버 연결 자체가 되지 않는 상태&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;465 SMTPS 포트가 서버에서 열려 있지 않거나, 방화벽 또는 메일 서비스 설정상 외부 접속이 제한되어 있을 가능성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;mail.xxx.co.kr:587 / TLS&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Gmail에서 STARTTLS 미지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;587 Submission 포트가 정상적으로 STARTTLS를 제공하지 않거나, 해당 포트가 SMTP Submission 용도로 구성되어 있지 않을 가능성이 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;mail.xxx.co.kr:25 / TLS&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;TCP 연결은 되었으나 EHLO 이후 SMTP 세션이 정상 진행되지 않고 타임아웃된 상태로 보입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;25번 포트는 일반적으로 서버 간 메일 송수신용으로 사용되며, Gmail의 &amp;ldquo;다른 주소에서 메일 보내기&amp;rdquo;와 같은 외부 SMTP AUTH 발송 용도에는 적합하지 않을 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 아래 항목을 서버 측에서 확인&lt;/b&gt; &lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;xxx.co.kr 메일 계정이 Gmail 외부 SMTP 연동을 지원하는 서비스 구성인지&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;xxx@xxx.co.kr&lt;/span&gt;&lt;span&gt; 계정의 SMTP AUTH 사용 가능 여부&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Gmail에서 사용 가능한 정확한 SMTP 서버명, 포트, 보안 방식&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;465 SSL 또는 587 STARTTLS 서비스 제공 여부&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;SMTP 로그인 ID가 전체 이메일 주소 형식인지 여부&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt; XMail 인증ID 질문이다. ( XMail 설정 확인 필요)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;외부망에서 465/587 포트 접근이 제한되어 있는지 여부&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 Gmail에 입력 가능한 정확한 설정값 확인하여 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인된 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SMTP 서버 : XMail&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열린 포트 : 25, 587&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;XMail 은?&lt;/b&gt;&lt;br /&gt;나 : xxx@xxx.com&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;발신&lt;/b&gt;&lt;br /&gt;xxx@xxx.com &lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; user@gmail.com 메일 송부시 &lt;br /&gt;웹메일 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; XMail &lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; gmail.com MX 레코드 조회 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; Google 메일 서버 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 상대 받은 편지함 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;수신&lt;/b&gt; &lt;br /&gt;aa@naver.com &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; xxx.xxx.com 메일 송부시 &lt;br /&gt;Naver 메일 서버 &amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; XMail &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 메일 저장 &amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 웹메일에서 조회 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;XMail&amp;nbsp;역할&lt;/b&gt; &lt;br /&gt;메일&amp;nbsp;발송 &lt;br /&gt;메일&amp;nbsp;수신 &lt;br /&gt;SMTP &lt;br /&gt;POP3 &lt;br /&gt;IMAP &lt;br /&gt;사용자&amp;nbsp;인증 &lt;br /&gt;등을&amp;nbsp;처리하는&amp;nbsp;엔진 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;사용자&amp;nbsp;입장에서의&amp;nbsp;XMail&lt;/b&gt; &lt;br /&gt;사용자 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 웹브라우저 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 웹메일(화면) &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; XMail&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추가 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SMTP는 연결되면 먼저 서버가 Hello 를 보냄.&lt;br /&gt;220 mail.xxx.co.kr&lt;br /&gt;&lt;br /&gt;클라이언트(Gmail)가 Reply 를 하는데&lt;br /&gt;EHLO gmail.com&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 서버는 자신이 지원하는 기능 목록을 아래와 같이 응답한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;250-STARTTLS&lt;/span&gt;&lt;br /&gt;&lt;span&gt;250 AUTH LOGIN&lt;/span&gt;&lt;br /&gt;&lt;span&gt;250 SIZE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;587은 Submission 포트 로써, GMail 은 250-STARTTLS 가 반드시 있기를 기대헀으나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XMail 은 STARTTLS 없음 으로 응답한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; STARTTLS not supported 응답을 사용자가 보게 된 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 여기서 openssl이 왜 실패했는가?&lt;/p&gt;
&lt;pre id=&quot;code_1782706494631&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;openssl s_client -starttls smtp -connect localhost:587&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부적으로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EHLO &lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; STARTTLS&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; SSL Handshake 순서로 진행하나&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;STARTTLS가 없으니 SSL Handshake를 시작할 수 없음.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; &lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&amp;nbsp; SSL handshake failure&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SMTP AUTH 확인 : &lt;/b&gt;AUTH LOGIN 을 지원하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SMTP 대화를 직접 해보면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1782706811948&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;telnet localhost 587&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byRo4j/dJMcadCqFgp/ozzk5zFkSKSu9Bgv7UZwFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byRo4j/dJMcadCqFgp/ozzk5zFkSKSu9Bgv7UZwFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byRo4j/dJMcadCqFgp/ozzk5zFkSKSu9Bgv7UZwFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyRo4j%2FdJMcadCqFgp%2Fozzk5zFkSKSu9Bgv7UZwFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;137&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOJypi/dJMcafmSxli/xul2XI5THwqKvuKwjEgx2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOJypi/dJMcafmSxli/xul2XI5THwqKvuKwjEgx2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOJypi/dJMcafmSxli/xul2XI5THwqKvuKwjEgx2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOJypi%2FdJMcafmSxli%2Fxul2XI5THwqKvuKwjEgx2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1016&quot; height=&quot;156&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1782707086505&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;250-wm4-157.speedhosting.co.kr         # 서버 이름
250-VRFY     # 메일 계정 존재 여부 확인 명령 지원.
250-ETRN   # 메일 큐 재전송 기능.
250-8BITMIME   # 한글 같은 8비트 문자 전송 지원.
250-PIPELINING   # SMTP 명령을 여러 개 한 번에 보내 성능을 높이는 기능.&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1782707101880&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;250-AUTH LOGIN PLAIN CRAM-MD5    # 이게 가장 중요. 'SMTP AUTH를 지원한다'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;511&quot; data-start=&quot;504&quot; data-section-id=&quot;16rycq3&quot;&gt;LOGIN&lt;/li&gt;
&lt;li data-end=&quot;519&quot; data-start=&quot;512&quot; data-section-id=&quot;175ucgi&quot;&gt;PLAIN&lt;/li&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;520&quot; data-section-id=&quot;1bcwu84&quot;&gt;CRAM-MD5&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방식으로 인증할 수 있다는 뜻.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ceo 계정의 외부 SMTP 사용이 활성화되어 있는지?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;b&gt;&quot;SMTP AUTH 기능 자체는 서버에서 지원한다&quot;&lt;/b&gt;는 것을 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데? 이건 있는데 250-STARTTLS 가 실패했다?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객이 TLS 를 선택하면, Gmail 은 STARTTLS 를 시도하였으나&lt;br /&gt;서버가 250-STARTTLS 를 광고하지 않았다는 뜻. (이것이 원인) &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-end=&quot;1749&quot; data-start=&quot;1698&quot; data-ke-size=&quot;size16&quot;&gt;보통 Submission 포트(587)는 STARTTLS와 함께 사용하는 것이 일반적인데,&lt;/p&gt;
&lt;p data-end=&quot;1749&quot; data-start=&quot;1698&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 587을 열어놓고 STARTTLS를 안 쓰는가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1749&quot; data-start=&quot;1698&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;XMail 운영 시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1792&quot; data-start=&quot;1780&quot; data-section-id=&quot;64civh&quot;&gt;내부 네트워크 전용&lt;/li&gt;
&lt;li data-end=&quot;1806&quot; data-start=&quot;1793&quot; data-section-id=&quot;1q5t6al&quot;&gt;SSL/TLS 미사용&lt;/li&gt;
&lt;li data-end=&quot;1821&quot; data-start=&quot;1807&quot; data-section-id=&quot;1y39feo&quot;&gt;별도 웹메일 인증 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등으로 운영하는 것일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SMTP AUTH는 켜져 있는데 STARTTLS가 없어 Gmail과 호환되지 않는 상태.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #5d5d5d; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 지원하지 않는 기능인지, 아니면 설정 문제인지 에 따라 조치사항이 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/리눅스</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/263</guid>
      <comments>https://ha7708.tistory.com/263#entry263comment</comments>
      <pubDate>Mon, 29 Jun 2026 13:32:04 +0900</pubDate>
    </item>
    <item>
      <title>RAID 복구하기</title>
      <link>https://ha7708.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고장 상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID0 &amp;rarr; SCSI 0:1 , &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt; &lt;/span&gt;&lt;/span&gt;0:2 (0:2 고장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID1 &amp;rarr; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:3, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:4 (0:4 고장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID5 &amp;rarr; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:5, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:6 (0:6 고장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 상황에서 SCSI 0:2, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:4, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;SCSI&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 0:6 을 제거함 (고장 시뮬레이션)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -l /dev/sd*
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /dev/sdb~/dev/sdh 까지 7개였던 장치가 /dev/sdb~dev/sde 까지 4개만 남았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QEpWp/dJMcagze0yd/azTrYc6XcTjhBO5yOE66zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QEpWp/dJMcagze0yd/azTrYc6XcTjhBO5yOE66zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QEpWp/dJMcagze0yd/azTrYc6XcTjhBO5yOE66zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQEpWp%2FdJMcagze0yd%2FazTrYc6XcTjhBO5yOE66zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;916&quot; height=&quot;746&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; RAID 1 가동&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID1 장치를 다시 가동하고, 확인한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --run /dev/md1
mdadm --detail /dev/md1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vHXQH/dJMcadCpMyX/2gJGnLS6XcqVZQiZHameL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vHXQH/dJMcadCpMyX/2gJGnLS6XcqVZQiZHameL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vHXQH/dJMcadCpMyX/2gJGnLS6XcqVZQiZHameL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvHXQH%2FdJMcadCpMyX%2F2gJGnLS6XcqVZQiZHameL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;943&quot; height=&quot;186&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /dev/md1 은 작동되고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 마운트 후 디스크 용량을 확인한다. 이후 RAID 1 에 저장했던 파일을 확인한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mount /dev/md1 /raid1
df
ls -l /raid1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cP4ihl/dJMcadbnw3F/SYtuBbRMx8M2OSxzfbmiAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cP4ihl/dJMcadbnw3F/SYtuBbRMx8M2OSxzfbmiAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cP4ihl/dJMcadbnw3F/SYtuBbRMx8M2OSxzfbmiAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcP4ihl%2FdJMcadbnw3F%2FSYtuBbRMx8M2OSxzfbmiAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;414&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RAID 1 장치 작동 상세히 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --detail /dev/md1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sm0Vp/dJMcaiqicDR/DU8k0KhKsYFGNv3P8FZP2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sm0Vp/dJMcaiqicDR/DU8k0KhKsYFGNv3P8FZP2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sm0Vp/dJMcaiqicDR/DU8k0KhKsYFGNv3P8FZP2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsm0Vp%2FdJMcaiqicDR%2FDU8k0KhKsYFGNv3P8FZP2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;766&quot; height=&quot;810&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;810&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 총 2개 디스크 중 1개(/dev/sdc)가 작동 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;RAID 5 장치 가동&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -l /dev/sd*
df
mdadm --detail --scan
mdadm --run /dev/md5
mount /dev/md5 /raid5
df
ls -l /raid5
mdadm --detail /dev/md5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vgCjZ/dJMcaff5Oof/qGc01DR3qPmUksHhXH9fYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vgCjZ/dJMcaff5Oof/qGc01DR3qPmUksHhXH9fYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vgCjZ/dJMcaff5Oof/qGc01DR3qPmUksHhXH9fYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvgCjZ%2FdJMcaff5Oof%2FqGc01DR3qPmUksHhXH9fYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;863&quot; height=&quot;831&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 3개 중 2개가 작동 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결함 허용을 제공하지 않는 RAID 0&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;mdadm --run /dev/md0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pbXXm/dJMcadoVHG1/1SLbt0lsBsx4Gf8HzOFWjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pbXXm/dJMcadoVHG1/1SLbt0lsBsx4Gf8HzOFWjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pbXXm/dJMcadoVHG1/1SLbt0lsBsx4Gf8HzOFWjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpbXXm%2FdJMcadoVHG1%2F1SLbt0lsBsx4Gf8HzOFWjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;652&quot; height=&quot;60&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RAID 0 장치의 경우 데이터 유실 시 1개 디스크로는 작동 자체를 하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 실습을 진행하기 위해 RAID 0 장치를 중지시킨 후 /etc/fstab 에서도 제거한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --stop /dev/md0
nano /etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V9qhZ/dJMcacQ7fFx/qRrbIVFFKfXjegAOpkCykK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V9qhZ/dJMcacQ7fFx/qRrbIVFFKfXjegAOpkCykK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V9qhZ/dJMcacQ7fFx/qRrbIVFFKfXjegAOpkCykK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV9qhZ%2FdJMcacQ7fFx%2FqRrbIVFFKfXjegAOpkCykK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;894&quot; height=&quot;488&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 재부팅한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재부팅 후 df, ls 등으로 확인해 보면 /raid1 과 /raid5 디렉터리는 작동하고 있고, 데이터도 안전함을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;원상 복구하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RAID 0 구성은 원상복구 가능하나 그 안의 데이터는 살릴 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;새로운 물리 디스크 추가&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SCSI 0:2 (/dev/sdc) : /raid0&lt;/li&gt;
&lt;li&gt;SCSI 0:4 (/dev/sde) : /raid1&lt;/li&gt;
&lt;li&gt;SCSI 0:6 (/dev/sdg) : /raid5&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크를 추가했다고 자동으로 복구되는 것은 아니다. 수동 복구를 진행해야 한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --detail /dev/md1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WAjec/dJMcaf78efq/oyzNJs4iVzNY69Pxf3Ybw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WAjec/dJMcaf78efq/oyzNJs4iVzNY69Pxf3Ybw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WAjec/dJMcaf78efq/oyzNJs4iVzNY69Pxf3Ybw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWAjec%2FdJMcaf78efq%2FoyzNJs4iVzNY69Pxf3Ybw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;802&quot; height=&quot;817&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RAID 1 장치 구성을 다시 살펴보면 /dev/sdc1 에서 /dev/sdd1 으로 변했다는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;새로 장착한 디스크를 이용하여 RAID0, RAID1, RAID5 복구하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 디스크 /dev/sdc (SCSI 0:2) 의 파일 시스템을 만든다&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;fdisk /dev/sdc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1367&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D4SRi/dJMcaicPXMN/9dBIq05wioHQ4KGgkdyrMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D4SRi/dJMcaicPXMN/9dBIq05wioHQ4KGgkdyrMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D4SRi/dJMcaicPXMN/9dBIq05wioHQ4KGgkdyrMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD4SRi%2FdJMcaicPXMN%2F9dBIq05wioHQ4KGgkdyrMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1367&quot; height=&quot;722&quot; data-origin-width=&quot;1367&quot; data-origin-height=&quot;722&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct4Dzn/dJMcaaTlvP3/oE6tfX0M1ntTyemKrOgUXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct4Dzn/dJMcaaTlvP3/oE6tfX0M1ntTyemKrOgUXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct4Dzn/dJMcaaTlvP3/oE6tfX0M1ntTyemKrOgUXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct4Dzn%2FdJMcaaTlvP3%2FoE6tfX0M1ntTyemKrOgUXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;893&quot; height=&quot;237&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 시스템 유형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 일반 Linux 파티션(83) / Linux Swap(82) / Linux RAID autodetect (fd) 중 택 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls /dev/sd*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JRQx3/dJMcaa6VD69/sMKwgmmtTCuK2qWUkqKkH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JRQx3/dJMcaa6VD69/sMKwgmmtTCuK2qWUkqKkH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JRQx3/dJMcaa6VD69/sMKwgmmtTCuK2qWUkqKkH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJRQx3%2FdJMcaa6VD69%2FsMKwgmmtTCuK2qWUkqKkH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;93&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RAID0 장치(md0) 를 중지하고 다시 구성&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --stop /dev/md0
mdadm --create /dev/md0 --level=0 --raid-devies=2 /dev/sdb1 /dev/sdc1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nt9E4/dJMcageXjKC/vlYnry0nMkAS1iYMw5tOsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nt9E4/dJMcageXjKC/vlYnry0nMkAS1iYMw5tOsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nt9E4/dJMcageXjKC/vlYnry0nMkAS1iYMw5tOsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnt9E4%2FdJMcageXjKC%2FvlYnry0nMkAS1iYMw5tOsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1065&quot; height=&quot;237&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm --detail /dev/md0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM0cUq/dJMcacDGnqG/A8IcAUjIpsmAQocNbNCSq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM0cUq/dJMcacDGnqG/A8IcAUjIpsmAQocNbNCSq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM0cUq/dJMcacDGnqG/A8IcAUjIpsmAQocNbNCSq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM0cUq%2FdJMcacDGnqG%2FA8IcAUjIpsmAQocNbNCSq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;760&quot; height=&quot;104&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RAID 0 장치가 처음 구성했을 때와 동일하게 잘 작동한다. (데이터 복구는 불가)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;RAID 1, RAID 5 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID 0 에서 했던 작업과 마찬가지로, 새로운 디스크 /dev/sde (SCSI 0:4), /dev/sdg (SCSI 0:6) 의 파일 시스템을 만든다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;fdisk /dev/sde
fdisk /dev/sdg
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID1 은 디스크가 1개 빠졌을 뿐 잘 작동하고 있다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm /dev/md1 --add /dev/sde1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yCS0W/dJMcaaMzQTA/6k0xkL5Bdj7tRKqeVWHVLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yCS0W/dJMcaaMzQTA/6k0xkL5Bdj7tRKqeVWHVLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yCS0W/dJMcaaMzQTA/6k0xkL5Bdj7tRKqeVWHVLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyCS0W%2FdJMcaaMzQTA%2F6k0xkL5Bdj7tRKqeVWHVLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;588&quot; height=&quot;62&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 새로운 디스크 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 방식으로 RAID 5 도 재구성한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mdadm /dev/md5 --add /dev/sdg1
mdadm --detail /dev/md1
mdadm --detail /dev/md5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkZzND/dJMcaiw5Fh9/q5up8C3Y4mK0rq20fYBKak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkZzND/dJMcaiw5Fh9/q5up8C3Y4mK0rq20fYBKak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkZzND/dJMcaiw5Fh9/q5up8C3Y4mK0rq20fYBKak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkZzND%2FdJMcaiw5Fh9%2Fq5up8C3Y4mK0rq20fYBKak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;589&quot; height=&quot;100&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgnJdl/dJMcaiw5Fig/nRzzrKTeViAtMKwmkpV86k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgnJdl/dJMcaiw5Fig/nRzzrKTeViAtMKwmkpV86k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgnJdl/dJMcaiw5Fig/nRzzrKTeViAtMKwmkpV86k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgnJdl%2FdJMcaiw5Fig%2FnRzzrKTeViAtMKwmkpV86k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;777&quot; height=&quot;142&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 정상 복구된 화면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 만약 여기서 RAID 5 의 /dev/sdg1 (4번 장치) 가 &amp;lsquo;spare rebuilding /dev/sdg1&amp;rsquo; 로 표시된다면 현재 RAID 5 를 재구성하는 상태인 것이므로, 잠시 기다렸다가 다시 실행하면 된다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;nano /etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X1oUm/dJMcabSc6Bg/v8GR7sjDeBzeGN3dMkvvX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X1oUm/dJMcabSc6Bg/v8GR7sjDeBzeGN3dMkvvX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X1oUm/dJMcabSc6Bg/v8GR7sjDeBzeGN3dMkvvX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX1oUm%2FdJMcabSc6Bg%2Fv8GR7sjDeBzeGN3dMkvvX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;911&quot; height=&quot;434&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 주석 처리했던 /dev/md0 내용을 다시 살려준다 (실무에서는 입력해야 함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 작업은 mdadm 버그 때문에 진행한다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;nano /etc/mdadm/mdadm.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nnbpx/dJMcabxUUzL/t1EJJDyl4BkpyP5yJyjugK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nnbpx/dJMcabxUUzL/t1EJJDyl4BkpyP5yJyjugK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nnbpx/dJMcabxUUzL/t1EJJDyl4BkpyP5yJyjugK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnnbpx%2FdJMcabxUUzL%2Ft1EJJDyl4BkpyP5yJyjugK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;157&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARRAY 3줄을 삭제했다가 저장하고 다시 추가한 후, reboot 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;복구된 RAID 의 데이터 확인하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 RAID 0 파일은 복구되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 동일한지 보기 위하여 cmp 명령을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 파일이 동일하면 아무 메시지도 나오지 않고, 다르면 다른 부분의 첫 위치가 출력된다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;cmp /raid1/testFile /raid5/testFile
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 둘 다 정상 파일이므로 동일 파일이다. (아무 메시지도 나오지 않음)&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;cmp /raid0/testFile /raid5/testFile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhWp3a/dJMcaay4Ery/UF6vToezXuZJ84TjGTHM11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhWp3a/dJMcaay4Ery/UF6vToezXuZJ84TjGTHM11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhWp3a/dJMcaay4Ery/UF6vToezXuZJ84TjGTHM11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhWp3a%2FdJMcaay4Ery%2FUF6vToezXuZJ84TjGTHM11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;560&quot; height=&quot;65&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;65&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RAID 0 의 파일은 정상 파일이 아니므로 파일이 다르다는 메시지가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 /raid0 의 파일은 정상이 아니므로 마운트를 해제한 후 다시 포맷, 재마운트해주는 편이 좋다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;umount /dev/md0
mkfs.ext4 /dev/md0
mount /dev/md0 /raid0
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;cmp /raid1/testFile /raid5/testFile
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과 화면은 동일하게 보인다. 그러나 차이가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RAID 1 방식의 경우&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고장 직후&lt;/b&gt;: &amp;lsquo;testFile&amp;rsquo; 은 SCSI 0:3 에만 들어 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복구 후&lt;/b&gt;: &amp;lsquo;testFile&amp;rsquo; 은 SCSI 0:3, SCSI 0:4 모두에 들어 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RAID 5 방식의 경우&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고장 직후&lt;/b&gt;: &amp;lsquo;testFile&amp;rsquo; 은 SCSI 0:6 이 없으므로 이를 나머지 2개로 예측해서 사용해야 하므로 속도 저하&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복구 후&lt;/b&gt;: 값을 예측할 필요가 없어졌으므로 이로 인한 속도 저하가 발생하지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/리눅스</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/262</guid>
      <comments>https://ha7708.tistory.com/262#entry262comment</comments>
      <pubDate>Sat, 27 Jun 2026 13:42:20 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 :: 웹 서비스 접속 지연 트러블슈팅 (DNS, curl, DevTools 활용)</title>
      <link>https://ha7708.tistory.com/261</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 내 PC 또는 회사망에서 테스트&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;dust&quot;&gt;&lt;code&gt;curl -o /dev/null -s -w \
&quot;DNS:%{time_namelookup}\nConnect:%{time_connect}\nTLS:%{time_appconnect}\nTTFB:%{time_starttransfer}\nTotal:%{time_total}\n&quot; \
&amp;lt;https://도메인/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rCEsJ/dJMcajbww0t/vid2M3RH7VRP4yVSYa9o7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rCEsJ/dJMcajbww0t/vid2M3RH7VRP4yVSYa9o7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rCEsJ/dJMcajbww0t/vid2M3RH7VRP4yVSYa9o7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrCEsJ%2FdJMcajbww0t%2Fvid2M3RH7VRP4yVSYa9o7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;337&quot; height=&quot;125&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table id=&quot;387ade4d-adab-80df-9da6-c4831ade4d00&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;387ade4d-adab-80f2-b765-eeb04c913e1e&quot;&gt;
&lt;td id=&quot;EBl&amp;gt;&quot;&gt;&lt;b&gt;DNS 높음&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;~Gp:&quot;&gt;DNS/네임서버 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;387ade4d-adab-80d1-917a-e8593da3f698&quot;&gt;
&lt;td id=&quot;EBl&amp;gt;&quot;&gt;&lt;b&gt;Connect 높음&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;~Gp:&quot;&gt;네트워크/방화벽/서버 TCP 응답 지연&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;387ade4d-adab-80b3-ad5f-ce1c9ae34ad8&quot;&gt;
&lt;td id=&quot;EBl&amp;gt;&quot;&gt;&lt;b&gt;TLS 높음&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;~Gp:&quot;&gt;SSL 핸드셰이크 지연&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;387ade4d-adab-8066-a30b-fc718e37b9cc&quot;&gt;
&lt;td id=&quot;EBl&amp;gt;&quot;&gt;&lt;b&gt;TTFB 높음&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;~Gp:&quot;&gt;웹서버/PHP/DB 처리 지연&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;387ade4d-adab-80e8-9a14-edffbfbcfb7b&quot;&gt;
&lt;td id=&quot;EBl&amp;gt;&quot;&gt;&lt;b&gt;Total만 높음&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;~Gp:&quot;&gt;이미지/JS/CSS 등 리소스 용량 문제 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TTFB가 높으면 서버/PHP/DB,&lt;br /&gt;Total만 높으면 프론트 리소스,&lt;br /&gt;Connect/TLS가 높으면 네트워크/SSL/방화벽 쪽 문제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;참고: Curl 순서&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;DNS 조회&lt;/li&gt;
&lt;li&gt;TCP 연결&lt;/li&gt;
&lt;li&gt;SSL 핸드셰이크&lt;/li&gt;
&lt;li&gt;웹 응답(TTFB)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;참고: 조회시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 입력&lt;br /&gt;&amp;darr;&lt;br /&gt;DNS 조회&lt;br /&gt;&amp;darr;&lt;br /&gt;IP 획득&lt;br /&gt;&amp;darr;&lt;br /&gt;TCP 연결&lt;br /&gt;&amp;darr;&lt;br /&gt;SSL&lt;br /&gt;&amp;darr;&lt;br /&gt;페이지 로딩&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;정상&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS: 0.01~0.1&lt;br /&gt;Connect: 0.01~0.1&lt;br /&gt;TLS: 0.05~0.3&lt;br /&gt;TTFB: 0.1~1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;비정상&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS: 11.520&lt;br /&gt;Connect: 11.520&lt;br /&gt;TLS: 0.000&lt;br /&gt;TTFB: 0.000&lt;br /&gt;Total: 12.062&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;b&gt;DNS 조회 단계에서 이미 11초 이상 소요&lt;/b&gt;되고 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 그런데 사진상에는 TLS 가 0 이다 (0.1 도 아니고) 즉,&amp;hellip;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;DNS 조회 후 HTTPS 연결 자체가 제대로 성립되지 못한 것&amp;rdquo; 일 확률이 높다고 판단함.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m941C/dJMcacjc0nF/Mrf2P6qteBCe7v4sySylfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m941C/dJMcacjc0nF/Mrf2P6qteBCe7v4sySylfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m941C/dJMcacjc0nF/Mrf2P6qteBCe7v4sySylfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm941C%2FdJMcacjc0nF%2FMrf2P6qteBCe7v4sySylfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;590&quot; height=&quot;343&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uMDwk/dJMcageTeu2/gPfBwYhuiWz7OsB6TNk4jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uMDwk/dJMcageTeu2/gPfBwYhuiWz7OsB6TNk4jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uMDwk/dJMcageTeu2/gPfBwYhuiWz7OsB6TNk4jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuMDwk%2FdJMcageTeu2%2FgPfBwYhuiWz7OsB6TNk4jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;303&quot; height=&quot;95&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;time nslookup www.xxx.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVKiVV/dJMcaiRiLOn/q1EHYqWeGZdUpGpUxtOb7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVKiVV/dJMcaiRiLOn/q1EHYqWeGZdUpGpUxtOb7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVKiVV/dJMcaiRiLOn/q1EHYqWeGZdUpGpUxtOb7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVKiVV%2FdJMcaiRiLOn%2Fq1EHYqWeGZdUpGpUxtOb7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;358&quot; height=&quot;216&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 여기서 11초 가까이 걸리면 DNS 문제 확정이었으나, 2초로 끝남. 이 문제는 아니었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면, &amp;ldquo;DNS 서버 자체가 불안정한가?&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 스크립트를 5회 정도 반복실행하며 비교&lt;/p&gt;
&lt;pre class=&quot;puppet&quot;&gt;&lt;code&gt;for i in {1..5}
do
  dig www.xxx.com | grep &quot;Query time&quot;
done
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;puppet&quot;&gt;&lt;code&gt;for i in {1..5}
do
  nslookup www.xxx.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKruaA/dJMcaiRiLQQ/SxtpwQxd9dxUXPSaxuN0r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKruaA/dJMcaiRiLQQ/SxtpwQxd9dxUXPSaxuN0r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKruaA/dJMcaiRiLQQ/SxtpwQxd9dxUXPSaxuN0r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKruaA%2FdJMcaiRiLQQ%2FSxtpwQxd9dxUXPSaxuN0r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;471&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 결과는 사진처럼 정상 범위였음. 즉, DNS 서버 자체 문제는 아님.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;그런데, dig 는 정상인데 getent 는 응답이 없었다 !!!&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;dig www.xxx.com
getent hosts www.xxx.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;b&gt;DNS 서버 문제가 아닌 리눅스의 이름해석(Name Resolution) 설정 문제&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;dig/nslookup 명령의 경우&lt;/b&gt;: DNS 서버 직접 질의. /etc/nsswitch.conf 영향을 거의 안 받음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;curl/ping/getent 경우:&lt;/b&gt; curl &amp;rarr; glibc resolver &amp;rarr; nsswitch.conf &amp;rarr; DNS 순이므로 영향을 받음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리하여, 아래 조치를 취하여 해결 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;변경 전&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이트 접속 &amp;rarr; &lt;a href=&quot;http://ns1.xxx.co.kr&quot;&gt;ns1.xxx.co.kr&lt;/a&gt; 조회 필요 &amp;rarr; &lt;a href=&quot;http://ns1.xxx.co.kr&quot;&gt;ns1.xxx.co.kr&lt;/a&gt; IP 조회 &amp;rarr; DNS 질의 &amp;rarr; 응답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;변경 후&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이트 접속 &amp;rarr; 111.222.333.444 에 직접 질의 &amp;rarr; 응답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 네임서버 FQDN 등록 문제&lt;/b&gt; : 자체 조회가 느리거나 실패&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://ns1.domain.com&quot;&gt;ns1.domain.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://ns2.domain.com&quot;&gt;ns2.domain.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. DNS 순환 참조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://domain.com&quot;&gt;domain.com&lt;/a&gt; &amp;rarr; &lt;a href=&quot;http://ns1.domain.com&quot;&gt;ns1.domain.com&lt;/a&gt; &amp;rarr; &lt;a href=&quot;http://domain.com&quot;&gt;domain.com&lt;/a&gt; 식으로 DNS를 또 물어봄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 특정 DNS 서버 응답 지연&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://ns1.domain.com&quot;&gt;ns1.domain.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;은 살아있는데 A 레코드 조회가 몇 초씩 걸림. IP 직접 입력하면 우회됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rArr; 해당 문제로 해결되어 IP를 직접 입력하여 해결 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;기타 점검 항목&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 서버에서 부하 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;top
uptime       # Load Average가 CPU 코어 수보다 높으면 서버 부하 의심.
free -m      # 메모리 부족 + swap 사용 많으면 느려질 수 있음.
df -h        # 디스크 90% 이상이면 위험
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 확인 결과 부하 문제는 아니었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 웹 로그 실시간 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;tail -f /opt/apm/apache/logs/access_log
tail -f /opt/apm/apache/logs/error_log

tail -f /var/log/httpd/access_log
tail -f /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 접속할 때 로그가 늦게 찍히면 서버 처리 지연 가능성이 큼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 느린 요청 찾기&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;tail -n 1000 /opt/apm/apache/logs/access_log | awk '{print $1,$4,$7,$9,$10}' | tail
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. DB 의심 시&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;mysqladmin processlist
mysqladmin status
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SHOW FULL PROCESSLIST;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Sleep 말고 Query가 오래 떠 있으면 DB 병목 가능성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 페이지 진입 시점부터 느려지므로 DB 문제는 아니라고 판단&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/리눅스</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/261</guid>
      <comments>https://ha7708.tistory.com/261#entry261comment</comments>
      <pubDate>Mon, 22 Jun 2026 15:51:52 +0900</pubDate>
    </item>
    <item>
      <title>Spring :: 날짜/시간 자동 포맷팅</title>
      <link>https://ha7708.tistory.com/260</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;LocalDateFormatter.java&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770813674544&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.controller.formatter;

import org.springframework.format.Formatter;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

// 날짜/시간 주의
// 브라우저 : 문자열로 전송
// 서버 : LocalDate 또는 LocalDateTime 으로 처리함
// 그러므로 이를 자동으로 변환해주는 이 클래스를 정의한다.
// 이후 스프링 MVC 동작 과정에서 사용될 수 있도록 설정을 추가해주어야 함.
public class LocalDateFormatter implements Formatter&amp;lt;LocalDate&amp;gt; {
    @Override
    public LocalDate parse(String text, Locale locale) {
        return LocalDate.parse(text, DateTimeFormatter.ofPattern(&quot;yyyy-MM-dd&quot;));
    }

    @Override
    public String print(LocalDate object, Locale locale) {
        return DateTimeFormatter.ofPattern(&quot;yyyy-MM-dd&quot;).format(object);
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 이것이 MVC 동작 과정에서 사용될 수 있도록 설정을 추가해 주어야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; CustomServletConfig&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CustomServletConfig.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770813700549&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.zerock.mallapi.controller.formatter.LocalDateFormatter;

@Configuration
public class CustomServletConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addFormatter(new LocalDateFormatter());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/Spring Framework</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/260</guid>
      <comments>https://ha7708.tistory.com/260#entry260comment</comments>
      <pubDate>Wed, 11 Feb 2026 21:41:59 +0900</pubDate>
    </item>
    <item>
      <title>React :: 파일 업로드, Multipart/form-data</title>
      <link>https://ha7708.tistory.com/259</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;전달되는 데이터는 주로 3가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JSON 형식 데이터 (REST API 표준)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mltipart/form-data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- application/x-www-form-urlencoded (옛 HTML form)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 multipart/form-data 에 대해 적는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React에서 multipart/form-data = new FormData() 만들고 파일/값 append 후 POST 하는 식이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 파일 선택 input &lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1770812289311&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;file&quot; onChange={e =&amp;gt; setSelectedFile(e.target.files[0])} /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;File { name, size, type, lastModified } 형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 그대로 formData.append()&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 기본 구조 (파일 + 텍스트 같이 보내기) &lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1770812225349&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const upload = async () =&amp;gt; {
  const formData = new FormData();

  formData.append(&quot;title&quot;, &quot;hello&quot;);
  formData.append(&quot;writer&quot;, &quot;user00&quot;);
  formData.append(&quot;file&quot;, selectedFile);   // &amp;larr; File 객체

  await fetch(&quot;/api/upload&quot;, {
    method: &quot;POST&quot;,
    body: formData
  });
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의 : Content-Type 직접 지정 X&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 브라우저가 boundary 포함해서 자동 생성함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 여러 파일 업로드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;React&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812365425&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (let i = 0; i &amp;lt; files.length; i++) {
  formData.append(&quot;files&quot;, files[i]);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812389327&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@RequestParam List&amp;lt;MultipartFile&amp;gt; files&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; JSON + 파일 같이 보내기 (실무)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;React&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812416398&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const dto = {
  title: &quot;hello&quot;,
  writer: &quot;user00&quot;
};

formData.append(
  &quot;dto&quot;,
  new Blob([JSON.stringify(dto)], { type: &quot;application/json&quot; })
);

formData.append(&quot;file&quot;, selectedFile);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812434606&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@PostMapping(&quot;/upload&quot;)
public ResponseEntity&amp;lt;?&amp;gt; upload(
        @RequestPart(&quot;dto&quot;) TodoDTO dto,
        @RequestPart(&quot;file&quot;) MultipartFile file
) {}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;React&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;axios&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812522892&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const formData = new FormData();
formData.append(&quot;file&quot;, file);

await axios.post(&quot;/api/upload&quot;, formData);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 업로드 진행률&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812596817&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;await axios.post(&quot;/upload&quot;, formData, {
  onUploadProgress: (e) =&amp;gt; {
    const percent = Math.round((e.loaded * 100) / e.total);
    console.log(percent + &quot;%&quot;);
  }
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 미리보기 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812562008&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const preview = URL.createObjectURL(file);
&amp;lt;img src={preview} /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Spring&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 파일 경우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812656546&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@PostMapping(&quot;/upload&quot;)
public ResponseEntity&amp;lt;?&amp;gt; upload(
        @RequestParam String title,
        @RequestParam MultipartFile file
) {}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; DTO + 파일 경우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770812689864&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@PostMapping(&quot;/upload&quot;)
public ResponseEntity&amp;lt;?&amp;gt; upload(
        @RequestPart(&quot;dto&quot;) TodoDTO dto,
        @RequestPart(&quot;file&quot;) MultipartFile file
) {}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프론트엔드/React</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/259</guid>
      <comments>https://ha7708.tistory.com/259#entry259comment</comments>
      <pubDate>Wed, 11 Feb 2026 21:26:42 +0900</pubDate>
    </item>
    <item>
      <title>Spring :: 페이징 처리 (요약)</title>
      <link>https://ha7708.tistory.com/258</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;전체 흐름&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PageRequestDTO&amp;nbsp;&amp;rarr;&amp;nbsp;Pageable&amp;nbsp;변환 &lt;br /&gt;&amp;rarr;&amp;nbsp;Repository&amp;nbsp;페이징&amp;nbsp;조회 &lt;br /&gt;&amp;rarr;&amp;nbsp;Entity&amp;nbsp;&amp;rarr;&amp;nbsp;DTO&amp;nbsp;변환 &lt;br /&gt;&amp;rarr;&amp;nbsp;PageResponseDTO&amp;nbsp;생성&amp;nbsp;(페이지&amp;nbsp;계산) &lt;br /&gt;&amp;rarr;&amp;nbsp;Controller&amp;nbsp;/&amp;nbsp;API&amp;nbsp;반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;PageRequestDTO :: 페이징 객체 정의&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770807534712&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

@Data // Getter + Setter + toString + equals + hashCode + RequiredArgsConstructor 자동 생성
@SuperBuilder // 상속 구조에서도 Builder 패턴을 쓰게 해주는 Lombok
@AllArgsConstructor
@NoArgsConstructor
public class PageRequestDTO {
    @Builder.Default // Builder로 객체 생성할 때 &amp;ldquo;기본값 유지&amp;rdquo; 하도록 함 : Builder는 기본적으로는 초기값을 무시하므로
    private int page = 1; // 기본값이 0이므로 1로 고정시키기 위함임

    @Builder.Default // 외부에서 Builder 패턴을 써서 size를 변경하도록 시도하더라도 변경되지 않도록 함
    private int size = 10;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;PageResponseDTO :: 페이징 계산법 정의&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770807602865&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.dto;

import lombok.Builder;
import lombok.Data;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

// PageResponseDTO :: 페이징 계산법 정의
@Data
public class PageResponseDTO&amp;lt;E&amp;gt; {
    private List&amp;lt;E&amp;gt; dtoList;
    private List&amp;lt;Integer&amp;gt; pageNumList;
    private PageRequestDTO pageRequestDTO;
    private boolean prev, next;
    private int totalCount, prevPage, nextPage, totalPage, current;

    @Builder(builderMethodName = &quot;withAll&quot;)
    public PageResponseDTO(List&amp;lt;E&amp;gt; dtoList, PageRequestDTO pageRequestDTO, long totalCount) {
        this.dtoList = dtoList; // 현재 페이지 데이터
        // ★ 이때의 pageRequestDTO 는 사용자가 요청한 페이지번호 &amp;amp; 페이지 크기 값을 가지고 있음
        this.pageRequestDTO = pageRequestDTO;
        this.totalCount = (int) totalCount; // 전체 데이터 개수

        // end : 페이지를 10개 단위 블록으로 묶기
        // 예를 들어 page가 13일 때..... 13 / 10 = 1.3 &amp;rarr; ceil = 2
        // &amp;rarr; 2 * 10 = 20 &amp;rarr; end = 20
        int end = (int) (Math.ceil(pageRequestDTO.getPage() / 10.0)) * 10;

        // start : 현재 블록 시작
        // int start = end - 9;
        // 20 - 9 = 11
        int start = end - 9;

        // last : 전체 페이지 개수
        // 235 / 10 = 23.5 &amp;rarr; ceil = 24  &amp;rarr; 전체 페이지 = 24
        int last = (int) (Math.ceil((totalCount / (double) pageRequestDTO.getSize())));

        // end 보정 : 끝 페이지 초과 방지. 작은 쪽의 값 따름
        end = end &amp;gt; last ? last : end;

        // 현재 블록 전 or 후에도 데이터가 남아있으면 true
        this.prev = start &amp;gt; 1;
        this.next = totalCount &amp;gt; end * pageRequestDTO.getSize();
        this.pageNumList = IntStream.rangeClosed(start, end).boxed().collect(Collectors.toList());

        if (prev) this.prevPage = start - 1;
        if (next) this.nextPage = end + 1;

        this.totalPage = this.pageNumList.size(); // 현재 블록 페이지 개수
        this.current = pageRequestDTO.getPage();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;TodoServiceImpl :: 페이징 수행&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770807682912&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Service
@Transactional // 서비스객체 구성시 필수
@Log4j2
@RequiredArgsConstructor // 생성자 자동 주입
public class TodoServiceImpl implements TodoService {
    // 자동주입 대상은 final 로
    private final ModelMapper modelMapper;
    private final TodoRepository todoRepository;
    
    // 페이징 수행
    @Override
    public PageResponseDTO&amp;lt;TodoDTO&amp;gt; list(PageRequestDTO pageRequestDTO) {
        // pageRequestDTO 는 사용자가 요청한 페이지번호, 페이지 크기를 가지고 있음 (파라미터로 넘어옴)

        Pageable pageable =
                PageRequest.of(
                        pageRequestDTO.getPage() - 1, // 1 페이지가 0 이므로 주의
                        pageRequestDTO.getSize(),
                        Sort.by(&quot;tno&quot;).descending()
                );  // 사용자가 요청한 페이지와 페이지 크기 정보를 이용하여 Pageable 객체를 만듬
        Page&amp;lt;Todo&amp;gt; result = todoRepository.findAll(pageable); // 앞서 만든 Pageable 객체를 사용하여 조회

        List&amp;lt;TodoDTO&amp;gt; dtoList = result.getContent().stream()
                .map(todo -&amp;gt; modelMapper.map(todo, TodoDTO.class))
                .collect(Collectors.toList());

        long totalCount = result.getTotalElements();

        // PageResponseDTO 객체를 Builder로 생성
        // 이 Builder가 호출하는 건 DTO 생성자 임 -&amp;gt; 페이지 버튼 구조 계산 용도
        PageResponseDTO&amp;lt;TodoDTO&amp;gt; responseDTO =
                PageResponseDTO.&amp;lt;TodoDTO&amp;gt;withAll() // @Builder(builderMethodName = &quot;withAll&quot;) = builder() 대신 withAll() 쓰기로 함
                        .dtoList(dtoList) // 현재 페이지 데이터
                        .pageRequestDTO(pageRequestDTO) // 요청 정보(page,size)
                        .totalCount(totalCount) // 전체 데이터 개수
                        .build();

        return responseDTO;
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;TEST CASE&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770807939226&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.service;

import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.zerock.mallapi.dto.PageRequestDTO;
import org.zerock.mallapi.dto.PageResponseDTO;
import org.zerock.mallapi.dto.TodoDTO;

import java.time.LocalDate;

@SpringBootTest
@Log4j2
public class TodoServiceTests {

    @Autowired
    private TodoService todoService;

    // 페이징 테스트
    @Test
    public void testList() {
        PageRequestDTO pageRequestDTO = PageRequestDTO.builder()
                .page(2)
                .size(10)
                .build();

        PageResponseDTO&amp;lt;TodoDTO&amp;gt; response = todoService.list(pageRequestDTO);
        
        log.info(response);
    }
    
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;추가 코드 : ModelMapper 정의&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770808019342&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.zerock.mallapi.config;

import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RootConfig {

    @Bean
    public ModelMapper getMapper() {
        ModelMapper modelMapper = new ModelMapper();
        modelMapper.getConfiguration()
                .setFieldMatchingEnabled(true) //getter/setter 없어도 필드 직접 매칭, private 필드도 매핑 가능
                .setFieldAccessLevel(org.modelmapper.config.Configuration.AccessLevel.PRIVATE) // private 필드까지 접근 허용
                .setMatchingStrategy(MatchingStrategies.LOOSE); // 느슨한 매칭. 필드 이름이 완전히 같지 않아도 매핑

        return modelMapper;
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드/Spring Framework</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/258</guid>
      <comments>https://ha7708.tistory.com/258#entry258comment</comments>
      <pubDate>Wed, 11 Feb 2026 20:03:56 +0900</pubDate>
    </item>
    <item>
      <title>정처기 :: 시스템 보안 구축</title>
      <link>https://ha7708.tistory.com/257</link>
      <description>&lt;h1&gt;&lt;b&gt;서비스 공격 유형&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;서비스 거부 (DoS; Denial of Service)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버의 자원을 고갈시킬 복적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 서버에 집중적으로 전송시키는 것&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Ping of Death, SMURFING, SYN Flooding, TearDrop, Land, DDoS&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Ping of Death (죽음의 핑)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ping 명령 전송시 패킷 크기를 인터넷 프로토콜 허용 범위 (65,536 바이트) 이상으로 전송 하여 대상 네트워크를 마비시키는 것&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수신자는 전송된 패킷을 재조립해야 하는 부담 + 분할된 패킷들의 ICMP Ping 메시지에 응답 처리 부담 으로 시스템이 다운되게 됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;jolt, sPING, ICMP bug, IceNetwork&lt;/b&gt; 등의 변종 공격에 대비하여 ICMP Ping 메시지가 전송되지 못하도록 방화벽에서 차단하는 기술이 개발되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SMURFING (스머핑)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP 나 ICMP 특성을 악용한 것. 내부 네트워크를 이용하여 증폭시킴, 내외부 공격.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개의 요청 &amp;rarr; 수십/수백 응답으로 증폭됨 (공격 트래픽 &lt;b&gt;기하급수적으로 증가함)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자는 송신 주소를 공격 대상지의 IP 주소로 위장, 수신지로는 공격 대상지 라우터의 브로드캐스트로 하여 패킷을 전송&lt;/li&gt;
&lt;li&gt;해당 네트워크 내의 모든 컴퓨터가 수신된 패킷에 대한 응답 메시지를 송신 주소인 공격 대상지로 집중적으로 전송 &amp;rarr; 네트워크 과부하&lt;/li&gt;
&lt;li&gt;스머핑을 무력화하려면 각 네트워크 라우터 (기업의 경우 내부 라우터, L3 스위치, 방화벽) 에서 브로드캐스트 주소를 사용할 수 없게 미리 설정해 두면 된다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 참고: 라우팅은 유니캐스트 기반이고, 브로드캐스트는 ARP , DHCP 같은 2계층에서만 사용함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스머핑 흐름&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;공격자가 &lt;b&gt;ICMP Echo Request (ping)&lt;/b&gt; 보냄&lt;/li&gt;
&lt;li&gt;출발지 IP를 &lt;b&gt;피해자 IP로 위조&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;목적지는 &lt;b&gt;브로드캐스트 주소&lt;/b&gt; (예: 192.168.1.255)&lt;/li&gt;
&lt;li&gt;네트워크 안의 모든 호스트가 응답 (Echo Reply)&lt;/li&gt;
&lt;li&gt;응답이 &lt;b&gt;전부 피해자에게 몰림&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;결과: &lt;b&gt;피해자 트래픽 폭증 &amp;rarr; DoS&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 브로드캐스트로 내부 호스트들을 이용해, 피해자를 집단 공격하게 만드는 DoS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;SYN Flooding&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공격자가 가상의 클라이언트 (존재하지 않는 주소=송신지) 로 위장하여 3-way-handshake 과정을 의도적으로 중단시켜 서버가 대기 상태에 놓이게 하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예) 콜센터에 전화해서 끊지 않고 여러 상담원을 기다리게 만듬 &amp;rarr; 콜센터 마비&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버는 SYN 에 대한 응답으로 SYN+ACK 를 보내며 클라이언트의 접속을 받아들이기 위해 메모리의 일정 공간을 확보한다.&lt;/li&gt;
&lt;li&gt;그러나 존재하지 않는 주소이므로 보낸 응답이 전송되지 않으며, ACK 신호도 받지 못하므로 서버는 메모리 공간을 확보한 상태에서 대기하게 된다.&lt;/li&gt;
&lt;li&gt;이것이 단시간에 반복되면 정상적인 서비스가 불가능해진다.&lt;/li&gt;
&lt;li&gt;이를 방지하려면 SYN 대기 시간을 줄이거나, 침입차단 시스템(IPS) 등을 이용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;TearDrop&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패킷 분할 순서를 위한 Fragment Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 방법이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Fragment Offset 이 잘못된 경우 해당 패킷을 폐기하도록 설정하여 방지한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Land&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 즉, 자신에 대해 무한히 응답하게 하는 공격이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신 IP 주소와 수신 IP 주소의 적절성을 검사하여 이를 방지한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;DDoS (Distributed Denial of Service, 분산서비스 거부 공격)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크에서 취약점이 있는 호스트들을 탐색한 후 분산 서비스 공격용 툴을 설치하여 에이전트로 만든다. 이후 이 에이전트들을 DDoS 공격에 이용한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다수의 에이전트를 관리할 수 있는 핸들러(Handler) 프로그램을 설치하여 마스터(Master) 로 지정하여 공격의 범위를 확대하기도 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분산 서비스 공격용 툴 (데몬)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트의 역할을 수행하도록 설계된 프로그램&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Trin00 : 가장 초기 형태의 데몬. 주로 UDP Flooding 공격 수행&lt;/li&gt;
&lt;li&gt;TFN (Tribe Flooding Network) : UDP Flooding, TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행함 &amp;rarr; TFN2K 로 확장됨&lt;/li&gt;
&lt;li&gt;Stacheldraht : 이전 툴들의 기능을 유지하면서 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된 통신을 수행하며, 툴이 자동으로 업데이트되도록 설계됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;네트워크 침해 공격 관련 용어 &lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-8089-9cb7-d9fdc6047588&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-80c7-8e2f-eea64c2d9ac7&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-805e-ad5c-d85992fd1509&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;스미싱&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;문자메시지 (SMS) 이용. 안드로이드 앱 설치 파일인 .apk 파일 설치 유도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80ae-a9d7-e55a32753750&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;스피어 피싱&lt;br /&gt;(Spear Phishing)&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;사회 공학의 한 기법. 특정 대상을 선정한 후 일반적인 이메일로 위장한 메일을 지속적으로 발송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80f3-9099-dca679dac4ed&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;무작위 대입 공격&lt;br /&gt;(Brute Force Attack)&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;암호키를 찾아내기 위해 모든 값을 대입하여 공격&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80a5-a5b7-fe886b42342c&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;큐싱 (Qshing)&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;QR코드 (Quick Response Code) 로 악성 앱 다운로드, 설치 유도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8035-b104-feab109e26f3&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;Ping Flood&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;특정 사이트에 매우 많은 ICMP 메시지를 보내 이에 대한 응답으로 시스템 자원들을 모두 사용하게 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-804a-aeac-d81a66b30133&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;Evil Twin Attack&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;실제 존재하는 동일한 이름의 무선 Wifi 신호를 송출하여 로그온한 사람들의 계정정보나 신용정보를 탈취&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80a7-9884-e4863c7281a7&quot;&gt;
&lt;td id=&quot;=c^N&quot;&gt;스위치 재밍&lt;br /&gt;(Switch Jamming)&lt;/td&gt;
&lt;td id=&quot;\Z@L&quot;&gt;위조된 MAC 주소를 지속적으로 흘려보내, MAC 주소 테이블의 용량을 초과하게끔 폭발시켜 더미 허브(Dummy Hub)처럼 작동하게 하는 공격&lt;br /&gt;&amp;rarr; MAC 테이블 용량초과로 원하는 정보가 존재하지 않게 되므로 모든 포트로 전송하게 된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;블루투스 관련 공격 &lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-8080-8d46-cb3bf0a90368&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-8083-be7a-f12869b0496e&quot;&gt;
&lt;td id=&quot;gm{x&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;V?v&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8007-9750-fdcee4821270&quot;&gt;
&lt;td id=&quot;gm{x&quot;&gt;블루버그 (BlueBug)&lt;/td&gt;
&lt;td id=&quot;&amp;gt;V?v&quot;&gt;블루투스 자입 사이의 취약한 연결 관리를 악용한 공격&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8075-8930-cc4d3233e333&quot;&gt;
&lt;td id=&quot;gm{x&quot;&gt;블루스나프 (BlueSnarf)&lt;/td&gt;
&lt;td id=&quot;&amp;gt;V?v&quot;&gt;&amp;bull; 장비의 파일에 접근하는 공격&lt;br /&gt;&amp;bull; 인증 없이 간편하게 정보를 교환할 수 있는 OPP(Object Push Profile, 파일 주고받기 프로토) 를 사용하여 정보를 열람&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-803c-837e-e993ff3e39a7&quot;&gt;
&lt;td id=&quot;gm{x&quot;&gt;블루프린팅 (BluePrinting)&lt;/td&gt;
&lt;td id=&quot;&amp;gt;V?v&quot;&gt;공격 대상이 될 블루투스 장비를 검색하는 활동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8022-b3d5-f5ecba3d5bfa&quot;&gt;
&lt;td id=&quot;gm{x&quot;&gt;블루재킹 (BlueJacking)&lt;/td&gt;
&lt;td id=&quot;&amp;gt;V?v&quot;&gt;블루투스를 이용해 스팸처럼 메시지를 익명으로 퍼뜨리는 공&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;정보보안 침해 공격 관련 용어 &lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-80ff-afe0-e70bdd1865df&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-8067-a1c1-ff90992075ec&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-803b-bb7a-cd4e90c54a1c&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;좀비 PC,&lt;br /&gt;C&amp;amp;C 서버&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;&amp;bull; 좀비PC : 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터. C&amp;amp;C 서버의 제어를 받아 이용된다.&lt;br /&gt;&amp;bull; C&amp;amp;C 서버 (Command &amp;amp; Control) : 원격지에서 좀비PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8066-a7ba-cd789ae65b05&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;봇넷 (Botnet)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;악성 코드에 감염된 다수의 컴퓨터들이 네트워크에 연결된 형태로, 악의적 공격에 이용됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8082-8642-ea865b53d36f&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;웜 (Worm)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;네트워크를 통해 연속적으로 자신을 복제하여 시스템 부하를 높임으로써 시스템을 다운시킴&lt;br /&gt;&amp;bull; 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머&lt;br /&gt;*슬래머 : SQL의 허점을 이용하여 SQL 서버를 공격하는 웜 바이러스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80b4-8383-c38b540b85c0&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;제로 데이 공격&lt;br /&gt;(Zero Day Attack)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;보안 취약점이 공표되기 전에 해당 취약점을 통해 이루어지는 보안 공격&lt;br /&gt;&amp;rarr; 공격의 신속성 을 의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8014-ade6-cecfaea1c7f7&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;키로거 공격&lt;br /&gt;(Key Logger Attack)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;사용자의 키보드 움직임을 탐지해 패스워드 등을 탈취&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80d6-adcd-f5995f806350&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;랜섬웨어&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;내부 문서, 파일 등을 암호화한 후 해독용 프로그램을 조건으로 금전 요구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8016-9b93-d392fb07147b&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;백도어&lt;br /&gt;(Back Door,&lt;br /&gt;Trap Door)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;&amp;bull; 시스템 설계자가 서비스 기술자나 유지보수 프로그램 작성자(Programmer)의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로.&lt;br /&gt;&amp;bull; 백도어는 공격자가 의도적으로 심어 놓은 형태도 있다.&lt;br /&gt;&amp;bull; 백도어 탐지방법 : 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80e2-b9f0-da61bebd94cc&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;트로이 목마&lt;br /&gt;(Trojan Horse)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;&amp;bull; 평소에는 정상 프로그램으로 위장하여 프로그램 내에 숨어있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것&lt;br /&gt;&amp;bull; 자기 복제 기능은 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80c2-986d-cf316f866a0b&quot;&gt;
&lt;td id=&quot;@zWM&quot; style=&quot;width: 21.2791%;&quot;&gt;파밍&lt;br /&gt;(Pharming)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JBh&quot; style=&quot;width: 78.6047%;&quot;&gt;&amp;bull; 중간에서 도메인을 탈취하여 가짜 사이트로 접속하도록 유도함&lt;br /&gt;&amp;bull; 예: host 파일을 조작하여 DNS 주소 조작, DNS 캐시 포이즈닝&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;서버 인증&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 서버 : SSL (Secure Socket Layer) 인증서를 설치하여 전송 정보를 암호화하여 송수신하는 기능을 갖춰야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인증 (Authentication)&lt;/b&gt; : 지식 기반 인증, 소유 기반 인증, 생체 기반 인증, 위치 기반 인증 이 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지식 기반 인증&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고정 패스워드, 패스 프레이즈(Passphrase, 길고 기억하기 쉬운 문장으로 비밀번호 구성), 아이핀(i-PIN, 사이버 주민등록번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;소유 기반 인증&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지식 기반 인증, 생체 기반 인증과 함께 사용됨.&lt;/li&gt;
&lt;li&gt;메모리 카드(토큰) : 마그네틱 선에 보안 코드를 저장해서 사용하는 것. 카드 리더기를 통해서만 읽을 수 있다&lt;/li&gt;
&lt;li&gt;스마트 카드 : 마이크로프로세서, 카드 운영체제, 메모리 등으로 구성되어 특정 업무를 처리할 수 있는 기능이 내장되어 있다. (예: IC칩이 내장된 카드)&lt;/li&gt;
&lt;li&gt;신분증, OTP 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;생체 기반 인증&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;홍채, 지문, 얼굴 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기타 인증 기법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;행위 기반&lt;/b&gt; 인증 : 서명, 동작, 음성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;위치 기반&lt;/b&gt; 인증 : 콜백, GPS, IP주소를 이용한 인증&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;침입 탐지 시스템 (IDS; Intruction Detection System)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;오용 탐지 (Misuse Detection)&lt;/b&gt; : 미리 입력해 둔 공격 패턴 감지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이상 탐지 (Anomaly Detection)&lt;/b&gt; : 평적인 시스템의 상태를 기준으로 비정상적인 행위나 자원 사용 갑지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HIDS (Host-Based IDS)&lt;/b&gt; : 시스템의 내부 감시. 누가 접근해서 어떤 작업을 수행했는지 기록하고 추적&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NIDS (Network-Based IDS)&lt;/b&gt; : 외부로부터의 침입 감시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;침입 탐지 시스템의 위치에 따른 탐지&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;패킷이 라우터로 들어오기 전&lt;/b&gt; : 네트워크에 시도되는 모든 공격을 탐지할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라우터 뒤&lt;/b&gt; : 라우터에 의해 패킷 필터링을 통과한 공격을 탐지할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;방화벽 뒤&lt;/b&gt; : 내부에서 외부로 향하는 공격을 탐지할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;내부 네트워크&lt;/b&gt; : 내부에서 내부 네트워크의 해킹 공격을 탐지할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DMZ&lt;/b&gt; : 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크. 중요 데이터를 보호하거나 서버의 서비스 중단을 방지할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;NAC (Network Access Control)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크에 접속하는 내부 PC 의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 PC 의 소프트웨어 사용 현황을 관리하여 불법적인 소프트웨어 설치를 방지한다&lt;/li&gt;
&lt;li&gt;일괄적인 배포 관리 기능을 이용해 백신이나 보안 패치 등의 설치 및 업그레이드를 수행한다&lt;/li&gt;
&lt;li&gt;네트워크에 접속된 비인가된 시스템을 자동으로 검출하여 자산을 관리한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;mttContainer&quot; class=&quot;notranslate&quot; style=&quot;transform: translate(367px, 508px);&quot; aria-expanded=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>프로젝트/자격증</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/257</guid>
      <comments>https://ha7708.tistory.com/257#entry257comment</comments>
      <pubDate>Thu, 5 Feb 2026 18:19:48 +0900</pubDate>
    </item>
    <item>
      <title>정처기 :: IT 프로젝트 정보시스템 구축 관리</title>
      <link>https://ha7708.tistory.com/256</link>
      <description>&lt;h1&gt;&lt;b&gt;IT 프로젝트 정보시스템 구축 관리&lt;/b&gt;&lt;/h1&gt;
&lt;h1&gt;&lt;b&gt;네트워크 관련 신기술&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;지능형 초연결망&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과학기술정보통신부 주관으로 추진 중인 사업으로, 스마트 시티, 스마트 스테이션 등 에 따라 급격하게 증가하는 트래픽을 효과적으로 수용하기 위함에 목적이 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;국가 전체 망에 소프트웨어 정의 기술(SDE) 을 적용하는 방법이다.&lt;/li&gt;
&lt;li&gt;지능형 초연결망은 기존의 초고속정보통신망, 광대역통합망(BcN), 광대역융합망(UBcN) 을 잇는 중장기 네트워크 발전 전략이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;소프트웨어 정의 기술 (SDE; SDx; Software-Defined Everything)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소프트웨어 정의 &lt;b&gt;네트워킹&lt;/b&gt; (&lt;b&gt;SDN&lt;/b&gt;; Software Defined Networking)&lt;/li&gt;
&lt;li&gt;소프트웨어 정의 &lt;b&gt;데이터 센터&lt;/b&gt; (&lt;b&gt;SDDC&lt;/b&gt;; Software Defined Data Center)&lt;/li&gt;
&lt;li&gt;소프트웨어 정의 &lt;b&gt;스토리지&lt;/b&gt; (&lt;b&gt;SDS&lt;/b&gt;; Software Defined Storage)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;IoT (Internet of Things, 사물 인터넷)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지능 통신을 할 수 있는 엠투엠 (M2M; Machine to Machine) 의 개념을 인터넷으로 확장하여 사물은 물론 현실과 가상 세계의 모든 정보와 상호 작용하는 IoT 개념으로 진화하였다.&lt;/li&gt;
&lt;li&gt;IoT의 주요 기술 : 스마트 센싱 기술, 유무선 통신 및 네트워크 인프라 기술, 사물 인터넷 인터페이스 기술, 사물 인터넷을 통한 서비스 기술 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;IoT 관련 용어&lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2fdade4d-adab-800b-bb62-c36cab21afab&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-80de-9f08-ffd03d83c6d5&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8077-b129-ca4eec4cf53e&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;올조인 (AllJoyn)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 오픈소스 기반의 &lt;b&gt;사물인터넷 (IoT) 플랫폼&lt;/b&gt;&lt;br /&gt;&amp;bull; 서로 다른 운영체제(OS) 나 하드웨어를 사용하는 기기들이 표준화된 플랫폼을 이용함으로써 서로 통신 및 제어가 가능하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-809b-8398-d44a1166ddca&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;메시 네트워크&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Mesh Network)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 차세대 이동통신, 홈네트워킹, 공공 안전 등 특수 목적을 위한 네트워크&lt;br /&gt;&amp;bull; 수십~수천 개의 디바이스를 그물망(Mesh)처럼 연결하여 모든 구간을 동일한 무선망처럼 구성하여 사용자가 안정적인 네트워크를 사용할 수 있게 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-802e-97c2-f423d5191e0c&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;와이선 (Wi-SUN)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 스마트 그리드와 같은 장거리 무선 통신을 필요로 하는&lt;b&gt; IoT를 위한 저전력 장거리 (LPWA; Low-Power Wide Area) 통신 기술&lt;/b&gt;&lt;br /&gt;&amp;bull; &lt;b&gt;스마트 그리드&lt;/b&gt; : 전기 생산-소비 전 과정에 정보통신 기술을 접목하여 에너지 효율성을 높이는 지능형 전력망 시스템&lt;br /&gt;&amp;bull; 낮은 지연 속도, 메시 네트워크 기반 확장성, 펌웨어 업그레이드 용이성 등으로 짧은 시간 동안 데이터 전송이 빈번한 &lt;b&gt;검침(전기, 가스검침 등&lt;/b&gt;) 분야에 유리하다. &lt;br /&gt;&amp;bull; 저전력 + 메시 네트워크 = Wi-SUN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8030-b85d-c0709d7fe36a&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;UWB (Ultra &lt;/b&gt;&lt;br /&gt;&lt;b&gt;WideBand, 초광대역)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull;&lt;b&gt; 무선 디지털 펄스&lt;/b&gt;라고도 하며, 블루투스와 비교되는 기술이다.&lt;br /&gt;&amp;bull; 땅 속이나 벽 뒤로도 전송이 가능하여 전파 탐지기 기능으로 인명 구조 등 응용 범위가 광범위하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80f1-8b2c-e4f3797711f2&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;피코넷 (PICONET)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 블루투스에서 하나의 중심 기기&lt;b&gt;(마스터)&lt;/b&gt;와 몇 개의 주변 기기&lt;b&gt;(슬레이브&lt;/b&gt;)가 묶인 아주 작은 네트워크&lt;br /&gt;&amp;bull; 블루투스 기술 또는 UWB 통신 기술을 사용하여 통신망을 형성&lt;br /&gt;&amp;bull; 주로 수십 미터 이내 좁은 공간에서 네트워크를 형성하며 정지, 이동중에 있는 모든 장치를 포함한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80bc-9ed8-d54f3ab9a682&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;USN (Ubiquitous&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Sensor Network,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;유비쿼터스 센서네트워크)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 각종 센서로 다양한 정보를 무선으로 수집할 수 있도록 구성한 네트워크&lt;br /&gt;&amp;bull; 필요한 모든 것(곳) 에&lt;b&gt; RFID 태그&lt;/b&gt; 를 부착하고, 이를 통하여 사물의 인식정보, 주변 환경 정보까지 탐지한 모든 데이터를 관리할 수 있다.&lt;br /&gt;&amp;bull; &lt;b&gt;RFID(Radio Frequency IDentification) : 사물에 전자 태그를 부착&lt;/b&gt;하고 무선 통신을 이용하여 &lt;b&gt;사물의 정보 및 주변 정보를 감지&lt;/b&gt;하는 &lt;b&gt;센서 기술&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8040-af77-e243782d6d47&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;SON (Self Organizing&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Network, 자동구성 네트워크)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; &lt;b&gt;주변 상황에 맞추어 스스로 망을 구성&lt;/b&gt;하는 네트워크&lt;br /&gt;&amp;bull; 갑작스러운 사용자 증가, 감소 시 자동으로 &lt;b&gt;주변 셀과의 협력&lt;/b&gt;을 통해 &lt;b&gt;셀 용량을 변화&lt;/b&gt;시키며, 장애 발생 시 자체적인 치유도 가능하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8038-bd27-c7654967b459&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;저전력 블루투스 기술&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(BLE; Bluetooth Low Energy)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 일반 블루투스와 동일한 2.4GHz 주파수 대역을 사용하나 대기 상태(연결되지 않음)에서는 절전 모드를 유지하는 기술&lt;br /&gt;&amp;bull; 시계, 장난감, 비컨(Beacon), 착용 컴퓨터 등 극소형 사물 인터넷에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8040-8cd8-cf8abbe265f7&quot;&gt;
&lt;td id=&quot;Xeqz&quot; style=&quot;width: 31.6279%;&quot;&gt;&lt;b&gt;NFC (Near Field&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Communication,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;근거리 무선 통신)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;CL_&quot; style=&quot;width: 68.2558%;&quot;&gt;&amp;bull; 고주파(HF) 를 이용한 근거리 무선 통신 기술. 양방향 통신을 지원하는 RFID 기술의 일종&lt;br /&gt;&amp;bull; 13.56MHz 주파수를 이용해 10cm 내에서 최고 424Kbps 속도를 지원하며, 모바일 기기를 통한 결제, 여행정보 전송, 교통, 출입통제, 잠금장치 등 광범위하게 활용됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;메시 네트워크&lt;/b&gt; : 각 기기가 이웃 몇 개와 연결되고, 필요하면 중간 노드를 거쳐 전달되는 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;rarr; 그물망이라고 해서 완전 연결된다는 뜻은 아니고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;다중 경로가 존재&lt;/b&gt;하는 구조이다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 멀리 있는 기기도 중계 노드를 통해 연결되므로, 별도의 인프라 없이 확장 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메시 네트워크에서 노드 수가 증가하면 유리한가 ?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;rarr; 기기 수가 많아지면 &lt;b&gt;라우팅 메시지, 브로드캐스트/컨트롤 패킷 증가, 재전송 증가&lt;/b&gt;로 &lt;b&gt;오버헤드가 폭증&lt;/b&gt;한다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 노드 수가 증가하면 &lt;b&gt;중계 부담&lt;/b&gt;이 증가하므로 &lt;b&gt;배터리 소모가 가속&lt;/b&gt;된다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 홉 수가 증가하게 되면 &lt;b&gt;지연(latency)&lt;/b&gt;이 증가하므로 실시간에는 치명적이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;클라우드 컴퓨팅&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리드 컴퓨팅 과 다른 점은, 그리드 컴퓨팅은 하나의 컴퓨터로 묶어 분산 처리하는 방식으로 기상예측, 우주 문제 등 대규모 연산에 사용된다면&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅은 자원을 필요한 이들에게 필요한 순간에 빌려주는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;관련 용어&lt;/b&gt;&lt;/p&gt;
&lt;table id=&quot;2fdade4d-adab-8038-85ab-f1026cbcc799&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-8075-b4eb-f337da4ca58d&quot;&gt;
&lt;td id=&quot;ycGg&quot; style=&quot;width: 23.0233%;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;}uL~&quot; style=&quot;width: 76.8604%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80c7-b153-e38fba0664ff&quot;&gt;
&lt;td id=&quot;ycGg&quot; style=&quot;width: 23.0233%;&quot;&gt;&lt;b&gt;모바일 클라우드 컴퓨팅&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(MCC)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;}uL~&quot; style=&quot;width: 76.8604%;&quot;&gt;모바일 기기로 클라우드 컴퓨팅 인프라를 구성하는 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8007-8d27-ed4493b04cac&quot;&gt;
&lt;td id=&quot;ycGg&quot; style=&quot;width: 23.0233%;&quot;&gt;&lt;b&gt;인터클라우드 컴퓨팅&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;}uL~&quot; style=&quot;width: 76.8604%;&quot;&gt;각기 다른 클라우드 서비스나 자원을 연결하여 컴퓨팅 자원의 동적 할당을 가능하게 하는 기술&lt;br /&gt;&lt;b&gt; &amp;bull; 대등 접속(Peering) &lt;/b&gt;: 직접 연계&lt;br /&gt;&lt;b&gt;&amp;bull; 연합(Federation) &lt;/b&gt;: 자원 공유를 기본으로 요구량에 따른 동적 할당&lt;br /&gt;&lt;b&gt; &amp;bull; 중개(Intermediary)&lt;/b&gt; : 서비스 제공자 간 직간접 자원연계, 중개서비스 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80ff-ab3d-eb5be7668047&quot;&gt;
&lt;td id=&quot;ycGg&quot; style=&quot;width: 23.0233%;&quot;&gt;&lt;b&gt;클라우드 기반 HSM&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Cloud-Based Hardware&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Security Module)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;}uL~&quot; style=&quot;width: 76.8604%;&quot;&gt;&amp;bull; 클라우드 기반으로 암호화 키의 생성, 저장, 처리를 수행하는 보안기기&lt;br /&gt;&amp;bull; 클라우드에 인증서를 저장하며, 암호화 키 생성이 하드웨어적으로 구현되므로 소프트웨어적으로 구현된 암호 기술이 가지는 보안 취약점을 무시할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-807a-a317-d055cf22474d&quot;&gt;
&lt;td id=&quot;ycGg&quot; style=&quot;width: 23.0233%;&quot;&gt;&lt;b&gt;파스-타(PaaS-TA)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;}uL~&quot; style=&quot;width: 76.8604%;&quot;&gt;&amp;bull; 소프트웨어 개발 환경을 제공하기 위해 개발한 개방형&lt;b&gt; 클라우드 컴퓨팅 플햇폼&lt;/b&gt;&lt;br /&gt;&amp;bull; 인프라 제어 및 관리 환경 / 실행 환경 / 개발 환경 / 서비스 환경 / 운영 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기타 용어&lt;/b&gt;&lt;/p&gt;
&lt;table id=&quot;2fdade4d-adab-806b-b88c-f83ee451c997&quot; style=&quot;border-collapse: collapse; width: 100%; height: 655px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-804b-99e6-f69589827bbc&quot; style=&quot;height: 22px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 22px; width: 24.8837%;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 22px; width: 75%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8018-93e5-ebec02e23046&quot; style=&quot;height: 44px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 44px; width: 24.8837%;&quot;&gt;&lt;b&gt;징 (Zing)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 44px; width: 75%;&quot;&gt;&amp;bull; 초고속 근접무선통신 (NFC)&lt;br /&gt;&amp;bull; 휴대용 스마트기기, 노트북, 거리의 광고, 키오스크에 접목 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-807c-8740-d856d7204126&quot; style=&quot;height: 88px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 88px; width: 24.8837%;&quot;&gt;&lt;b&gt;NDN (Name Data&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Networking)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 88px; width: 75%;&quot;&gt;&amp;bull; 콘텐츠 중심 네트워킹(CCN; Content Centric Networking, IP주소에 따른 데이터 전송에서 벗어나 콘텐츠 중심 데이터 전달이 가능한 네트워크) 개념&lt;br /&gt;&amp;bull; 해시 테이블에 기반을 두는 P2P 시스템과 같이 콘텐츠에 담겨 있는 정보와 라우터 기능만으로 목적지를 확정한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8030-baff-c01d114b80cc&quot; style=&quot;height: 77px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 77px; width: 24.8837%;&quot;&gt;&lt;b&gt;NGN (Next Generation&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Network, 차세대 통신망)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 77px; width: 75%;&quot;&gt;&amp;bull; 하나의 망으로 모든 정보와 모든 형식의 미디어 서비스를 패킷으로 압축하여 전송하는 것을 목표로 한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80f8-bf94-f104ce31aa76&quot; style=&quot;height: 22px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 22px; width: 24.8837%;&quot;&gt;&lt;b&gt;올(all)-IP&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 22px; width: 75%;&quot;&gt;유선 전화망, 무선 망, 패킷 데이터 망 등 기존의 통신망을 모두 IP 기반의 망으로 통합한 차세대 네트워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8054-ad48-e8a3db2c2d59&quot; style=&quot;height: 50px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 50px; width: 24.8837%;&quot;&gt;&lt;b&gt;WBAN (Wireless Body&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Area Network)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 50px; width: 75%;&quot;&gt;웨어러블 또는 임플란트 형태의 센서나 기기를 무선으로 연결하는 개인 영역 네트워킹 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80de-8fcc-c7f1043f8a8e&quot; style=&quot;height: 72px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 72px; width: 24.8837%;&quot;&gt;&lt;b&gt;GIS (Geographic&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Information System,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;지리 정보 시스템)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 72px; width: 75%;&quot;&gt;지리적인 자료를 수집, 저장, 분석, 출력할 수 있는 컴퓨터 응용 시스템으로, 위성을 이용한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80c2-8ff5-d9633ab30961&quot; style=&quot;height: 44px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 44px; width: 24.8837%;&quot;&gt;&lt;b&gt;애드 혹 네트워크&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Ad-hoc Network)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 44px; width: 75%;&quot;&gt;&amp;bull; 재난 현장 같은 곳에서 모바일 호스트만을 이용하여 구성한 네트워크&lt;br /&gt;&amp;bull; 유선망과 기지국이 필요 없고 호스트 이동에 제약이 없어 빠른 망 구성과 저렴한 비용이 장점이다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8091-8aab-eadc5e167744&quot; style=&quot;height: 38px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 38px; width: 24.8837%;&quot;&gt;&lt;b&gt;네트워크 슬라이싱&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Network Slicing)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 38px; width: 75%;&quot;&gt;5G 핵심 기술 중 하나. 물리적인 네트워크를 다수의 가상 네트워크로 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80b6-8a2f-ce4b5b2ffb2a&quot; style=&quot;height: 88px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 88px; width: 24.8837%;&quot;&gt;&lt;b&gt;파장 분할 다중화 (WDM,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Wavelength Division&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Multiplexing)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 88px; width: 75%;&quot;&gt;광섬유의 파장이 다른 광선끼리 서로 간섭을 일으키지 않는 성질을 이용&lt;br /&gt;&amp;rarr; 여러 대의 단말기가 동시에 통신 회선을 사용할 수 있도록 하는 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80ba-8fd6-e2137ef35329&quot; style=&quot;height: 77px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 77px; width: 24.8837%;&quot;&gt;&lt;b&gt;개방형 링크드 데이터&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(LOD, Linked Open Data)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 77px; width: 75%;&quot;&gt;웹상에 존재하는 데이터를 개별 URI로 식별하고, 각 URI에 링크 정보 부여&lt;br /&gt;&amp;rarr; 상호 연결된 웹을 지향하는 모형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-807f-9975-d4b06bf0c88d&quot; style=&quot;height: 33px;&quot;&gt;
&lt;td id=&quot;y[d=&quot; style=&quot;height: 33px; width: 24.8837%;&quot;&gt;&lt;b&gt;SSO (Single Sign On)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;gt;u\e&quot; style=&quot;height: 33px; width: 75%;&quot;&gt;한 번의 로그인으로 개인이 가입한 모든 사이트를 이용할 수 있게 해주는 시스템 예) 카카오톡 계정으로 로그인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;네트워크 구축&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성형, 링형(루프형), 버스형, 계층형(분산형), 망형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;링형&lt;/b&gt; : 분산 및 집중 제어 모두 가능. 데이터가 한쪽 방향으로만 흐르고 병목 현상이 드물다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버스형&lt;/b&gt; : 기밀 보장이 어렵고 통신 회선의 길이에 제한이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;망형&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보통 공중 데이터 통신망에 사용되며, 통신 회선의 총 경로가 가장 길다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;노드의 수가 n 개&lt;/b&gt;일 때, &lt;b&gt;n(n-1)/2 개의 회선&lt;/b&gt;과 &lt;b&gt;노드당 n-1 개의 포트&lt;/b&gt;가 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;LAN 표준안&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IEEE 802 의 주요 표준 규격&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;802.1 : 전체의 구성, OSI 참조 모델과의 관계, 통신망 관리 등에 관한 규약&lt;/li&gt;
&lt;li&gt;802.2 : 논리 링크 제어 (LLC) 계층에 관한 규약&lt;/li&gt;
&lt;li&gt;802.3 : CSMA/CD 방식의 매체 접근 제어 계층에 관한 규약&lt;/li&gt;
&lt;li&gt;802.4 : 토큰 버스 방식의 ~&lt;/li&gt;
&lt;li&gt;802.5 : 토큰 링 방식의 ~&lt;/li&gt;
&lt;li&gt;802.9 : 종합 음성/데이터 네트워크에 관한 규약&lt;/li&gt;
&lt;li&gt;802.11 : 무선 LAN에 관한 규약&lt;/li&gt;
&lt;li&gt;802.15 : 블루투스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;경로 제어 / 트래픽 제어&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;경로 제어 프로토콜&lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2fdade4d-adab-80f7-8e50-e750382e2734&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-808a-ae80-dcb7002cdb8d&quot;&gt;
&lt;td id=&quot;Tio:&quot; style=&quot;width: 24.5348%;&quot;&gt;&lt;b&gt;IGP (Interior Gateway&lt;br /&gt;Protocol, 내부 게이트웨이&lt;br /&gt;프로토콜)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;Zo|a&quot; style=&quot;width: 75.3489%;&quot;&gt;하나의 자율 시스템 (AS; Autonomous System) 에서 사용되는 프로토콜&lt;br /&gt;*자율 시스템 : 하나의 도메인에 속하는 라우터들의 집합&lt;br /&gt;&amp;bull; RIP : 거리 벡터, Bellman-Ford, 최대 홉수 15, 30초, 180초 데스&lt;br /&gt;&amp;bull; OSPF : 링크 상태, 다익스트라, 변화시 일부 알림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-803c-afac-f413f53702de&quot;&gt;
&lt;td id=&quot;Tio:&quot; style=&quot;width: 24.5348%;&quot;&gt;&lt;b&gt;EGP (Exterior Gateway&lt;br /&gt;Protocol, 외부 게이트웨이&lt;br /&gt;프로토콜)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;Zo|a&quot; style=&quot;width: 75.3489%;&quot;&gt;자율 시스템 (AS) 간의 라우팅, 즉 게이트웨이 간 라우팅에 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-802c-be08-cceb6f61cd34&quot;&gt;
&lt;td id=&quot;Tio:&quot; style=&quot;width: 24.5348%;&quot;&gt;&lt;b&gt;BGP (Border&lt;br /&gt;Gateway Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;Zo|a&quot; style=&quot;width: 75.3489%;&quot;&gt;&amp;bull; 자율 시스템 (AS) 간의 라우팅 프로토콜. EGP의 단점을 보완하기 위해 만들어짐&lt;br /&gt;&amp;bull; 초기에 BGP 라우터들이 연결될 떄에는 전체 경로 제어표 (라우팅 테이블)를 교환하고, 이후에는 변화된 정보만을 교환한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;트래픽 제어&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흐름 제어, 폭주(혼잡) 제어, 교착상태 방지 기법이 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;흐름 제어&lt;/b&gt;: 상대방(수신자) 배려&lt;/li&gt;
&lt;li&gt;&lt;b&gt;혼잡 제어&lt;/b&gt;: 네트워크 전체 배려&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;흐름 제어 (Flow Control)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;송수신 사이 패킷의 양, 속도 규제 : 처리 속도 또는 버퍼 크기 차이에 따른 수신 측 버퍼의 오버플로를 방지하기 위한 기능&lt;/p&gt;
&lt;table id=&quot;2fdade4d-adab-80d6-a801-c14914a49bf4&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-802b-afa3-cb3ce7039f7b&quot;&gt;
&lt;td id=&quot;QW{E&quot; style=&quot;width: 18.7209%;&quot;&gt;&lt;b&gt;정지-대기&lt;br /&gt;(Stop-and-Wait)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;DtxI&quot; style=&quot;width: 81.1628%;&quot;&gt;&amp;bull; 수신 측의 확인 신호&lt;b&gt;(ACK)를 받은 후 다음 패킷을 전송&lt;/b&gt;하는 방식&lt;br /&gt;&amp;bull; 한 번에 하나의 패킷만을 전송할 수 있음&lt;br /&gt;&amp;bull; &lt;b&gt;신뢰성이 중요한 경우(군용, 산업제어, 안전제어 신호 등)&lt;/b&gt; 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-809d-9670-c27a891baeec&quot;&gt;
&lt;td id=&quot;QW{E&quot; style=&quot;width: 18.7209%;&quot;&gt;&lt;b&gt;슬라이딩 윈도우&lt;br /&gt;(Sliding Window)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;DtxI&quot; style=&quot;width: 81.1628%;&quot;&gt;&amp;bull; 확인 신호&lt;b&gt;(ACK) 를 이용하여 송신 데이터의 양 조절&lt;/b&gt;&lt;br /&gt;&amp;bull;&lt;b&gt; 한 번에 여러 개의 패킷&lt;/b&gt;을 전송할 수 있어 전송 효율이 좋다.&lt;br /&gt;&amp;bull; 윈도우 크기 (Window Size) : 수신 가능한 패킷의 최대치. &lt;b&gt;ACK 를 받으면 윈도우 크기는 증가&lt;/b&gt;하고, &lt;b&gt;NAK 를 받으면 윈도우 크기는 감소&lt;/b&gt;한다.&lt;br /&gt;&amp;bull; 송신 측은 수신 측으로부터&lt;b&gt; ACK 없이도 보낼 수 있는 패킷의 최대치를 미리 약속받는다.&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;폭주(혼잡) 제어 (Congestion Control)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로를 방지하는 기능&lt;/p&gt;
&lt;table id=&quot;2fdade4d-adab-8060-a3e2-ff4372cb1f12&quot; style=&quot;border-collapse: collapse; width: 100%; height: 82px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-8048-b4f9-eed65b7f9230&quot; style=&quot;height: 44px;&quot;&gt;
&lt;td id=&quot;JKYn&quot; style=&quot;width: 23.4884%; height: 44px;&quot;&gt;&lt;b&gt;느린 시작 (Slow Start)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;FC&amp;gt;=&quot; style=&quot;width: 76.3953%; height: 44px;&quot;&gt;&amp;bull; &lt;b&gt;윈도우 크기를 1, 2, 4, 8, &amp;hellip;. 2배씩 지수적으로 증가&lt;/b&gt;시킴&lt;br /&gt;&amp;bull; &lt;b&gt;임계 값에 도달하면 혼잡 회피 단계로&lt;/b&gt; 넘어감&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-805b-b798-e5d071c6caba&quot; style=&quot;height: 38px;&quot;&gt;
&lt;td id=&quot;JKYn&quot; style=&quot;width: 23.4884%; height: 38px;&quot;&gt;&lt;b&gt;혼잡 회피&lt;br /&gt;(Congestion Avoidance)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;FC&amp;gt;=&quot; style=&quot;width: 76.3953%; height: 38px;&quot;&gt;&amp;bull; 회피를 위해 &lt;b&gt;윈도우 크기를 1씩 선형적으로 증&lt;/b&gt;가시킴&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;b&gt;SW 관련 신기술 &lt;/b&gt;&lt;/h1&gt;
&lt;table id=&quot;2fdade4d-adab-8002-ab9a-f88713b4c9cd&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-8063-86f5-ff6d24e7b2f0&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80f5-bbb1-fbb9e4b8d3ae&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;인공지능&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 응용 분야 : 신경망, 퍼지, 패턴 인식, 전문가 시스템, 자연어 인식, 이미지 처리, 컴퓨터 시각, 로봇 공학 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8030-bb7c-e047a91e4b23&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;뉴럴링크 (Neurallink)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 테슬라의&lt;b&gt; 일론머스크&lt;/b&gt;가 사람의 뇌와 컴퓨터를 결합하는 기술을 개발하기 위해 설립한 회사&lt;br /&gt;&amp;bull; &lt;b&gt;작은 전극을 뇌에 이식&lt;/b&gt;함으로써 생각을 업로드하고 다운로드하는 것을 목표로 삼고 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-807b-9301-ea8b7839142f&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;딥 러닝 (Deep Learning)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 인간의 두뇌를 모델로 만들어진 인공 신경망 (ANN; Artificial Neural Network) 을 기반으로 하는 기계 학습 기술&lt;br /&gt;&amp;bull; 사람처럼 스스로 학습할 수 있어 많은 데이터를 정형화하지 않고도 &lt;b&gt;스스로 필요한 데이터를 수집, 분석&lt;/b&gt;하여 고속으로 처리할 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80a5-9936-d41592865782&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;전문가 시스템&lt;br /&gt;(Expert System)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 의료 진단 같은 특정 분야 전문가가 수행하는 고도의 업무를 지원하기 위한 것&lt;br /&gt;&amp;bull; &lt;b&gt;지식 베이스 (Knowledge Base)&lt;/b&gt; 라는 데이터베이스와, 이에 기초하여 추론을 실행하는 &lt;b&gt;추론 기구 (Inference Engine) &lt;/b&gt;를 활용하여 결정을 내리거나 문제를 해결함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-809c-81d4-dbe4e442c49e&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;증강현실 (AR;&lt;br /&gt;Augmented Reality)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;실제 촬영한 화면에 가상의 정보를 부가하여 보여주는 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80da-92b0-eff8d9e51892&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;혼합현실 (MR;&lt;br /&gt;Mixed Reality)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;물리적인 객체와 가상의 객체가 상호작용할 수 있는 환경을 구현하는 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8061-a5e7-f61a67e9e8cd&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;그레이웨어&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;사용자 입장에서는 유용할 수도, 악의적일 수도 있는&lt;br /&gt;애드웨어, 트랙웨어, 기타 악성코드나 악성 공유웨어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80f5-87ea-c5420e41fddc&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;매시업 (Mashup)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술&lt;br /&gt;&lt;b&gt;예: 날씨 API + 캘린더 &amp;rarr; 일정별 날씨 알림&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-804a-8ad9-faa100475805&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;리치 인터넷 &lt;br /&gt;애플리케이션&lt;br /&gt;(RIA)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&lt;b&gt;플래시 애니메이션 기술&lt;/b&gt;과 웹 서버 애플리케이션 기술을 통합하여 기존 HTML 보다 역동적이고 인터랙티브한 웹페이지를 제공하는 신개념 플래시 웹페이지 제작 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-806b-8de3-ec21dfb752e0&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;시맨틱 웹&lt;br /&gt;(Semantic Web)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹&lt;br /&gt;&amp;bull; 핵심 기술 : 웹 자원(Resource)을 서술하기 위한 &lt;b&gt;자원 서술 기술&lt;/b&gt;, 온톨로지(Ontology) 를 통한&lt;b&gt; 지식 서술 기술&lt;/b&gt;, 통합적으로 운영하기 위한 &lt;b&gt;에이전트(Agent) 기술&lt;br /&gt;&lt;/b&gt;*&lt;b&gt;온톨로지 &lt;/b&gt;: 컴퓨터도 정보를 이해할 수 있도록 해 주는 개념화 명세. 단어와 관계들로 구성된 일종의 사전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8041-9348-d2eced48b90c&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;증발품 (Vaporware)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;판매계획, 배포계획은 발표되었으나 실제로 판매, 배포되지 않고 있는 소프트웨어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8046-905b-d2597a3545c5&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;오픈 그리드 서비스&lt;br /&gt;아키텍처 (OGSA; Open&lt;br /&gt;Grid Service Architecture)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 애플리케이션 공유를 위한 웹 서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준 (그리드 자원을 서비스(Service)로 추상화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80b2-97d9-ef0fd35cf89b&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;서비스 지향 아키텍처&lt;br /&gt;(SOA; Service Oriented&lt;br /&gt;Architecture)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 정보시스템(기업의 소프트웨어 인프라)을 구축하는 정보기술 아키텍처&lt;br /&gt;&amp;bull; 기업의 IT 시스템을 비즈니스에 맞춰 유연하게 사용할 수 있음&lt;br /&gt;&amp;bull; &lt;b&gt;SOA 기반 애플리케이션 구성 계층&lt;/b&gt; : 표현(Presentation) 계층, 업무 프로세스(Biz-Process) 계층, 서비스 중간(Service Intermediary) 계층, 애플리케이션(Application) 계층, 데이터 저장(Persistency) 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80c9-8199-f7fc8494ed56&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;서비스형 소프트웨어(SaaS;&lt;br /&gt;Software as a Service)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 소프트웨어 여러 기능 중 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어. 예) Google Docs, Microsoft 365, Notion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80e3-996d-c520f542bf2d&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;복잡 이벤트 처리&lt;br /&gt;(CEP; Complex Event&lt;br /&gt;Processing)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 실시간으로 발생하는 많은 사건들 중 의미가 있는 것만을 추출할 수 있도록&lt;b&gt; 사건 발생 조건을 정의&lt;/b&gt;하는 데이터 처리 방법&lt;br /&gt;&amp;bull; 금융, 통신, 전력, 물류, 국방 등에서 대용량 데이터 스트림에 대한 요구에 실시간으로 대응하기 위하여 개발된 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8048-a991-d184ceab6c06&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;디지털 트윈&lt;br /&gt;(Digital Twin)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 현실속의 사물을 소프트웨어로 가상화한 모델&lt;br /&gt;&amp;bull; 주로 현실 속 사물을 대신해 다양한 상황을 &lt;b&gt;모의실험&lt;/b&gt;하기 위한 용도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8077-bd02-db7f4dd71dd8&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;텐서플로 (TensorFlow)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;&amp;bull; 구글의 &lt;b&gt;구글 브레인(Google Brain)&lt;/b&gt; 팀이 만든, 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리&lt;br /&gt;&amp;bull; &lt;b&gt;C++&lt;/b&gt; 로 제작되었고, &lt;b&gt;구글 검색, 음성 인식, 번역&lt;/b&gt; 등 구글 서비스 전반에서 다양하게 사용되고 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80ff-bc1a-d70997c2b1b1&quot;&gt;
&lt;td id=&quot;@&amp;gt;xu&quot; style=&quot;width: 25.3488%;&quot;&gt;스크래피 (Scrapy)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;SZE&quot; style=&quot;width: 74.5349%;&quot;&gt;파이썬 기반의 웹 크롤링 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;b&gt;보안 관련 신기술 &lt;/b&gt;&lt;/h1&gt;
&lt;table id=&quot;2fdade4d-adab-80ce-a9c4-d2453152c9ac&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fdade4d-adab-80a3-9e6d-c036b3c3635e&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;블록체인 (BlockChain)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; 분산 원장 기술(DLT; Distributed Ledger Technology) : 중앙 관리자나 중앙 데이터 저장소가 존재하지 않고 P2P 참여자들에게 모든 거래 기록이 분산 저장되어 거래 발생 시마다 지속적으로 갱신되는 디지털 원장. &amp;rarr; 블록체인&lt;br /&gt;&amp;bull; P2P 네트워크를 이용하여 온라인 금융거래 정보를 온라인 네트워크 참여자(Peer)의 디지털 장비에 분산 저장하는 기술&lt;br /&gt;&amp;bull; 블록마다 &lt;b&gt;이전 블록 해시&lt;/b&gt; 포함 &amp;rarr; 하나라도 바꾸면 뒤 블록 전부 깨짐, 분산 저장이라 &lt;b&gt;한 놈만 고쳐서는 소용없음. &lt;/b&gt;이런 이유로 변조가 어렵다.&lt;br /&gt;&amp;bull; 암호화폐, 전자 계약, 공급망 추적, 투표 시스템, 디지털 자산 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-803f-a8d8-dc9557f6d3ca&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;양자 암호키 분배&lt;br /&gt;(QKD; Quantum Key&lt;br /&gt;Distribution)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; 양자 통신을 위해 비밀키를 분배하여 관리하는 기술&lt;br /&gt;&amp;bull; 두 시스템에 양자 암호키 분배 시스템을 설치하여 운용하는 방식으로 활용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-803a-81fe-e977e274b7b3&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;프라이버시 강화 기술&lt;br /&gt;(PET; Privacy Enhancing&lt;br /&gt;Technology)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;개인정보 위험 관리 기술. 암호화, 익명화, 사용자가 직접 개인정보를 통제하기 위한 기술 모두를 통칭함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-806b-9087-fa886478c1c7&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;비트로커 (BitLocker)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; Windows 7 부터 지원. Windows 전용 볼륨 암호화 기술&lt;br /&gt;&amp;bull; TPM(Trusted Platform Module, 보안 프로세서, 장치에 대한 추가 암호화), 과 AES-128 알고리즘을 사용함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8076-9a52-ff64c594b43c&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;개인정보 영향평가 제도&lt;br /&gt;(PIA; Privacy Impact&lt;br /&gt;Assessment)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;개인정보를 활용하는 새로운 정보시스템 도입 또는 변경시 시스템의 구축, 운영이 고객은 물론 일반 국민의 사생활에 미칠 영향에 대해 미리 조사/분석/평가하는 제도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-80ef-9979-e9b01b27f626&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;소프트웨어 에스크로(임치)&lt;br /&gt;(Software Escrow)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;소스 프로그램과 기술 정보 등을 제 3의 기관에 보관하는 것&lt;br /&gt;&amp;rarr; 소프트웨어 개발자의 지식재산권 보호&lt;br /&gt;&amp;rarr; 사용자는 저렴한 비용으로 안정적인 사용 및 유지보수를 받을 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8063-b6d9-dd92a3e2fdb8&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;서비스형 블록체인(BaaS;&lt;br /&gt;Blockchain as a Service)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; 블록체인 앱의 개발 환경을 클라우드 기반으로 제공하는 서비스&lt;br /&gt;&amp;bull; 블록체인 네트워크에 노드 추가 및 제거가 용이함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-800a-883b-dfce0446e038&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;OWASP (the Open Web&lt;br /&gt;Application Security Project, &lt;br /&gt;오픈 웹 애플리케이션 &lt;br /&gt;보안 프로젝트)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; 비영리 단체&lt;br /&gt;&amp;bull; 웹 정보 노출, 악성 코드, 스크립트, 보안 취약점을 연구&lt;br /&gt;&amp;bull; 10대 웹 애플리케이션 취약점을 3~4년에 한번씩 발표하고 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8041-98be-d63592e328c5&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;TCP 래퍼 (TCP Wrapper)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&lt;b&gt; &amp;bull; 외부 컴퓨터의 접속 인가 여부를 점검하여 접속을 허용 및 거부하는 보안용 도구 (=출입문 경비)&lt;br /&gt;&amp;bull; inetd / xinetd 같은 슈퍼 데몬과 연동되어 있거나&lt;br /&gt;&amp;bull; ssh, ftp, telnet 같은 TCP 서비스 앞단&lt;/b&gt; 에 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-8078-96d6-efed759a39b8&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;허니팟 (Honeypot)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;&amp;bull; 침입자를 속여 공격을 당하는것처럼 속임&lt;br /&gt;&amp;bull; 추적 및 공격기법에 대한 정보를 수집하기 위해 의도적으로 만듬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fdade4d-adab-806a-89dc-f8401fb8a3fb&quot;&gt;
&lt;td id=&quot;gi]y&quot; style=&quot;width: 26.9768%;&quot;&gt;DPI&lt;br /&gt;(Deep Packet Inspection)&lt;/td&gt;
&lt;td id=&quot;Cup^&quot; style=&quot;width: 72.7906%;&quot;&gt;OSI 7 레이어 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을 조정하기 위한 패킷 분석 기술&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;HW 관련 신기술&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;고가용성 솔루션 (HACMP; High Availability Clustering Multi Processing)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결할 수 있음&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;앤 스크린(N-Screen)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예) Netflix&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;DB 관련 신기술&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빅데이터&lt;/b&gt; : 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형 데이터 집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;브로드 데이터&lt;/b&gt; : 다양한 채널에서 소비자와 상호 작용을 통해 생성된 다양한 정보. 기업 마케팅에 있어 효율적이고 다양한 데이터. 예) 소비자의 SNS 활동, 위치정보 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메타 데이터&lt;/b&gt; : 데이터를 정의하고 설명해 주는 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;디지털 아카이빙&lt;/b&gt; : 디지털 정보 자원을 장기적으로 보존하기 위한 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;하둡 (Hadoop)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반 PC 급 컴퓨터들로 &lt;b&gt;가상화된 대형 스토리지&lt;/b&gt;를 형성하고 그 안에 &lt;b&gt;보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발&lt;/b&gt;된 자바 소프트웨어 프레임워크. 구글, 야후 등에 적용되고 있음&lt;/li&gt;
&lt;li&gt;하둡과 관계형 데이터베이스(RDB) 간 대용량 데이터 전송 시 &lt;b&gt;스쿱 (Scoop)&lt;/b&gt; 이라는 도구를 사용함&lt;/li&gt;
&lt;li&gt;*&lt;b&gt;스쿱&lt;/b&gt; : 하둡-RDB 간 효율적으로 데이터를 이관하고 변환해 주는 명령줄 인터페이스 애플리케이션&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;맵리듀스 (MapReduce)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델. 흩어져 있는 데이터를&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연관성 있는 데이터 분류로 묶는 &amp;rarr; Map 작업 후&lt;/li&gt;
&lt;li&gt;중복 데이터를 제거하고 원하는 데이터를 추출하는 &amp;rarr; Reduce 작업 수행&lt;/li&gt;
&lt;li&gt;Google 에 의해 고안됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;타조 (Tajo)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아파치 하둡 (Apache Hadoop) 기반의 분산 데이터 웨어하우스 프로젝트&lt;/b&gt;로, 우리나라가 주도하여 개발하고 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;데이터 웨어하우스&lt;/b&gt; : 여러 시스템에 분산되어 있는 데이터를 주제별로 통합, 축적해 놓은 데이터베이스&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타조는 하둡의 빅데이터를 분석할 때 맵리듀스를 사용하지 않고 &lt;b&gt;구조화 질의 언어 (SQL)를 사용&lt;/b&gt;하여 &lt;b&gt;하둡 분산 파일 시스템 (HDFS; Hadoop Distributed File System) 파일&lt;/b&gt;을 바로 읽어낼 수 있다.&lt;/li&gt;
&lt;li&gt;타조는 &lt;b&gt;대규모 데이터 처리&lt;/b&gt;와 &lt;b&gt;실시간 상호 분석&lt;/b&gt;에 모두 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터 다이어트 (Data Diet)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 삭제하는 것이 아닌 &lt;b&gt;압축, 중복 배제, 새로운 기준에 따라 나누어 저장&lt;/b&gt;하는 작업이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;같은 단어가 포함된 데이터들을 한 곳에 모아 두되 필요할 때 제대로 찾아내는 체계를 갖추는 것이 중요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터 마이닝 (Data Mining)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OLAP (Online Analytical Processing)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OLAP 시스템은 데이터 웨어하우스나 데이터 마트와 같은 시스템과 상호 연관되어 있는 정보 시스템이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OLAP 연산&lt;/b&gt; : Roll-Up, Drill-Down, Drill-Through, Drill-Access, Pivoting, Slicing, Dicing
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Slice&lt;/b&gt;: 한 겹 떼어내기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dice&lt;/b&gt;: 여러 조건으로 잘라내기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pivoting&lt;/b&gt;: 축 돌리기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Drill-Down / Roll-Up&lt;/b&gt;: 확대 / 축소 예) 연도 &amp;rarr; 월 &amp;rarr; 일 (&lt;b&gt;Drill-Down ),&lt;/b&gt; 일 &amp;rarr; 월 &amp;rarr; 연도(&lt;b&gt;Roll-up)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Drill-Through / Drill-Access&lt;/b&gt;: 요약에서 원본으로 내려가기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;보고서 뽑는 데 특화된 DB 사용 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;회복 / 병행제어&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;회복 (Recovery)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션 수행 중 장애가 발생하여 데이터베이스가 손상되었을 때 손상 이전 정상 상태로 복구하는 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장애 유형 : 트랜잭션 장애, 시스템 장애, 미디어 장애&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;회복 관리기 (Recovery Management)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DBMS의 구성 요소&lt;/li&gt;
&lt;li&gt;메모리 덤프, 로그(Log) 를 이용하여 회복을 수행한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;덤프 (Dump)&lt;/b&gt; : 주기적으로 데이터베이스 전체를 복사해두는 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그 (Log)&lt;/b&gt; : 갱신되기 전후 내용을 기록하는 별도의 파일로, 저널 (Journal) 이라고도 함&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;회복 기법&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-8050-84ad-ebf2c7ec2617&quot; style=&quot;border-collapse: collapse; width: 100%; height: 359px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-8079-a1f6-c72b6ac10e44&quot; style=&quot;height: 88px;&quot;&gt;
&lt;td id=&quot;IF[A&quot; style=&quot;height: 88px; width: 18.2558%;&quot;&gt;&lt;b&gt;연기 갱신 기법&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Deferred&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Update)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;HkSa&quot; style=&quot;height: 88px; width: 81.6279%;&quot;&gt;&amp;bull; 트랜잭션 수행 동안 갱신된 내용은 일단 Log에 보관된다.&lt;br /&gt;&amp;bull; 트랜잭션 부분 완료 시점에 Log에 보관한 갱신 내용을 실제 데이터베이스에 기록한다.&lt;br /&gt;&amp;bull; Redo 작업만 가능하다.&lt;br /&gt;*재시도 (Redo) : 덤프와 로그를 이용하여 가장 최근 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행시킴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80f6-8f78-cb0ad187083d&quot; style=&quot;height: 94px;&quot;&gt;
&lt;td id=&quot;IF[A&quot; style=&quot;height: 94px; width: 18.2558%;&quot;&gt;&lt;b&gt;즉각 갱신 기법&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Immediate&lt;/b&gt;&lt;br /&gt;&lt;b&gt;update)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;HkSa&quot; style=&quot;height: 94px; width: 81.6279%;&quot;&gt;&amp;bull; 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법&lt;br /&gt;&amp;bull; 갱신된 내용들은 Log에 보관시킨다.&lt;br /&gt;&amp;bull; 회복 작업시 Redo, Undo 모두 가능하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8032-b125-f25b4f798909&quot; style=&quot;height: 100px;&quot;&gt;
&lt;td id=&quot;IF[A&quot; style=&quot;height: 100px; width: 18.2558%;&quot;&gt;&lt;b&gt;그림자 페이지&lt;/b&gt;&lt;br /&gt;&lt;b&gt;대체 기법&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Shadow Paging)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;HkSa&quot; style=&quot;height: 100px; width: 81.6279%;&quot;&gt;&amp;bull; 갱신 이전 데이터베이스를 일정 크기 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지를 복사 보관 후, 장애 발생으로 롤백 시 이를 대체하는 기법&lt;br /&gt;&amp;bull; 로그, Undo, Redo 알고리즘이 필요 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8063-9efe-d522013252e8&quot; style=&quot;height: 77px;&quot;&gt;
&lt;td id=&quot;IF[A&quot; style=&quot;height: 77px; width: 18.2558%;&quot;&gt;&lt;b&gt;검사점 기법&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Check Point)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;HkSa&quot; style=&quot;height: 77px; width: 81.6279%;&quot;&gt;&amp;bull; 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용, 시스템 상황 등에 관한 정보와 함께 검사점을 로그에 보관해 두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 하여 회복시간을 절약하도록 하는 기법&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;병행제어 (Concurrency Control)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 프로그램의 이점&lt;/b&gt;을 활용하여 동시에 여러 개의 트랜잭션을 병행수행할 때, 이들이 데이터베이스의 일관성을 파괴하지 않도록 &lt;b&gt;트랜잭션 간의 상호작용을 제어&lt;/b&gt;하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;다중 프로그램의 이점 : 프로세서 이용률 증가, 전체 트랜잭션의 작업 처리율 향상&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;병행제어의 목적&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스의 공유를 최대화한다&lt;/li&gt;
&lt;li&gt;시스템의 활용도를 최대화한다&lt;/li&gt;
&lt;li&gt;데이터베이스 일관성을 유지한다&lt;/li&gt;
&lt;li&gt;사용자의 응답 시간을 최소화한다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;병행제어 기법의 종류&lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-80b9-b345-d75a6dc451c1&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-8061-98f2-efa51b7d83a8&quot;&gt;
&lt;td id=&quot;xlCd&quot;&gt;&lt;b&gt;로킹 (Locking)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;zcY}&quot;&gt;&amp;bull; &lt;b&gt;주요 데이터의 액세스를 상호 배타적으로 하는 것&lt;/b&gt;&lt;br /&gt;&amp;bull; 트랜잭션들이 &lt;b&gt;어떤 로킹 단위를 액세스하기 전 Lock(잠금) 을 요청 &lt;br /&gt;&lt;/b&gt;&amp;rarr; &lt;b&gt;Lock 이 허락되어야만 그 로킹 단위를 액세스할 수 있도록&lt;/b&gt; 하는 기법&lt;br /&gt;&amp;bull; 로킹 단위 : 한꺼번에 로킹할 수 있는 객체의 크기. 이 크기에 따라 병행성 수준이 높아지고 낮아진다. 데이터베이스, 파일, 레코드, 필드 등.&lt;br /&gt;&amp;bull; 병행성 수준이 높다 = 데이터베이스 공유도가 증가한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8090-99f1-f4ce30321bc4&quot;&gt;
&lt;td id=&quot;xlCd&quot;&gt;&lt;b&gt;타임 스탬프 순서&lt;br /&gt;(Time Stamp&lt;br /&gt;Ordering)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;zcY}&quot;&gt;&amp;bull; 직렬성 순서를 결정하기 위해 트랜잭션 간 &lt;b&gt;처리 순서를 미리 선&lt;/b&gt;택하는 기법들 중 가장 보편적인 작업&lt;br /&gt;&amp;bull; 트랜잭션 또는 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전 &lt;b&gt;시간표(Time Stamp)를 부여&lt;/b&gt; &amp;rarr; 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법&lt;br /&gt;&amp;bull; &lt;b&gt;교착상태가 발생하지 않는다.&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80f1-9ce3-f60ad5d78998&quot;&gt;
&lt;td id=&quot;xlCd&quot;&gt;&lt;b&gt;최적 병행수행 기법&lt;br /&gt;(검증 기법, 확인 기법,&lt;br /&gt;낙관적 기법, OCC)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;zcY}&quot;&gt;&amp;bull; 병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read-Only) 트랜잭션일 경우 충돌률이 매우 낮아져 병행제어 기법을 사용하지 않고 실행되어도 된다는 점을 이용한 기법&lt;br /&gt;&amp;bull; 충돌 거의 없다고 가정하고 일단 다 실행 &amp;rarr; 마지막에 검사 &amp;rarr; 문제 있으면 롤백&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8093-8ce1-f74dfa1f98a0&quot;&gt;
&lt;td id=&quot;xlCd&quot;&gt;&lt;b&gt;다중 버전 기법&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;zcY}&quot;&gt;&amp;bull; 타임 스탬프의 개념을 이용하는 방법. 다중 버전 타임 스탬프 기법이라고도 함&lt;br /&gt;&amp;bull; 차이점은 시간 자체가 아닌 갱신될 떄마다 버전을 부여하여 관리한다는 것&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;▼ 다른&amp;nbsp;병행제어&amp;nbsp;기법은&amp;nbsp;교착상태가&amp;nbsp;발생하는가&amp;nbsp;?&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타임 스탬프 순서 (Time Stamp Ordering) 의 특징 : 교착상태가 발생하지 않는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 교착 자체가 설계상 불가능하기 때문이다. (대기wait 를 하지 않으므로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Lock 기반 (2PL, 엄격 2PL 등)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Lock 을 잡고 다른 Lock 을 기다리는 방식이므로 &amp;rarr; 서로 기다리면 Deadlock&lt;/li&gt;
&lt;li&gt;그래서 Deadlock detection, Deadlock preventation 보조기법이 따로 존재함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;낙관적 병행제어 (OCC)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 중엔 Lock 없음&lt;/li&gt;
&lt;li&gt;검증 단계에서 충돌 &amp;rarr; 롤백&lt;/li&gt;
&lt;li&gt;교착은 거의 없음 (대기 구조 없음) &amp;rarr; 그러나 재시도 폭증 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;▼&lt;span&gt; &lt;span data-token-index=&quot;0&quot;&gt;최적 병행수행 기법(OCC, 낙관적 기법) 동작 3단계&lt;/span&gt; &lt;/span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① Read Phase (읽기 단계)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 읽고&lt;/li&gt;
&lt;li&gt;로컬 복사본에서 계산&lt;/li&gt;
&lt;li&gt;DB에 &lt;b&gt;아직 반영 안 함&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② Validation Phase (검증 단계)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 트랜잭션과 충돌 여부 검사&lt;/li&gt;
&lt;li&gt;직렬성 보장 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;충돌 있으면 &amp;rarr; &lt;b&gt;Abort (롤백)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ Write Phase (쓰기 단계)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;검증 통과한 트랜잭션만 실제 DB 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;교착상태 (Dead Lock)&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상호 배제에 의해 나타나는 문제점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;상호 배제&lt;/b&gt; : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다는 것&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;교착 상태의 필요충분조건 4가지&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;상호 배제 (Mutual Exclusion)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;점유와 대기 (Hold and Wait)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비선점 (Non-Preemption)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;환형 대기 (Circular Wait)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;교착상태 해결 방법&lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-802c-b9dc-f503c45d3dc7&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-80ef-801d-c5d2f5490a21&quot;&gt;
&lt;td id=&quot;{zQT&quot; style=&quot;width: 17.093%;&quot;&gt;&lt;b&gt;예방 기법&lt;br /&gt;(Prevention)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;OHCn&quot; style=&quot;width: 82.7907%;&quot;&gt;&amp;bull; 교착상태 4 가지 조건 중 하나를 제거하는 방법&lt;br /&gt;&amp;bull; &lt;b&gt;자원의 낭비가 가장 심한 방법임&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-801e-bf48-fd2b58afdb62&quot;&gt;
&lt;td id=&quot;{zQT&quot; style=&quot;width: 17.093%;&quot;&gt;&lt;b&gt;회피 기법&lt;br /&gt;(Avoidance)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;OHCn&quot; style=&quot;width: 82.7907%;&quot;&gt;&amp;bull; 교착상태 발생시 적절히 피해나가는 방법. 주로 은행원 알고리즘이 사용됨 &lt;br /&gt;&amp;bull;&lt;b&gt; 은행원 알고리즘 (Banker&amp;rsquo;s Algorithm)&lt;/b&gt; : 교착상태로 갈 가능성이 있으면 아예 할당을 안 하는 방식 (자원요청 &amp;rarr; 가상으로 할당해 본 후 &amp;rarr; 안전 상태인지 검사 &amp;rarr; 실제 할당/거부&lt;b&gt;)&lt;/b&gt;. Dijkstra 가 제안.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80f2-8fe3-d78fe9929a38&quot;&gt;
&lt;td id=&quot;{zQT&quot; style=&quot;width: 17.093%;&quot;&gt;&lt;b&gt;발견 기법&lt;br /&gt;(Detection)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;OHCn&quot; style=&quot;width: 82.7907%;&quot;&gt;&amp;bull; 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것&lt;br /&gt;&amp;bull;&lt;b&gt; 교착상태 발견 알고리즘&lt;/b&gt;과 &lt;b&gt;자원 할당 그래프 &lt;/b&gt;등을 사용할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80d3-9dd1-d4d99ae3e930&quot;&gt;
&lt;td id=&quot;{zQT&quot; style=&quot;width: 17.093%;&quot;&gt;&lt;b&gt;회복 기법&lt;br /&gt;(Recovery)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;OHCn&quot; style=&quot;width: 82.7907%;&quot;&gt;교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;Secure SDLC&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SDLC에 보안 강화를 위한 프로세스를 포함한 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;b&gt;SDLC&lt;/b&gt; : 소프트웨어 개발 생명주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법론&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CLASP&lt;/b&gt; : Secure Software 사 개발. 활동 중심, 역할 기반 프로세스로 구성됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SDL&lt;/b&gt; : 마이크로소프트 개발. 전통적 나선형 모델 기반&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Seven Touchpoints&lt;/b&gt; : SW 개발 보안 모범사례를 SDLC 에 통합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보안 요소&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기밀성(인가된 사용자만 접근) / 무결성(인가된 사용자만 수정) / 가용성 / 인증 / 부인방지(송수신 증거)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;보안 약점&lt;/b&gt;&lt;/h1&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;b&gt;세션 통제&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션 통제 보안 약점 : 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;불충분한 세션 관리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인&lt;/b&gt; : 일정한 규칙이 존재하는 세션ID 발급, 타임아웃이 너무 길게 설정된 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세션 하이재킹&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 접속하고 있는 클라이언트들의 세션 정보(세션ID) 탈취 기법&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적인 연결을 RST(Reset) 패킷을 통해 종료시킨 후 재연결 시 희생자가 아닌 공격자에게 연결&lt;/li&gt;
&lt;li&gt;공격자는 서버와 상호 간의 동기화된 시퀀스 번호를 이용하여 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근할 수 있게 됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;탐지 방법&lt;/b&gt; : 비동기화 상태 탐지, ACK Storm 탐지, 패킷의 유실 탐지, 예상치 못한 접속의 리셋 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;잘못된 세션에 의한 정보 노출&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인&lt;/b&gt; : &lt;b&gt;다중 스레드(Multi Thread, 멀티스레드) 환경에서 멤버 변수에 정보를 저장&lt;/b&gt;할 때 발생&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;싱글톤 패턴&lt;/b&gt;에서 발생하는 &lt;b&gt;레이스컨디션&lt;/b&gt;으로 인해 동기화 오류가 발생하거나, 멤버변수의 정보가 노출될 수 있음&lt;/li&gt;
&lt;li&gt;*&lt;b&gt;레이스컨디션&lt;/b&gt; : 두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태&lt;/li&gt;
&lt;li&gt;멤버 변수보다 &lt;b&gt;지역 변수를 활용&lt;/b&gt;하여 &lt;b&gt;변수의 범위를 제한&lt;/b&gt;함으로써 방지할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;세션 설계시 고려사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그아웃 요청시 할당된 세션이 완전히 제거되도록 함&lt;/li&gt;
&lt;li&gt;세션 타임아웃은 중요도에 따라 2-5분, 15-30분 으로 한다.&lt;/li&gt;
&lt;li&gt;이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계한다&lt;/li&gt;
&lt;li&gt;패스워드 변경 시 활성화된 세션을 삭제하고 재할당한다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;세션ID 관리 방법&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;세션ID의 예측이 불가하도록 안전한 난수 알고리즘 사용&lt;/li&gt;
&lt;li&gt;세션ID가 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계&lt;/li&gt;
&lt;li&gt;&lt;b&gt;*URL Rewrite&lt;/b&gt; : 쿠키를 사용할 수 없는 환경에서 세션ID 전달을 위해 URL에 세션ID를 포함시키는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h1&gt;&lt;b&gt;입력 데이터 검증 및 표현&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유효성 검증 체계를 갖추고, 자료형 확인, 일관된 언어 셋을 사용하도록 코딩한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 데이터 검증 및 표현의 보안 약점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 데이터 검증 및 표현 관련된 점검을 수행하지 않은 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; SQL 삽입, 자원 삽입, 크로스사이트 스크립팅(XSS), 운영체제 명령어 삽입 등의 공격에 취약&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보안 약점의 종류&lt;/b&gt;&lt;/p&gt;
&lt;table id=&quot;2feade4d-adab-8096-b16e-c681b58d0db9&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-809c-9849-ded140893952&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;SQL 삽입&lt;br /&gt;(SQL Injection)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 웹 응용프로그램에 SQL 삽입 &amp;rarr; 내부 DB의 데이터를 유출, 변조하고 관리자 인증을 우회하는 보안 약점&lt;br /&gt;&amp;bull; &lt;b&gt;동적 쿼리&lt;/b&gt; 에 사용되는 입력 데이터에&lt;b&gt; 예약어 및 특수문자가 입력되지 않게 필터&lt;/b&gt;링 되도록 설정하여 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8039-9457-c3bda91d2114&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;경로 조작 및&lt;br /&gt;자원 삽입&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제할 수 있는 보안 약점&lt;br /&gt;&amp;bull; 사용자 입력값을 식별자로 사용하는 경우 경로 순회 공격 을 막는 필터를 사용하여 방지&lt;br /&gt;*경로 순회 공격 (Path Traversal) : ../ 과 같은 것을 이용해 접근하면 안 되는 파일을 읽거나 실행하는 공격&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-804c-9947-d36e8a7d848c&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;크로스사이트 &lt;br /&gt;스크립팅 (XSS; &lt;br /&gt;Cross Site &lt;br /&gt;Scripting)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발하는 보안 약점&lt;br /&gt;&amp;bull; HTML 태그의 사용을 제한하거나, 스크립트에 삽입되지 않도록 &amp;lt; &amp;gt; &amp;amp; 등의 문자를 다른 문자로 치환함으로써 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80d4-9c2d-d289dad48e46&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;운영체제&lt;br /&gt;명령어 삽입&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점&lt;br /&gt;&amp;bull; 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-809f-9dd8-ff523d4e7685&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;위험한 형식&lt;br /&gt;파일 업로드&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점&lt;br /&gt;&amp;bull; 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8073-9331-cd72f7518191&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;신뢰되지 않는&lt;br /&gt;URL 주소로&lt;br /&gt;자동접속 연결&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점&lt;br /&gt;&amp;bull; 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8069-8899-cc0d925d03b7&quot;&gt;
&lt;td id=&quot;GDwz&quot; style=&quot;width: 17.3256%;&quot;&gt;메모리 버퍼&lt;br /&gt;오버플로&lt;/td&gt;
&lt;td id=&quot;&amp;#96;JuE&quot; style=&quot;width: 82.5581%;&quot;&gt;&amp;bull; 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점&lt;br /&gt;&amp;bull; 프로그램의 오동작 유발, 악의적인 코드 실행 &amp;rarr; 공격자가 프로그램을 통제할 수 있는 권한을 획득하게 한다.&lt;br /&gt;&amp;bull; 메모리 버퍼를 사용할 경우 적절한 버퍼 크기를 설정하고, 설정된 범위의 메모리 내에서 올바르게 읽거나 쓸 수 있도록 함으로써 방&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h1&gt;&lt;b&gt;에러처리&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러처리 미비로 인한 코딩이 유발하는 보안 약점으로 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재, 부적절한 예외 처리가 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;오류 메시지를 통한 정보 노출&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예외처리 구문에 예외의 이름이나 스택 트레이스를 출력하도록 코딩한 경우 소프트웨어의 내부구조가 간파당할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;*스택 트레이스&lt;/b&gt; : 오류 발생 위치를 추적하기 위해 소프트웨어가 실행 중에 호출한 메소드의 리스트를 기록한 것&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;부적절한 예외 처리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h1&gt;&lt;b&gt;코드 오류&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩 중 실수하기 쉬운 형(Type) 변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;널 포인터 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지 않은 변수 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;널 포인터 (Null Pointer) 역참조&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;널 포인터가 가리키는 메모리에 어떤 값을 저장할 떄 발생&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많은 라이브러리 함수들이 오류가 발생할 경우 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생&lt;/li&gt;
&lt;li&gt;대부분의 운영체제에서 널 포인터는 메모리의 첫 주소를 가리킴&lt;/li&gt;
&lt;li&gt;널이 될 수 있는 포인터를 이용하기 전 널 값을 갖고 있는지 검사함으로써 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스택 가드 (Stack Guard)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;널 포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나&lt;/li&gt;
&lt;li&gt;버퍼와 리턴주소 사이에 &amp;lsquo;감시값(카나리)&amp;rsquo;을 넣어, 스택 오버플로 발생 시 프로그램을 즉시 종료시키는 보호 기법&lt;/li&gt;
&lt;li&gt;메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로 상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막는 기술&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;부적절한 자원 해제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 떄 발생&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;힙 메모리, 소켓 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못 할 수 있음&lt;/li&gt;
&lt;li&gt;프로그램 내 자원 반환 코드 누락 확인, 예외처리에 관계없이 자원이 반환되도록 코딩함으로써 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;b&gt;암호 알고리즘&lt;/b&gt;&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;해시(Hash)&lt;/b&gt; 를 사용하는 &amp;rarr; &lt;b&gt;단방향&lt;/b&gt; 암호 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;개인키 및 공개키&lt;/b&gt;로 분류되는 &amp;rarr; &lt;b&gt;양방향&lt;/b&gt; 암호 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZrvfu/dJMcabbZULz/dncj3STncxe8mhqZP08o1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZrvfu/dJMcabbZULz/dncj3STncxe8mhqZP08o1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZrvfu/dJMcabbZULz/dncj3STncxe8mhqZP08o1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZrvfu%2FdJMcabbZULz%2Fdncj3STncxe8mhqZP08o1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;335&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개인키 암호화 기법&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 대상이 n 개일 때 &amp;rarr; 사용되는 키 : n(n-1)/2 개&lt;/li&gt;
&lt;li&gt;단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;블록 암호화 방식&lt;/b&gt; : DES , SEED , AES , ARIA , IDEA&lt;/li&gt;
&lt;li&gt;&lt;b&gt;스트림 암호화 방식&lt;/b&gt; : LFSR , RC4&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;공개키 암호화 기법&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 대상이 n 개일 때 &amp;rarr; 사용되는 키 : 2n 개&lt;/li&gt;
&lt;li&gt;단점 : 암호화, 복호화 속도가 느림, 알고리즘이 복잡하고, 개인키 암호화 기법보다 파일의 크기가 크다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공개키 기반 구조 (PKI; Public Key Infrastructure)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공개키 암호 시스템을 안전하게 사용하고 관리하기 위한 정보보호 표준 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I&lt;b&gt;TU-T 의 X.509 방식과 비X.509 방식&lt;/b&gt;으로 구분됨&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;X.509 방식&lt;/b&gt; : 인증기관에서 발생하는 &lt;b&gt;인증서를 기반&lt;/b&gt;으로 상호 인증을 제공&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비X.509 방식&lt;/b&gt; : 국가, 지역별로 맞게 보완 및 개발&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;양방향 알고리즘 종류&lt;/b&gt;&lt;/h3&gt;
&lt;table id=&quot;2feade4d-adab-80e9-901a-cd6d024ed250&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-803e-a790-f93706a770fd&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;SEED&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&lt;b&gt;한국인터넷진흥원(KISA)&lt;/b&gt; 에서 개발한 &lt;b&gt;블록 암호화&lt;/b&gt; 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80eb-890c-efcb2baba0e5&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;ARIA (Academy,&lt;br /&gt;Research Institute,&lt;br /&gt;Agency)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; 2004년 &lt;b&gt;국가정보원과 산학연협회&lt;/b&gt;가 개발한 &lt;b&gt;블록 암호화&lt;/b&gt; 알고리즘&lt;br /&gt;&amp;bull; 학계(Academy), 연구기관(Research Institute), 정부(Agency)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80d7-98f2-ea655365b81c&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;DES (Data Encryption&lt;br /&gt;Standard)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; &lt;b&gt;미국 NBS &lt;/b&gt;에서 발표한 &lt;b&gt;개인키 암호화&lt;/b&gt; 알고리즘&lt;br /&gt;&amp;bull; DES 를 3번 적용한 강화된 3DES 도 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80f8-960a-ea15f3e9a709&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;AES (Advanced&lt;br /&gt;Encryption Standard)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; &lt;b&gt;미국 표준기술연구소 (NIST) &lt;/b&gt;에서 발표한 &lt;b&gt;개인키 암호화&lt;/b&gt; 알고리즘&lt;br /&gt;&amp;bull; DES 의 한계로 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8032-a851-fd3a13aefe46&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;RSA (Rivest Shamir&lt;br /&gt;Adleman)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; &lt;b&gt;MIT &lt;/b&gt;의 라이베스트, 샤미르, 애들먼에 의해 제안된 &lt;b&gt;공개키 암호화 &lt;/b&gt;알고리즘&lt;br /&gt;&amp;bull; 큰 숫자를&lt;b&gt; 소인수분해&lt;/b&gt;하기 어렵다는 것에 기반하여 만들어짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-806c-9370-fdc76e94d0b8&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;ECC (Elliptic Curve&lt;br /&gt;Cryptography)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; RSA 암호 방식의 대안으로 제안됨&lt;br /&gt;&amp;bull; &lt;b&gt;이산대수 문제를 타원곡선으로 옮겨 &lt;/b&gt;기밀성과 효율성을 높인 암호화 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-801a-8dbd-d241a3c11fa4&quot;&gt;
&lt;td id=&quot;|tNZ&quot;&gt;&lt;b&gt;Rabin&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;f&amp;lt;wH&quot;&gt;&amp;bull; 미하엘 라빈이 제안&lt;br /&gt;&amp;bull; &lt;b&gt;소인수분해&lt;/b&gt;의 어려움에 안전성의 근거를 둔 암호화 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;해시 (Hash)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복호화가 거의 불가능한 일방향 함수에 해당함&lt;/p&gt;
&lt;table id=&quot;2feade4d-adab-80bc-9a42-f99affacc7ff&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2feade4d-adab-8055-8b96-fd83648bb6b7&quot;&gt;
&lt;td id=&quot;aD~&amp;lt;&quot;&gt;&lt;b&gt;SHA 시리즈&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;RhKI&quot;&gt;&amp;bull; 미국 국가안보국 (NSA) 이 처음 설계, 미국 국립표준연구소 (NIST) 에 의해 발표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8006-8063-e26c0c61e7a1&quot;&gt;
&lt;td id=&quot;aD~&amp;lt;&quot;&gt;&lt;b&gt;MD5&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;RhKI&quot;&gt;&amp;bull; R.Rivest 가 MD4 를 대체하기 위해 고안&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-80a1-b226-c573a591c3d2&quot;&gt;
&lt;td id=&quot;aD~&amp;lt;&quot;&gt;&lt;b&gt;N-NASH&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;RhKI&quot;&gt;&amp;bull; 일본 전신전화주식회사 (NTT) 에서 발표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2feade4d-adab-8008-921d-e229b3e7af08&quot;&gt;
&lt;td id=&quot;aD~&amp;lt;&quot;&gt;&lt;b&gt;SNEFRU&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;RhKI&quot;&gt;&amp;bull; R.C.Merkle 발표&lt;br /&gt;&amp;bull; 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/자격증</category>
      <author>라임tree</author>
      <guid isPermaLink="true">https://ha7708.tistory.com/256</guid>
      <comments>https://ha7708.tistory.com/256#entry256comment</comments>
      <pubDate>Thu, 5 Feb 2026 18:16:31 +0900</pubDate>
    </item>
  </channel>
</rss>