<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>itsmineve</title>
    <link>https://frankenkitty.tistory.com/</link>
    <description>선린인터넷고등학교 정보보호과
성균관대학교 소프트웨어학과</description>
    <language>ko</language>
    <pubDate>Sun, 19 Jul 2026 12:32:17 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>kenkii</managingEditor>
    <image>
      <title>itsmineve</title>
      <url>https://tistory1.daumcdn.net/tistory/6522186/attach/ca80340e205d4c478cfe5cdfbbdb5ed4</url>
      <link>https://frankenkitty.tistory.com</link>
    </image>
    <item>
      <title>C언어로 Mini TCP Stack 구현하기 - (2) Raw Socket 으로 SYN Packet 전송</title>
      <link>https://frankenkitty.tistory.com/37</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1편에서는 TCP Header를 정의하고 SYN Packet을 생성해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 아직 실제 네트워크로 패킷을 전송하지는 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 Raw Socket을 사용하여 OS의 TCP Stack을 우회하고, 직접 생성한 SYN Packet을 네트워크로 전송해보려고 한다.&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;Raw Socket이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 Socket&lt;/p&gt;
&lt;pre id=&quot;code_1771330835682&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;socket(AF_INET, SOCK_STREAM, 0);

Application &amp;rarr; OS TCP Stack &amp;rarr; Network&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;Raw Socket&lt;/p&gt;
&lt;pre id=&quot;code_1771330885554&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;socket(AF_INET, SOCK_RAW, IPPROTO_TCP);

Application &amp;rarr; Network
(OS TCP Stack 우회)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Raw Socket 생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/socket.c&lt;/p&gt;
&lt;pre id=&quot;code_1771331058202&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;sys/socket.h&amp;gt;
#include &amp;lt;netinet/ip.h&amp;gt;
#include &amp;lt;netinet/tcp.h&amp;gt;

int create_raw_socket()
{
    int sock;

    sock = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);

    if (sock &amp;lt; 0)
    {
        perror(&quot;socket creation failed&quot;);
        exit(1);
    }

    printf(&quot;Raw socket created\n&quot;);

    return sock;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AF_INET 은 IPv4를 의미하고, IPPROTO_TCP는 TCP Packet 직접 처리를 의미한다.&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;SYN Packet 전송 함수&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/send.c&lt;/p&gt;
&lt;pre id=&quot;code_1771331365067&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;../include/tcp.h&quot;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;arpa/inet.h&amp;gt;
#include &amp;lt;sys/socket.h&amp;gt;

void send_syn_packet(int sock,
                     struct tcp_header *tcp,
                     const char *target_ip)
{
    struct sockaddr_in dest;

    memset(&amp;amp;dest, 0, sizeof(dest));

    dest.sin_family = AF_INET;
    dest.sin_port = tcp-&amp;gt;dst_port;
    dest.sin_addr.s_addr = inet_addr(target_ip);

    int result = sendto(sock,
                        tcp,
                        sizeof(struct tcp_header),
                        0,
                        (struct sockaddr *)&amp;amp;dest,
                        sizeof(dest));

    if (result &amp;lt; 0)
    {
        perror(&quot;sendto failed&quot;);
        return;
    }

    printf(&quot;SYN packet sent to %s\n&quot;, target_ip);
}&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;sendto()는 TCP 패킷을 네트워크로 전송한다. dest 구조체는 목적지 ip와 포트를 설정한다.&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;main.c 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/main.c&lt;/p&gt;
&lt;pre id=&quot;code_1771332066232&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;../include/tcp.h&quot;
#include &amp;lt;stdio.h&amp;gt;

int create_raw_socket();

void create_syn_packet(struct tcp_header *, uint16_t, uint16_t);

void print_tcp_packet(struct tcp_header *);

void send_syn_packet(int sock,
                     struct tcp_header *,
                     const char *);

int main()
{
    int sock;

    struct tcp_header tcp;

    sock = create_raw_socket();

    create_syn_packet(&amp;amp;tcp, 12345, 80);

    print_tcp_packet(&amp;amp;tcp);

    send_syn_packet(sock, &amp;amp;tcp, &quot;142.250.190.78&quot;);

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;142.250.190.78 은 구글의 IP이다.&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;Makefile 수정&lt;/h3&gt;
&lt;pre id=&quot;code_1771332189488&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CC=gcc

CFLAGS=-Wall

SRC=src/main.c src/tcp.c src/packet.c src/socket.c src/send.c

OUT=mini_tcp

all:
	$(CC) $(SRC) -o $(OUT) $(CFLAGS)

clean:
	rm -f $(OUT)&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-02-17 오후 9.43.57.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq0ijM/dJMcabJXHZN/bKA9chhEkX4UpJU8GRRKR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq0ijM/dJMcabJXHZN/bKA9chhEkX4UpJU8GRRKR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq0ijM/dJMcabJXHZN/bKA9chhEkX4UpJU8GRRKR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq0ijM%2FdJMcabJXHZN%2FbKA9chhEkX4UpJU8GRRKR1%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;598&quot; height=&quot;189&quot; data-filename=&quot;스크린샷 2026-02-17 오후 9.43.57.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 SYN 패킷 실제 전송까지를 구현해 보았고, 다음에는 SYN-ACK 패킷 수신, ACK 전송, handshake 완료까지 만들어 볼 것이다.&lt;/p&gt;</description>
      <category>서버/리눅스</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/37</guid>
      <comments>https://frankenkitty.tistory.com/37#entry37comment</comments>
      <pubDate>Tue, 17 Feb 2026 21:45:22 +0900</pubDate>
    </item>
    <item>
      <title>C언어로 Mini TCP Stack 구현하기 - (1) TCP Header, SYN Packet 생성 및 출력</title>
      <link>https://frankenkitty.tistory.com/36</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;목표&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제가 제공하는 TCP 스택을 사용하지 않고, TCP 프로토콜을 직접 구현하여 3-Way Handshake를 수행하는 Mini TCP Stack을 구현하는 것이 목표이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C언어도 조금 더 써볼 겸 작은 프로젝트를 하나 하고 싶어서 시작하게 되었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;TCP 프로토콜 구조&lt;/li&gt;
&lt;li&gt;TCP Header 구성&lt;/li&gt;
&lt;li&gt;Sequence Number 와 ACK의 역할&lt;/li&gt;
&lt;li&gt;네트워크 바이트 오더 (Endian)&lt;/li&gt;
&lt;li&gt;TCP Handshake 과정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이정도를 이해해 보려고 한다. 공부한 지 2년 정도 돼서 까먹기도 했고 쉬운 거 하고 싶어서ㅎㅎ&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Orbstack을 사용해서 Ubuntu Linux + C언어이다.&lt;/p&gt;
&lt;pre id=&quot;code_1771315519275&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mini-tcp/
│
├── include/
│   └── tcp.h
│
├── src/
│   ├── main.c
│   ├── tcp.c
│   └── packet.c
│
└── Makefile&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;h3 data-ke-size=&quot;size23&quot;&gt;TCP Protocol 구조 이해&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP Header는 출발지, 목적지 포트주소와 시퀀스 넘버, 체크섬 등을 포함한 아래와 같은 구조를 가진다.&lt;/p&gt;
&lt;pre id=&quot;code_1771315625075&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------+-------------------------------+
| Source Port                  | Destination Port              |
+-------------------------------+-------------------------------+
| Sequence Number                                              |
+-------------------------------------------------------------+
| Acknowledgment Number                                       |
+-------------------------------+-------------------------------+
| Data Offset | Flags          | Window Size                  |
+-------------------------------+-------------------------------+
| Checksum                     | Urgent Pointer               |
+-------------------------------+-------------------------------+&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TCP Header 구조체 정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;include/tcp.h&lt;/p&gt;
&lt;pre id=&quot;code_1771315929750&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#ifndef TCP_H
#define TCP_H

#include &amp;lt;stdint.h&amp;gt;

#define TCP_FIN 0x01
#define TCP_SYN 0x02
#define TCP_RST 0x04
#define TCP_PSH 0x08
#define TCP_ACK 0x10

struct tcp_header {

    uint16_t src_port;     
    uint16_t dst_port;     

    uint32_t seq_num;      
    uint32_t ack_num;   

    uint8_t data_offset;
    uint8_t flags;       

    uint16_t window;     
    uint16_t checksum;   
    uint16_t urgent_ptr;  
};

#endif&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;seq_num는 데이터 순서를 보장하는 시퀀스 넘버이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ack_num는 상대방이 보낸 데이터에 대한 확인 번호이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flags는 TCP 동작을 제어하는 필드인데, 예를 들어 SYN, ACK, FIN 등이 있다.&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;SYN Packet 생성 함수 구현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/tcp.c&lt;/p&gt;
&lt;pre id=&quot;code_1771316273845&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;../include/tcp.h&quot;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;arpa/inet.h&amp;gt;

void create_syn_packet(struct tcp_header *tcp,
                       uint16_t src_port,
                       uint16_t dst_port)
{

    memset(tcp, 0, sizeof(struct tcp_header));

    tcp-&amp;gt;src_port = htons(src_port);
    tcp-&amp;gt;dst_port = htons(dst_port);

    tcp-&amp;gt;seq_num = htonl(1000);

    tcp-&amp;gt;ack_num = 0;

    tcp-&amp;gt;data_offset = (5 &amp;lt;&amp;lt; 4);

    tcp-&amp;gt;flags = TCP_SYN;

    tcp-&amp;gt;window = htons(65535);

    tcp-&amp;gt;checksum = 0;
    tcp-&amp;gt;urgent_ptr = 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SYN 패킷에 포함될 변수들을 초기화해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP는 Big Endia을 사용하는데 대부분 컴퓨터는 Little Endian이기 때문에 변환을 해주어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(데이터를 어떤 순서로 메모리 위치에 저장시킬 것인지가 Endian이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;htons는 'Host to Network Short' 16bit 변환이고 htonl은 ' ~ Long' 32bit 변환이다.&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;Packet 출력 함수 구현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/packet.c&lt;/p&gt;
&lt;pre id=&quot;code_1771317201404&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;../include/tcp.h&quot;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;arpa/inet.h&amp;gt;

void print_tcp_packet(struct tcp_header *tcp)
{

    printf(&quot;TCP Packet Information\n&quot;);

    printf(&quot;Source Port: %u\n&quot;, ntohs(tcp-&amp;gt;src_port));
    printf(&quot;Destination Port: %u\n&quot;, ntohs(tcp-&amp;gt;dst_port));

    printf(&quot;Sequence Number: %u\n&quot;, ntohl(tcp-&amp;gt;seq_num));
    printf(&quot;Acknowledgment Number: %u\n&quot;, ntohl(tcp-&amp;gt;ack_num));

    printf(&quot;Flags: &quot;);

    if (tcp-&amp;gt;flags &amp;amp; TCP_SYN)
        printf(&quot;SYN &quot;);

    if (tcp-&amp;gt;flags &amp;amp; TCP_ACK)
        printf(&quot;ACK &quot;);

    if (tcp-&amp;gt;flags &amp;amp; TCP_FIN)
        printf(&quot;FIN &quot;);

    printf(&quot;\n&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;main 함수 구현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/main.c&lt;/p&gt;
&lt;pre id=&quot;code_1771320255461&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;../include/tcp.h&quot;
#include &amp;lt;stdio.h&amp;gt;

void create_syn_packet(struct tcp_header *, uint16_t, uint16_t);
void print_tcp_packet(struct tcp_header *);

int main()
{

    struct tcp_header tcp;

    create_syn_packet(&amp;amp;tcp, 12345, 8080);

    print_tcp_packet(&amp;amp;tcp);

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Makefile&lt;/h3&gt;
&lt;pre id=&quot;code_1771320373480&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CC=gcc

CFLAGS=-Wall

SRC=src/main.c src/tcp.c src/packet.c

OUT=mini_tcp

all:
	$(CC) $(SRC) -o $(OUT) $(CFLAGS)

clean:
	rm -f $(OUT)&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-02-17 오후 6.34.41.png&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvwTBL/dJMcaiPMbUd/le4tKez7oMjiSO9UbsR1GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvwTBL/dJMcaiPMbUd/le4tKez7oMjiSO9UbsR1GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvwTBL/dJMcaiPMbUd/le4tKez7oMjiSO9UbsR1GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvwTBL%2FdJMcaiPMbUd%2Fle4tKez7oMjiSO9UbsR1GK%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;594&quot; height=&quot;214&quot; data-filename=&quot;스크린샷 2026-02-17 오후 6.34.41.png&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;make로 실행하면 설정한 대로 SYN 패킷이 출력되는 것을 확인할 수 있다.&lt;/p&gt;</description>
      <category>서버/리눅스</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/36</guid>
      <comments>https://frankenkitty.tistory.com/36#entry36comment</comments>
      <pubDate>Tue, 17 Feb 2026 18:36:58 +0900</pubDate>
    </item>
    <item>
      <title>방화벽 IDS, IPS</title>
      <link>https://frankenkitty.tistory.com/35</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;방화벽 Firewall&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;방화벽은 네트워크 접근 제어 장비이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;서로 다른 네트워크를 지나는 데이터를 허용 및 거부하거나 검열 또는 수정한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;사전에 정의된 정책 (rule) 에 따라 트래픽을 허용 (Allow) 하거나 차단 (Deny) 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;동작 방식&lt;/h4&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;li&gt;포트 번호 (80, 443 ..)&lt;/li&gt;
&lt;li&gt;프로토콜 (TCP, UDP, ICMP ..)&lt;/li&gt;
&lt;li&gt;세션 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 기준을 바탕으로 판단한다.&lt;/p&gt;
&lt;pre id=&quot;code_1768985001854&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;외부 -&amp;gt; 내부 22번 포트(SSH) 접근 차단
외부 -&amp;gt; 내부 80, 443 포트만 허용&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;종류&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Packet Filtering : 단순 헤더 기반 필터링&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Stateful Firewall : 세션 상태 추적&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Application Firewall (L7) : HTTP, FTP 등 애플리케이션 분석&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;NGFW : IDS/IPS, DPI 까지 포함&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;방화벽은 네트워크 기본 보안의 필수 요소이며, 설정이 명확하고 빠르다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 공격인지 정상 트래픽인지 내용을 깊게 보지 않고 허용된 포트로 들어오는 공격을 막기 어렵다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; 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;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;IDS (Instrusion Detection System)&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;IDS 는 칩입 탐지 시스템이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 트래픽을 모니터링하여 공격을 &lt;u&gt;탐지&lt;/u&gt; (Detection) 만 하고, &lt;u&gt;차단은 하지 않는다.&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;공격이라고 알려주기만 한다.&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;동작 방식&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트래픽을 미러링 (SPAN) 해서 수동으로 분석&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;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 55%; height: 39px;&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;width: 50%; height: 17px; text-align: left;&quot;&gt;Signature 기반&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: left;&quot;&gt;알려진 공격 패턴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: left;&quot;&gt;Anomaly 기반&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: left;&quot;&gt;비정상 행위 탐지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: left;&quot;&gt;Behavior 기반&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: left;&quot;&gt;행위 흐름 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1768985425148&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Internet] ── [Firewall] ── [Switch] ── [Server]
                               │
                              [IDS]&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;IDS 는 트래픽 흐름 경로에 직접 개입하지 않는다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 공격을 &lt;u&gt;막지 못하고&lt;/u&gt;, 실시간 대응이 불가능하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IPS (Intrusion Prevention System)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPS는 칩입 방지 시스템이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IDS와 달리 탐지 + 차단을 수행한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;공격이다 -&amp;gt; 즉시 차단&lt;/blockquote&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;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 인라인(in-line) 배치&lt;/li&gt;
&lt;li&gt;트래픽 실시간 검사&lt;/li&gt;
&lt;li&gt;공격 판단 시 패킷 드롭 / 세션 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1768985617169&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Internet] ── [IPS] ── [Firewall] ── [Server]&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;IPS가 할 수 있는 차단은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;패킷 Drop&lt;/li&gt;
&lt;li&gt;TCP Reset&lt;/li&gt;
&lt;li&gt;IP 차단&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;/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;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비교&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IDS vs IPS&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;b&gt;IDS&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;b&gt;IPS&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;역할&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;탐지&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;탐지 + 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;위치&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;미러링&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;인라인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;트래픽 영향&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;오탐 영향&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;로그만&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;서비스 장애&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;운영 난이도&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&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;h4 data-ke-size=&quot;size20&quot;&gt;방화벽 vs IDS/IPS&lt;/h4&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 style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;방화벽&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;IDS/IPS&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;기준&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;정책 기반&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;공격 패턴 / 행위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;검사 깊이&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;L3~L4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;L7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;목적&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;접근 제어&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;공격 탐지 / 방어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;공격 인식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;거의 없음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;방화벽 실습 - PF(Packet Filter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PF란 BSD 계열 운영체제 (OpenBSD, macOS)에 기본 탑재된 커널 레벨 방화벽이다.&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;/etc/pf.conf 파일&lt;/p&gt;
&lt;pre id=&quot;code_1768986508172&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;scrub-anchor &quot;com.apple/*&quot;
nat-anchor &quot;com.apple/*&quot;
rdr-anchor &quot;com.apple/*&quot;
dummynet-anchor &quot;com.apple/*&quot;
anchor &quot;com.apple/*&quot;
load anchor &quot;com.apple&quot; from &quot;/etc/pf.anchors/com.apple&quot;
pass in inet proto tcp from any to any port 5173 no state&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;여기에 아래 문장을 추가해 ssh 접근을 차단해 보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1768986533116&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;block in proto tcp from any to any port 22
pass out all keep state&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.17.47.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXzHoV/dJMcadgsYSu/nHa0Tq301ylTrHcxRAM2X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXzHoV/dJMcadgsYSu/nHa0Tq301ylTrHcxRAM2X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXzHoV/dJMcadgsYSu/nHa0Tq301ylTrHcxRAM2X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXzHoV%2FdJMcadgsYSu%2FnHa0Tq301ylTrHcxRAM2X1%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;860&quot; height=&quot;57&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.17.47.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;64&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;/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;h4 data-ke-size=&quot;size20&quot;&gt;IDS 실습 - tcpdump 기반 침입 탐지&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트래픽 미러링 - 패킷 분석 - 공격 판단 - 로그 / 알림&lt;/p&gt;
&lt;pre id=&quot;code_1768987265352&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo tcpdump -n 'tcp[tcpflags] &amp;amp; tcp-syn != 0'&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;위 명령을 입력하면 TCP 연결 요청 (SYN) 만 필터링하며, 포트 스캔, SYN Flood 탐지에 사용 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1768987509039&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nmap -sS localhost&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;그리고 다른 터미널 (tty) 에서 포트 스캔을 하면 tcpdump 를 했던 터미널에서 SYN 패킷이 폭증한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.26.04.png&quot; data-origin-width=&quot;2562&quot; data-origin-height=&quot;1422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GEUUf/dJMcafSVzlT/Nuvrmn8uVgRiQEpJtTI3I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GEUUf/dJMcafSVzlT/Nuvrmn8uVgRiQEpJtTI3I0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GEUUf/dJMcafSVzlT/Nuvrmn8uVgRiQEpJtTI3I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGEUUf%2FdJMcafSVzlT%2FNuvrmn8uVgRiQEpJtTI3I0%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;2562&quot; height=&quot;1422&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.26.04.png&quot; data-origin-width=&quot;2562&quot; data-origin-height=&quot;1422&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;IDS 는 네트워크 흐름에 개입하지 않고 공격 징후를 탐지하여 관리자에게 알려주는 역할을 하기 때문이다.&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;IPS 실습 - 탐지 + 자동 차단&lt;/h4&gt;
&lt;pre id=&quot;code_1768987698808&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tcpdump (탐지)
   &amp;darr;
조건 만족
   &amp;darr;
pfctl (차단)&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;/p&gt;
&lt;pre id=&quot;code_1768987720616&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;table &amp;lt;blacklist&amp;gt; persist
block in from &amp;lt;blacklist&amp;gt;
pass out all keep state&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;blacklist PF 테이블을 준비하고 적용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1768987980390&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo tcpdump -n tcp | while read line; do
  SRC=$(echo $line | awk '{print $3}' | cut -d'.' -f1-4)
  if echo &quot;$line&quot; | grep &quot;Flags \[S\]&quot;; then
    echo &quot;[IPS] SYN detected from $SRC&quot;
    sudo pfctl -t blacklist -T add $SRC
  fi
done&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;이렇게 IPS 스크립트를 입력하고 아까와 같이 다른 터미널에서 포트스캔을 날리면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.35.19.png&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI6x6v/dJMb996eAmk/lwgIg4MwkWXVJRQ0t5OaU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI6x6v/dJMb996eAmk/lwgIg4MwkWXVJRQ0t5OaU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI6x6v/dJMb996eAmk/lwgIg4MwkWXVJRQ0t5OaU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI6x6v%2FdJMb996eAmk%2FlwgIg4MwkWXVJRQ0t5OaU0%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;1720&quot; height=&quot;218&quot; data-filename=&quot;스크린샷 2026-01-21 오후 6.35.19.png&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;218&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;/p&gt;</description>
      <category>보안</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/35</guid>
      <comments>https://frankenkitty.tistory.com/35#entry35comment</comments>
      <pubDate>Wed, 21 Jan 2026 18:48:34 +0900</pubDate>
    </item>
    <item>
      <title>Linux deamon 리눅스 데몬</title>
      <link>https://frankenkitty.tistory.com/34</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&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;예를 들어 sshd, nginx, mysqld, cron처럼.. 보통 이름 끝에 d가 붙는다.&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;데몬은 대부분 부모 프로세스를 갖지 않는다. 따라서 PPID가 1이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데몬 생성 daemonization&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;전통적&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;fork() -&amp;gt; 부모 프로세스는 종료되고 자식만 남는다.&lt;/li&gt;
&lt;li&gt;setsid() 호출 -&amp;gt; 새로운 세션을 생성하고 터미널 컨트롤을 차단한다.&lt;/li&gt;
&lt;li&gt;한번 더 fork() -&amp;gt; 세션 리더 권한을 제거하고 터미널 재연결을 차단한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;standalone 방식 : 부팅 시부터 종료될 때까지 계속 실행된다. 웹서버, 디비, ssh처럼 빈번히 요청이 들어오고 속도가 중요할 때 사용한다. 프로세스가 항상 메모리에 상주하고 있기 때문에 사용하지 않아도 메모리를 계속 차지한다.&lt;/li&gt;
&lt;li&gt;inetd 방식 : 짐작되겠지만 필요할 때만 데몬을 생성하는 것이다. 클라이언트가 접속하면 그 순간에만 실행한다. 리소스 사용이 적고 관리가 쉽지만 요청이 들어올 때마다 프로세스를 생성하니 첫 응답이 느리고 대량 접속에는 취약하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;systemd&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 inetd 대신 systemd socket activation 이 대체한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대 리눅스는 대부분 systemd로 데몬을 관리한다.&lt;/p&gt;
&lt;pre id=&quot;code_1768314200701&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start nginx 데몬 실행
systemctl stop nginx 데몬 중지
systemctl restart nginx 재시작
systemctl enable nginx 부팅 시 자동 실행
systemctl status nginx 상태 확인&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;예시로 nginx를 들어본 건데 예전부터 그냥 우분투로 서버관리 할 때 nginx 쓰면서 systemctl을 자연스럽게 썼었는데 이렇게 데몬 공부하면서 다시 보니까 새로운 느낌이다.&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;systemd 서비스 파일 구조&lt;/p&gt;
&lt;pre id=&quot;code_1768314524844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/etc/systemd/system/mydaemon.service

[Unit]
Description=My Custom Daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/mydaemon
Restart=always
User=root

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1768314556745&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl daemon-reload
systemctl enable mydaemon
systemctl start mydaemon&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;pre id=&quot;code_1768314578504&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;journalctl -u nginx : systemd 로그
journalctl -f -u nginx : 실시간&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;journalctl로 데몬 로그를 확인할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 데몬 만들고 실행시켜보는 실습을 해보았다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10초마다 /var/log/mydaemon.log 파일에 alive 로그를 찍는 데몬을 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;multipass로 우분투 서버를 하나 새로 파서 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1768315661082&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/stat.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;time.h&amp;gt;

int main() {
    pid_t pid;

    pid = fork();
    if (pid &amp;lt; 0) exit(1);
    if (pid &amp;gt; 0) exit(0);

    if (setsid() &amp;lt; 0) exit(1);

    pid = fork();
    if (pid &amp;lt; 0) exit(1);
    if (pid &amp;gt; 0) exit(0);

    umask(0);
    chdir(&quot;/&quot;);

    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);

    int fd = open(&quot;/var/log/mydaemon.log&quot;,
                  O_WRONLY | O_CREAT | O_APPEND,
                  0644);
    if (fd &amp;lt; 0) exit(1);

    while (1) {
        time_t now = time(NULL);
        char buf[128];
        int len = snprintf(buf, sizeof(buf),
            &quot;%s daemon alive\n&quot;, ctime(&amp;amp;now));
        write(fd, buf, len);
        sleep(10);
    }
}&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;mydaemon.c 파일이다. 첫번째 fork -&amp;gt; setsid -&amp;gt; 두 번째 fork로 전통적 데모나이제이션에 맞춰 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;umask는 파일 권한 제한&amp;nbsp; 제거, chdir은 현재 디렉토리 점유 방지를 위해 넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;close 부분은 터미널과의 모든 입출력을 차단한다.&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;int fd.. 여기는 로그 파일 열고, 없으면 생성, 이어서기록하라는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while 문에서 10초마다 로그를 찍는 내용을 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-13 오후 11.56.51.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfiVbF/dJMcabbQ6wB/S66ao7uOfDKZ0aM4kWFegk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfiVbF/dJMcabbQ6wB/S66ao7uOfDKZ0aM4kWFegk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfiVbF/dJMcabbQ6wB/S66ao7uOfDKZ0aM4kWFegk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfiVbF%2FdJMcabbQ6wB%2FS66ao7uOfDKZ0aM4kWFegk%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;689&quot; height=&quot;412&quot; data-filename=&quot;스크린샷 2026-01-13 오후 11.56.51.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;902&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;/p&gt;</description>
      <category>서버/리눅스</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/34</guid>
      <comments>https://frankenkitty.tistory.com/34#entry34comment</comments>
      <pubDate>Wed, 14 Jan 2026 00:05:11 +0900</pubDate>
    </item>
    <item>
      <title>어셈블리 기초, 스택 프레임</title>
      <link>https://frankenkitty.tistory.com/33</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;11월에 공부하고 메모장에 적어둔거 옮기기.. 까먹었을 때 보려고 간단하게 정리&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;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;범용 레지스터 (32bit)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 레지스터
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EAX : 누산기레지스터, 곱셈 나눗셈&lt;/li&gt;
&lt;li&gt;EBX : 베이스 레지스터, 메모리 주소 지정&lt;/li&gt;
&lt;li&gt;ECX : 계수기, 반복 명령&lt;/li&gt;
&lt;li&gt;EDX : 곱셈 나눗셈, 부호 확장 명령&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인덱스 레지스터
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ESI : 다량 메모리 옮기거나 비교할 때 소스 주소&lt;/li&gt;
&lt;li&gt;EDI : &amp;ldquo; 목적지 주소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;포인터 레지스터
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ESP : 스택포인터, 스택 최종점&lt;/li&gt;
&lt;li&gt;EBP : 스택 함수 지역변수 주소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;세그먼트 레지스터 (16bit)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ES : 보조, 두 곳 이상의 저장영역 가리킬 때 DS 와 사용&lt;/li&gt;
&lt;li&gt;CS : 코드 세그먼트, 프로그램 코드 시작 주소&lt;/li&gt;
&lt;li&gt;SS : 스택 세그먼트, 스택 시작 주소&lt;/li&gt;
&lt;li&gt;DS : 데이터 시작 주소&lt;/li&gt;
&lt;li&gt;FS, GS : 보조 세그먼트 레지스터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;상태 레지스터 (32bit)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EIP : 현재 실행되고 있는 프로그램의 실행코드가 저장된 메모리 주소, 자동으로 증가 및 변경&lt;/li&gt;
&lt;li&gt;EFLAGS : 플래그 저장&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;h3 data-ke-size=&quot;size23&quot;&gt;주소 지정 방식&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;즉시 지정방식 (앞 &amp;rarr; 뒤)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;mov $0x1, %eax&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;레지스터 지정방식 (앞 &amp;rarr; 뒤)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;mov%esp, %ebp&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;직접 주소 지정방식 (뒤 &amp;rarr; 앞)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;mov %eax, 0x80482f2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;레지스터 간접 주소 지정방식&amp;nbsp;(앞 &amp;rarr; 뒤)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;mov (%ebx), %eax&lt;/li&gt;
&lt;li&gt;() 안에 들어간 값의 주소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;베이스 상대 주소 지정 방식&amp;nbsp;(앞 &amp;rarr; 뒤)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;mov 0x4(%esi), %eax&lt;/li&gt;
&lt;li&gt;4바이트 더한 주소의 값 (보통 다음 주소 의미)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mov S, D : S 위치의 데이터 복사해 D 위치에 저장&lt;/li&gt;
&lt;li&gt;lea S, D : S 에서 지정된 주소를 D 로 로드&lt;/li&gt;
&lt;li&gt;add opr1, opr2 : opr2 = opr1+opr2&lt;/li&gt;
&lt;li&gt;sub opr1, opr2 : opr1 = opr1-opr2&lt;/li&gt;
&lt;li&gt;inc D : 1++&lt;/li&gt;
&lt;li&gt;dec D : 1--&lt;/li&gt;
&lt;li&gt;jmp proc : proc 주소로 가서 명령어 실행&lt;/li&gt;
&lt;li&gt;cmp value, value : 비교하고 결과에 따라 분기&lt;/li&gt;
&lt;li&gt;call Target : eip 변경 후 target 으로 이동&lt;/li&gt;
&lt;li&gt;ret : 함수 복귀, eip 이전으로 변경&lt;/li&gt;
&lt;li&gt;pop D : 스택 최상단 D 에 로드, esp 변경&lt;/li&gt;
&lt;li&gt;push D : 스택에 데이터 저장, esp 증가&lt;/li&gt;
&lt;li&gt;int (interrupt-type) : 운영체제에 할당된 인터럽트 영역(ctr c)을 syscall&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;h3 data-ke-size=&quot;size23&quot;&gt;스택 프레임&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RIP : 다음에 실행할 명령어 주소&lt;/li&gt;
&lt;li&gt;RSP : 현재 스택의 최상단&amp;nbsp;&lt;/li&gt;
&lt;li&gt;RBP : 함수 시작 지점을 가리킴&lt;/li&gt;
&lt;li&gt;SFP : 스택에 저장했던 이전 함수의 RBP&lt;/li&gt;
&lt;li&gt;RAX : 64비트 범용 레지스터 (32비트 EAX)&lt;/li&gt;
&lt;li&gt;QWORD : 8 바이트 크기의 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1768310308065&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CALL 0x400500&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;PUSH RIP&lt;/li&gt;
&lt;li&gt;JMP 0x400500&lt;/li&gt;
&lt;li&gt;PUSH RBP&lt;/li&gt;
&lt;li&gt;MOV RBP, RSP (함수 프롤로그)&lt;/li&gt;
&lt;li&gt;SUB RSP, size (MOV RAX, QWORD [RBP - 0x8])&lt;/li&gt;
&lt;li&gt;MOV QWORD [RBP - 0x8], RAX (지역변수 공간 확보)&lt;/li&gt;
&lt;li&gt;MOV RSP, RBP&lt;/li&gt;
&lt;li&gt;POP SFP (함수 에필로그)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>서버/어셈블리</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/33</guid>
      <comments>https://frankenkitty.tistory.com/33#entry33comment</comments>
      <pubDate>Tue, 13 Jan 2026 22:19:47 +0900</pubDate>
    </item>
    <item>
      <title>Linux 리눅스 프로세스</title>
      <link>https://frankenkitty.tistory.com/32</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;프로세스&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;프로세스(process)란 운영체제로부터 CPU, 메모리, 파일 등의 자원을 할당받고, 메모리에 적재되어 실행 준비가 되었거나 실행 중인 프로그램이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;PCB (Process Control Block)은 하나의 프로세스가 시스템에 존재할 때 프로세스에 대한 모든 것(아래 나오는 구성요소들)을 표현하며, 메모리에 저장된다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;프로세스 확인 명령어 ps&lt;/p&gt;
&lt;pre id=&quot;code_1768305411961&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-e(-A) 모든 프로세스 출력
-f 유닉스 스타일로 출력
-a 세션 리더 제외하고 터미널에 종속되지 않은 모든 프로세스 출력
-C [process] 입력한 프로세스만 출력
-o [value] 출력 포맷 지정

a 터미널과 연관된 프로세스 출력
e 환경변수 정보 출력
f 프로세스 간 상속관계를 트리형식응로 출력
l 정보를 길게 출력
u 소유자를 기준으로 출력
x 터미널에 종속되지 않는 프로세스 출력
p 지정한 프로세스 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;상태&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; 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;생성 (New / Created) : PCB가 만들어졌지만 아직 실행 대기열에 올라가지 않음&lt;/li&gt;
&lt;li&gt;준비 (Ready) : 실행할 준비는 되었으나 CPU를 받지 못해 대기 중&lt;/li&gt;
&lt;li&gt;실행 (Running) : CPU를 점유하여 실제 실행 중&lt;/li&gt;
&lt;li&gt;대기 (Waiting / Blocked) : I/O, 이벤트, 타이머 등 특정 작업 완료를 기다리는 중&lt;/li&gt;
&lt;li&gt;종료 (Terminated / Exit) : 실행 완료 또는 오류로 종료됨 (Zombie 상태가 잠시 존재)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;프로세스 상태 전이&lt;/h4&gt;
&lt;pre id=&quot;code_1768308722922&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[ 생성 ]
   │
   ▼
[ 준비 ] ──(스케줄러 할당)──▶ [ 실행 ]
   ▲                            │
   │                            │ (I/O 요청, sleep, wait)
   │                            ▼
   └──────(타임슬라이스 만료)── [ 대기 ]
                                   │
                                   │ (I/O 완료, 이벤트 발생)
                                   ▼
                                [ 준비 ]
                                      │
                                      │ (exit, abort)
                                      ▼
                                   [ 종료 ]&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;생성 -&amp;gt; 준비 : fork(), exec() 후 PCB 생성 / 메모리, 파일 디스크립터 준비 완료 후 Ready 큐 삽입&lt;/li&gt;
&lt;li&gt;준비 -&amp;gt; 실행 : CPU 스케줄러가 Ready 큐에서 하나 선택 / Dispatch 되면서 Running 상태로 이동&lt;/li&gt;
&lt;li&gt;실행 -&amp;gt; 준비 : 타임 슬라이스 만료, 선점 발생 / 우선순위 높은 프로세스 등장 시도 등..&lt;/li&gt;
&lt;li&gt;실행 -&amp;gt; 대기 : I/O 요청 / sleep(), read(), mutex lock 등 블로킹 호출&lt;/li&gt;
&lt;li&gt;대기 -&amp;gt; 준비 : I/O 완료 인터럽트 / semaphore, event, timer 만료&lt;/li&gt;
&lt;li&gt;실행 -&amp;gt; 종료 : exit() 호출 / main 함수 종료, 치명적 시그널 수신했을 때&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;*fork() : 현재 프로세스를 그대로 복제해 자식 프로세스를 만드는 시스템콜&lt;br /&gt;*exec() : 현재 프로세스를 완전히 다른 프로그램으로 덮어씀(PID 유지)&lt;br /&gt;*파일 디스크립터 : 열린 파일, 소켓, 파이프를 가리키는 번호&lt;br /&gt;*Dispatch디스패치 : 스케줄러가 준비 상태 프로세스를 CPU에 실제로 올리는 행위&lt;br /&gt;*I/O : 입출력 작업 (느린)&lt;br /&gt;*sleep() : 일정 시간 동안 스스로 대기 상태로 들어감&lt;br /&gt;*mutex lock : 한 번에 하나의 스레드만 임계영역 접근 허용&lt;br /&gt;*semaphore : 동시에 접근 가능한 개수를 제한하는 동기화 도구 (mutex lock과 달리 여러 개 가능)&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;구성&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-13 오후 9.34.26.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmpquR/dJMcaf6oGJ2/ciJCurG5OSWAIIMVTZ1cUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmpquR/dJMcaf6oGJ2/ciJCurG5OSWAIIMVTZ1cUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmpquR/dJMcaf6oGJ2/ciJCurG5OSWAIIMVTZ1cUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmpquR%2FdJMcaf6oGJ2%2FciJCurG5OSWAIIMVTZ1cUK%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;740&quot; height=&quot;253&quot; data-filename=&quot;스크린샷 2026-01-13 오후 9.34.26.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 94.4185%; height: 142px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignCenter&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 17px; text-align: center;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; height: 17px; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 10px; text-align: center;&quot;&gt;UID&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; height: 10px; text-align: center;&quot;&gt;소유자 이름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 17px; text-align: center;&quot;&gt;PID&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; height: 17px; text-align: center;&quot;&gt;고유 식별자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 17px; text-align: center;&quot;&gt;PPID&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; height: 17px; text-align: center;&quot;&gt;부모 프로세스의 고유 식별자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 17px; text-align: center;&quot;&gt;C&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; height: 17px; text-align: center;&quot;&gt;프로세서 사용률 (%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; text-align: center; height: 17px;&quot;&gt;STIME&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; text-align: center; height: 17px;&quot;&gt;프로세스가 시작한 시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; text-align: center; height: 17px;&quot;&gt;TTY&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; text-align: center; height: 17px;&quot;&gt;터미널의 종류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 13px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; text-align: center; height: 13px;&quot;&gt;TIME&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; text-align: center; height: 13px;&quot;&gt;총 CPU 사용시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; text-align: center; height: 17px;&quot;&gt;CMD&lt;/td&gt;
&lt;td style=&quot;width: 90.6684%; text-align: center; height: 17px;&quot;&gt;프로세스 실행 시 명령줄&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-13 오후 9.43.59.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VBVYk/dJMcai24rSl/r5VMvDKGJ4portg7xqkOvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VBVYk/dJMcai24rSl/r5VMvDKGJ4portg7xqkOvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VBVYk/dJMcai24rSl/r5VMvDKGJ4portg7xqkOvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVBVYk%2FdJMcai24rSl%2Fr5VMvDKGJ4portg7xqkOvk%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;701&quot; height=&quot;236&quot; data-filename=&quot;스크린샷 2026-01-13 오후 9.43.59.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 110px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignCenter&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 15px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 15px; text-align: center;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 15px; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 17px; text-align: center;&quot;&gt;USER&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 17px; text-align: center;&quot;&gt;소유자 이름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 17px; text-align: center;&quot;&gt;MEM&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 17px; text-align: center;&quot;&gt;메모리 점유율&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 17px; text-align: center;&quot;&gt;VSZ, RSS&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 17px; text-align: center;&quot;&gt;실제 메모리 사용량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 17px; text-align: center;&quot;&gt;STAT&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 17px; text-align: center;&quot;&gt;현재 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.0697%; height: 17px; text-align: center;&quot;&gt;STARTED&lt;/td&gt;
&lt;td style=&quot;width: 85.9303%; height: 17px; text-align: center;&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;h3 data-ke-size=&quot;size23&quot;&gt;프로세스 종류&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;foreground&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자와 직접 상호작용하며 화면에 나타나는 프로세스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널이나 화면을 점유해 실행되는 동안 사용자가 다른 명령을 입력할&amp;nbsp; 수 없다. (ex : vi, 웹브라우저, 게임..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 중인 포그라운드 프로세스를 중단하려면 ctrl+c 입력&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;backgroud&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자와의 상호작용 없이 뒤에서 실행되는 프로세스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면에 나타나지 않으며 프로세스가 실행되는 동안에도 다른 작업을 할 수 있다. (ex : 바이러스 백신 검사, 백업, 로깅..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어 뒤에 &amp;amp; 기호를 붙여 실행한다. jobs 명령어로 목록 확인, fg 명령어로 포그라운드로 전환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;</description>
      <category>서버/리눅스</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/32</guid>
      <comments>https://frankenkitty.tistory.com/32#entry32comment</comments>
      <pubDate>Tue, 13 Jan 2026 22:10:08 +0900</pubDate>
    </item>
    <item>
      <title>FHRP (First Hop Redundancy Protocol)</title>
      <link>https://frankenkitty.tistory.com/30</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;FHRP 란?&lt;/h3&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;&quot;첫 번째 홉&quot;이란 패킷이 네트워크에 들어갈 때 만나는 첫 번째 장치를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UDP를 사용하고, 주기적으로 정보교환 메시지를 보낸다.&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;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이중화 : 네트워크 관리자는 이중화 장치를 구성하여 장애 발생 시에도 가용성과 안정성을 유지할 수 있다.&lt;/li&gt;
&lt;li&gt;로드 밸런싱 : 일부 fhrp 프로토콜에서는 여러 라우터가 함께 작동하여 로드 밸런싱을 제공한다.&lt;/li&gt;
&lt;li&gt;프로토콜 수렴 : 네트워크 변경이 발생할 경우 안정적인 네트워크 토폴로지로 신속하게 수렴한다.&lt;/li&gt;
&lt;li&gt;독립성 : vrrp 같은 일부 fhrp 프로토콜은 비독점적이므로 모든 유형의 네트워크 장비와 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;호환성 : fhrp 프로토콜은 stp 와 같은 다른 네트워킹 프로토콜과 호환되어 네트워크가 제대로 작동한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HSRP (Hot Standby Router Protocol)&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;Cisco 전용 프로토콜이다.&lt;/li&gt;
&lt;li&gt;하나의 활성(Active) 라우터와 대기(Standby) 라우터가 지정된다.&lt;/li&gt;
&lt;li&gt;활성 라우터에 장애가 발생하면 대기 라우터가 활성 라우터의 역할을 한다.&lt;/li&gt;
&lt;li&gt;주로 VLAN 에 구성하는 데 사용한다.&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;h3 data-ke-size=&quot;size23&quot;&gt;VRRP (Virtual Router &quot; )&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;HSRP 와 같은 역할을 하지만 독점 프로토콜이 아니다.&lt;/li&gt;
&lt;li&gt;두 라우터가 함께 작동해 이중화를 제공한다.&lt;/li&gt;
&lt;li&gt;Master 라우터와 Back up 라우터로 구성된다.&lt;/li&gt;
&lt;li&gt;우선순위 (Priority) 값을 기준으로 역할을 결정한다.&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;h3 data-ke-size=&quot;size23&quot;&gt;GLBP (Gateway Load Balancing Protocol)&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;first hop 에 대한 중복 및 로드밸런싱을 제공한다.&lt;/li&gt;
&lt;li&gt;cisco 독점 프로토콜이다.&lt;/li&gt;
&lt;li&gt;하나의 가상 IP 와 여러개의 MAC 주소를 사용한다.&lt;/li&gt;
&lt;li&gt;라운드로빈 / 우선순위 / Host Dependent 방식&lt;/li&gt;
&lt;/ul&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;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HSRP&lt;/h4&gt;
&lt;pre id=&quot;code_1730877538751&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface [인터페이스 id]
 standby [그룹 번호] ip [가상 ip 주소]
 standby [그룹 번호] priority [우선순위]        ! 우선순위 설정 (0-255), default = 100
 standby [그룹 번호] preempt                  ! 주 라우터가 다운되었다가 복구 시 다시 주 라우터로 전환
 standby [그룹 번호] authentication [인증 문자열]     ! 인증 설정 (옵션)
 standby [그룹 번호] timers [hello 주기] [hold-time]   ! 타이머 설정 (옵션)&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;standby 명령어를 사용하고, hello 메시지를 주고받아 정보를 전달하기 때문에 hello 메시지의 주기 등을 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;preempt 는 '선점하다' 라는 뜻인데, 장비가 정상화 또는 장애가 되었을 때 원래 상태를 유지하겠다는 명령이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;VRRP&lt;/h4&gt;
&lt;pre id=&quot;code_1730877565536&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;conf t
track [트랙 번호] interface [인터페이스 id] line-protocol (master 라우터만)
interface [인터페이스 id]
 vrrp [그룹 번호] ip [가상 ip 주소]
 vrrp [그룹 번호] priority [우선순위]               ! 우선순위 설정 (0-255)
 vrrp [그룹 번호] preemt                          ! 주 라우터가 다운되었다가 복구 시 다시 주 라우터로 전환
 vrrp [그룹 번호] track [트랙 번호] decrement [우선순위]
 
 show vrrp all (or brief)&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;master 라우터에서 트랙을 지정할 수 있는데, 예를 들어 vrrp 1 track 1 decrement 50 이라는 명령어는 track 1 에 있는 인터페이스가 다운되었을 때 우선순위를 50만큼 감소시킨다는 뜻이다. 우선순위가 달라졌기 때문에 라우터 상태로 바뀔 수 있다.&lt;/p&gt;</description>
      <category>네트워크/라우터</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/30</guid>
      <comments>https://frankenkitty.tistory.com/30#entry30comment</comments>
      <pubDate>Thu, 7 Nov 2024 08:47:35 +0900</pubDate>
    </item>
    <item>
      <title>자잘한 오답 22</title>
      <link>https://frankenkitty.tistory.com/29</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;패킷 교환&lt;/h2&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;경로 배정(routing) 하는 방식에 따라 데이터그램과 가상회선으로 나눈다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터그램&lt;/h4&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;망의 한 부분이 혼잡할 때 전송 패킷에 다른 경로를 배정할 수 있고, 융통성 있는 경로를 설정한다.&lt;/li&gt;
&lt;li&gt;논리적 연결 설정 없이 데이터를 전송하는 방식 (비연결형)&lt;/li&gt;
&lt;li&gt;특정 교환기의 고장 시 그 경로를 피해서 전송할 수 있다 (신뢰성 up)&lt;/li&gt;
&lt;/ul&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;/h4&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;li&gt;특정 교환기의 고장 시 모든 패킷을 잃어버린다.&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;h3 data-ke-size=&quot;size23&quot;&gt;PCM (&lt;span style=&quot;background-color: #ffffff; color: #202122; text-align: start;&quot;&gt;Pulse-code modulation)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122; text-align: start;&quot;&gt;아날로그 신호의 디지털 표현&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122; text-align: start;&quot;&gt;직렬 형태의 디지털 전송에서 자주 사용&lt;/span&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;/li&gt;
&lt;li&gt;압축&lt;/li&gt;
&lt;li&gt;디지털(이진) 코드로 양자화&lt;/li&gt;
&lt;li&gt;부호화&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;netstat&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;-a : 모든 연결 및 수신 대기 포트 표시&lt;/li&gt;
&lt;li&gt;-c : 현재 실행 명령을 매 초마다 실행&lt;/li&gt;
&lt;li&gt;-l : listen 포트 확인&lt;/li&gt;
&lt;li&gt;-t : tcp 로 연결된 모든 포트 확인&lt;/li&gt;
&lt;li&gt;-u : udp 로 연결된 모드 포트 확인&lt;/li&gt;
&lt;li&gt;-n : 주소나 포트 형식을 숫자로 표현&lt;/li&gt;
&lt;li&gt;-p : 해당 프로세스를 사용하고 있는 프로그램 이름 확인&lt;/li&gt;
&lt;li&gt;-r : 라우팅 테이블 확인&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;p data-ke-size=&quot;size14&quot;&gt;이제 1주일 남았는데 합격 점수는 안정권이지만 자꾸 틀렸던 거 또 틀리고 까먹는다 ㅜㅜ,,&lt;/p&gt;</description>
      <category>네트워크/네트워크관리사</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/29</guid>
      <comments>https://frankenkitty.tistory.com/29#entry29comment</comments>
      <pubDate>Sun, 18 Aug 2024 14:32:02 +0900</pubDate>
    </item>
    <item>
      <title>자잘한 오답</title>
      <link>https://frankenkitty.tistory.com/28</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;IEEE 802.11 무선랜 기술표준&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IEEE 802.11a 기술표준은 OFDM이라는 방식을 이용하여 최소 6Mbps에서 최대 54Mbps까지 데이터 전송 가능하다.&lt;/li&gt;
&lt;li&gt;IEEE 802.11b 기술표준은 기존 2.4GHz 대역을 사용하는 무선 LAN의 낮은 전송률(1Mbps 와 2Mbps 의 전송률)을 보완한 규격이다.&lt;/li&gt;
&lt;li&gt;IEEE 802.11g 기술표준은 2.4GHz 대역 (IEEE 82.11b에서 사용하는 대역)에서 OFDM 방식을 사용하여 기존의 IEEE 802.11b와 공존할 수 있으면서 IEEE 802.11a의 높은 전송률이 가능하다.&lt;/li&gt;
&lt;li&gt;IEEE 802.11ac 기술표준은 802.11n 을 기반으로 40GHz의 밀리미터파 스펙트럼에서 동작하는 802.11 네트워크에 대한 새로운 물리 계층을 정의한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;*OFDM : 하나의 정보를 여러 개의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span data-ved=&quot;2ahUKEwiWwPu5x9uHAxV5hlYBHbImJwUQmpgGegQIGRAD&quot; data-width=&quot;250&quot; data-theme=&quot;0&quot; data-send-open-event=&quot;true&quot; data-hover-open-delay=&quot;500&quot; data-hover-hide-delay=&quot;1000&quot; data-extra-container-classes=&quot;ZLo7Eb&quot; data-enable-toggle-animation=&quot;true&quot;&gt;&lt;span data-segment-text=&quot;반송파&quot; data-bubble-link=&quot;&quot;&gt;반송파&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;(subcarrier)로 분할하고, 분할된 반송파 간의 간격을 최소로 하기 위해 직교성을 부가하여 다중화시키는 변조기술&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;h3 data-ke-size=&quot;size23&quot;&gt;crontab 파일 설정&lt;/h3&gt;
&lt;pre id=&quot;code_1722782261254&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//crontab 편집
crontab -e

//crontab 작업 내용 확인
crontab -l

//crontab 삭제
crontab -r&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_1722782380536&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//crontab 추가

//주기 설정
* * * * { 실행 명령 }

*(분 : 0~59) *(시 : 0~23) *(일 : 0~31) *(월 : 1~12) *(요일 : 0~6 일요일부터 시작)&lt;/code&gt;&lt;/pre&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;h3 data-ke-size=&quot;size23&quot;&gt;RAID&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;진심 봐도봐도 헷갈림;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;RAID0 - 스트라이프, 최소 2개 디스크, 빠름&lt;/li&gt;
&lt;li&gt;RAID1 - 미러링, 최소 2개 디스크, 안전함&lt;/li&gt;
&lt;li&gt;RAID0+1 - 최소 4개 디스크, 빠르고 안전함&lt;/li&gt;
&lt;li&gt;RAID10 - 최소 4개 디스크, 빠르고 안전함, 복잡함&lt;/li&gt;
&lt;li&gt;RAID5 - 최소 3개 디스크, 데이터블럭 나누어 저장, 패리티 정보 나누어 저장&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;h3 data-ke-size=&quot;size23&quot;&gt;Flow Control&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Stop and Wait - 송신 측이 하나의 프레임 전송한 후, 수신 측의 확인 응답(ACK)를 기다리는 방식&lt;/li&gt;
&lt;li&gt;XON/XOFF - 소프트웨어 흐름 제어 방식으로, 수신 측에서 전송을 시작하거나 중지시키기 위해 XON 과 XOFF 신호를 사용&lt;/li&gt;
&lt;li&gt;Sliding Window - 송신 측이 여러 프레임을 연속적으로 전송하고, 수신 측이 확인 응답을 통해 수신 상태를 알려주는 방식&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;h3 data-ke-size=&quot;size23&quot;&gt;Loop/Echo&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;h3 data-ke-size=&quot;size23&quot;&gt;Computing Architecture&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포그 컴퓨팅 (Fog Computing) - 현장에서 발생한 데이터를 원거리의 데이터 센터로 보내는 대신 데이터 발생 지점 주변에서 선별적으로 분석, 활용 가능한 컴퓨팅 아키텍처&lt;/li&gt;
&lt;li&gt;그리드 컴퓨팅 (Grid Computing) - 공통 목표를 달성하기 위해 서로 다른 지리적 위치에 분산된 컴퓨터 리소스를 결합하는 컴퓨팅 아키텍처&lt;/li&gt;
&lt;li&gt;병렬 컴퓨팅 (Parallel Computing) - 복잡한 계산 문제를 해결하기 위해 여러 대의 컴퓨터가 자원을 동시에 사용하는 컴퓨팅 아키텍처&lt;/li&gt;
&lt;li&gt;직렬 컴퓨팅 (Serial Computing) - 소프트웨어가 순차적인 계산으로 사용되는 컴퓨팅 아키텍처&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;h3 data-ke-size=&quot;size23&quot;&gt;NFV (Network Function Virtualization)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NFVs( &quot; Functions)는 SW로 개발된 네트워크 기능들의 집합이다.&lt;/li&gt;
&lt;li&gt;NFVI ( &quot; Infrastructure)는 물리적 H/W 자원, 가상화 자원기능 및 VNF(Virtualized Network Functions)실행지원기능 등을 제공한다.&lt;/li&gt;
&lt;li&gt;가상화 기술 기반으로 통신망 운용에 필요한 다양한 네트워크 장비 내 여러 기능들을 분리시켜 S/W로 제어 및 관리 가능하도록 하는 네트워크 가상화 기술이다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>네트워크/네트워크관리사</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/28</guid>
      <comments>https://frankenkitty.tistory.com/28#entry28comment</comments>
      <pubDate>Sun, 4 Aug 2024 23:59:05 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 (+서버) 기초 심화 3편</title>
      <link>https://frankenkitty.tistory.com/27</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;ICMPv6 메시지&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 재지정 메시지 (Redirection)&lt;/b&gt; : 경로 최적화를 위해 사용된다. 라우터가 호스트에게 더 나은 경로가 있을 때 이를 알려주는 데 사용된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(IPv4 대응 : ICMP 리다이렉션 메시지와 유사)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 에코 요청 메시지 (Echo request)&lt;/b&gt; : 네트워크 연결 상태를 확인하는 데 사용된다. ping 명령에서 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(IPv4 대응 : ICMP 에코 요청 메시지와 동일)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 이웃 요청과 광고 메시지 (Neighbor Solicitation and Advertisement)&lt;/b&gt; : 특정 IPv6 주소를 가진 노드의 링크 계층 주소를 확인하기 위해 전송한다. 응답으로 주소 정보를 제공한다. 이웃 탐색 프로토콜 (NDP)의 핵심 부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(IPv4 대응 : ARP)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 목적지 도달 불가 메시지 (Destination unreachable)&lt;/b&gt; : 호스트 또는 라우터가 패킷을 전달할 수 없을 때 전송한다. 네트워크 경로에 문제가 있거나 대상 호스트가 응답하지 않을 때 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(IPv4 대응 : ICMP 목적지 도달 불가 메시지와 도일)&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;TCP 헤더 플래그 비트&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- URG (Urgent Pointer)&amp;nbsp;&lt;/b&gt;: 긴급한 데이터가 있다는 것을 나타낸다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- ACK (Ackowledgment)&amp;nbsp;&lt;/b&gt;: 확인 응답을 요청하거나, 이미 확인 응답이 이루어졌다는 것을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- PSH (Push Function)&lt;/b&gt; : 데이터를 즉시 전송하라는 것을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- RST (Reset Connection)&lt;/b&gt; : 연결을 재설정하라는 것을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- SYN (Synchronize Sequence Numbers)&lt;/b&gt; : 시퀀스 번호를 동기화하라는 것을 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- FIN (Finish)&lt;/b&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;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;- Sliding Window&lt;/b&gt; : TCP에서 사용되는 주요 흐름 제어 기법으로, 수신자의 버퍼 크기에 맞춰 송신자가 데이터 전송량을 조절한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- Stop and Wait&lt;/b&gt; : 각 데이터 패킷을 전송한 후, 수신자의 확인 응답을 기다리고 나서 다음 패킷을 전송하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- Xon/Xoff&lt;/b&gt; : 시리얼 통신에서 사용되는 소프트웨어 기반 흐름 제어 방식으로, 제어 문자를 사용해 데이터 전송을 시작하거나 중지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- CTS/RTS (Clear To Send / Request To Send)&lt;/b&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;&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;SNMP&lt;/b&gt; (Simple Network Management Protocol) : 네트워크에 연결된 장비들의 상태 정보를 수집하고 관리하기 위한 프로토콜이다. 주로 네트워크 관리자나 시스템 관지라들이 장비들의 상태 정보를 수집하고, 문제가 발생하면 대응할 수 있도록 도와준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;FTP&lt;/b&gt; : 파일 전송 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;DHCP&lt;/b&gt; : IP 주소 자동 할당 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;BOOTP&lt;/b&gt; : DHCP 이전에 사용되던 IP 주소 자동 할당 프로토콜&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;IEEE 표준안&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 802.1&amp;nbsp;&lt;/b&gt;: 브리지 및 랜 규격 표준이다. MAC 과 PHY 레이어 간의 상호 운용성을 정의하고, VLAN, QoS, STP 등의 기능을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;b&gt;802.2&amp;nbsp;&lt;/b&gt;: 논리적 링크 제어 (LLC) 서비스를 제공하는 표준이다. 2계층에서 작동하는 프로토콜을 규정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;b&gt;802.3&lt;/b&gt; : 이더넷 표준을 정의하는 표준이다. 이더넷은 랜에서 가장 많이 사용되는 통신 기술 중 하나이며, 1계층과 2계층에서 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;b&gt;802.11&amp;nbsp;&lt;/b&gt;: 무선 랜 표준을 규정하는 표준이다. 무선 네트워크에서 데이터를 전송하는 방식을 규정하며 2.4GHz와 5GHz 대역에서 무선 통신을 할 때 사용하는 CSMA/CA 와 같은 방식을 정의한다. 계속해서 업데이트되고 있으며 현재 802.11ax (Wi-Fi 6)가 최신 버전이다.&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;&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;- 타이밍 (Timing)&amp;nbsp;&lt;/b&gt;: 데이터 전송 시기와 속도를 제어하기 위한 정보이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 의미 (Semantics)&amp;nbsp;&lt;/b&gt;: 데이터의 의미나 내용을 이해하기 위한 제어 정보이다. 데이터 정보의 종류, 포맷 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 구문 (Syntax)&amp;nbsp;&lt;/b&gt;: 데이터 구문이나 형식을 정의하기 위한 제어 정보이다. 인코딩 방식, 데이터 필드 구성 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 처리 (Process)&amp;nbsp;&lt;/b&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;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;Sink&lt;/b&gt; : 여러 센서 노드들이 수집한 데이터를 중앙으로 모아서 처리하는 역할을 한다. 필요시 외부 네트워크와의 인터페이스가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;Actuator&lt;/b&gt; : 물리적 시스템을 제어하는 장치이다. 센서로부터 데이터를 받아서 물리적 행동을 수행한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RFID&lt;/b&gt; (&lt;b&gt;Radio&lt;/b&gt; &lt;b&gt;Frequency&lt;/b&gt; &lt;b&gt;Identification&lt;/b&gt;) : 무선 주파수를 이용해 물체를 식별하는 기술이다. 태그와 리더기 시스템으로 구성되어 있으며, 주로 물체의 추적 및 관리에 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;Access&lt;/b&gt; &lt;b&gt;Point&lt;/b&gt; : 무선 네트워크에서 장치들이 네트워크에 접속할 수 있도록 해주는 장비이다. 주로 Wi-Fi 네트워크에서 사용되며, 유선 네트워크와 무선 장치들 사이의 브리지 역할을 한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Windows Server 2016 - IIS&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IIS 관리자에서는 웹 사이트의 기본 웹 문서 폴더를 변경할 수 있다. 기본 웹 문서 폴더는 사용자가 해당 웹 사이트를 접속했을 때 처음으로 표시되는 웹 페이지가 저장된 폴더이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IIS 관리자는 기본 웹 문서를 추가하거나 우선순위를 조정할 수 있다. 기본 웹 문서는 사용자가 해당 웹 사이트의 루트 경로로 접속했을 때 자동으로 표시되는 웹 페이지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 가상 디렉터리의 이름은 실제 경로의 이름과 일치하지 않아도 되며, 사용자가 편리하게 지정할 수 있다. 가상 디렉터리는 논리적인 경로를 통해 웹 사이트의 하위 폴더나 다른 서버의 폴더에 접근할 수 있도록 하는 기능이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IIS 관리자에서는 디렉터리 검색 기능을 활성화할 수 있다. 사용자가 웹 페이지를 요청했을 때 해당 디렉터리에 기본 웹 문서가 없는 경우, 디렉터리 내의 파일 목록이 사용자에게 보여진다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Linux command&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;fsck&lt;/b&gt; : 파일 시스템을 점검하고 복구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;man&lt;/b&gt; : 매뉴얼 페이지를 보여줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;ps&lt;/b&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NTFS / ReFS&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- NTFS (New Technology File System) : Windows NT 계열 운영 체제에서 기본 파일 시스템으로 사용된다. 고급 기능과 안전성을 제공하는 파일 시스템으로, FAT32의 제한을 극복하기 위해 개발되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ReFS (Resilient File System) : 데이터 손상 방지 및 내결함성을 목표로 NTFS를 대체하기 위해 설계된 파일 시스템이다.&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;특징 &amp;nbsp;- NTFS&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;b&gt; 퍼미션 및 보안&amp;nbsp;&lt;/b&gt;: 파일 및 폴더에 매우 세밀한 접근 권한 설정 가능, ACL을 통해 사용자별 접근 권한 설정 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;암호화&lt;/b&gt; : EFS (Encrypting File System) 를 통해 파일 및 폴더 암호화 가능, 데이터 보호 및 보안을 위한 기능 포함&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;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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;특징 - ReFS&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 데이터 무결성&amp;nbsp;&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;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;퍼포먼스&lt;/b&gt; : 특정 워크로드에서 높은 성능 제공, NTFS보다 특정 시나리오에서 더 빠른 성능 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;가상화 환경&lt;/b&gt; : Hyper-V 및 기타 가상화 환경에서 높은 효율성 제공&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;&amp;nbsp;&lt;/p&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;- &lt;b&gt;RAID&lt;/b&gt;&amp;nbsp;&lt;b&gt;0&lt;/b&gt; (스트라이핑) : 데이터를 여러 디스크에 나눠 저장하여 동시에 읽고 쓸 수 있게 한다. 성능 향상은 있지만 한 디스크에 문제가 생기면 모든 데이터가 손실될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID&lt;/b&gt; &lt;b&gt;1&lt;/b&gt; (미러링) : 각 데이터를 최소 2개의 디스크에 중복해서 저장하여 안정성을 높인다. 하나의 디스크에 장애가 발생하더라도 다른 디스크에서 데이터를 제공할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID&lt;/b&gt; &lt;b&gt;2&lt;/b&gt; : 스트라이핑과 에러 교정 코드를 ㅅ용하지만 데이터가 비트 단위로 스트라이핑된다. 패리티 정보를 해밍 코드로 생성된다. 별도의 디스크에 패리티를 저장하지 않으며, 비트 단위로 데이터가 분할되어 있어 실제로 사용되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID 3&lt;/b&gt; : 바이트 단위로 데이터가 스트라이핑되며, 하나의 전용 디스크에 패리티 정보를 저장한다. 패리티 디스크에 병목 현상이 발생할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID 4&lt;/b&gt; : 블록 단위로 데이터가 스트라이핑되며, 하나의 전용 디스크에 패리티 정보를 저장한다. 데이터 읽기 성능이 좋지만 패리티 디스크에 병목 현상이 생길 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID 5&lt;/b&gt; (패리티 비트 사용) : 블록 단위로 데이터가 스트라이핑되며, 패리티 정보가 모든 디스크에 분산되어 저장된다. 회전 패리티 방식을 사용하여 특정 디스크에 병목 현상이 발생하지 않는다. 읽기 및 쓰기 성능이 균형 있게 향상된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID 6&lt;/b&gt; (이중 패리티) : RAID 5와 유사하지만 2개의 패리티 비트를 사용하여 두 디스크 장애에도 대응할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;RAID 10&lt;/b&gt; (1+0 또는 0+1) : RAID 1과 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;size14&quot;&gt;* 패리티 정보 : 데이터를 보호하고 오류를 감지하기 위해 사용되는 비트 정보. RAID에서 데이터 복구를 위해 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;* 병목 현상 : 시스템의 특정 부분에서 성능이 제한되어 전체 성능이 저하되는 현상&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;Shell&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;PowerShell&lt;/b&gt; : 시스템 관리 및 자동화를 위해 설계되었으며 Windows Server 및 클라이언트 운영 체제에서 사용된다. .NET Framework를 기반으로 하여 강력한 확장성과 모듈성을 제공하며, cmdlet이라는 특수 명령을 통해 다양한 시스템 관리 작업을 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;C-Shell (csh)&lt;/b&gt; : Unix 계열 운영체제에서 사용되는 CLI이다. C 프로그래밍 언어와 유사한 구문을 가지고 있으며 주로 스크립팅에 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;Bourne-Shell (sh)&lt;/b&gt; : Unix 운영 체제에서 기본으로 사용되는 CLI이다. 시스템 기본 셸로, 다른 많은 셸의 기초가 되었다. 간단한 스크립팅 기능을 제공하며, 기본적인 시스템 관리 작업에 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;K-Shell&lt;/b&gt;&amp;nbsp;&lt;b&gt;(ksh, KornShell)&lt;/b&gt; : Unix 계열 운영 체제에서 사용되는 CLI이다. Bourne-Shell 의 기능을 확장한 버전으로, 프로그래밍 기능이 향상되었다. 고급 스크립팅 기능과 호환성을 제공한다.&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;ipconfig&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig : 정보 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /all : 자세한 정보 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /renew : 모든 어댑터 갱신&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /renew EL* : EL로 시작되는 이름을 가진 모든 연결 갱신&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /release *Con* 모든 일치하는 연결 해제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /allcompartments : 모든 컴파트먼트에 대한 정보 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;ipconfig /allcompartments /all : 모든 컴파트먼트에 대한 자세한 정보 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;* Window 키 + R =&amp;gt; cmd =&amp;gt; ipconfig /? 의 내용&lt;/p&gt;</description>
      <category>네트워크/네트워크관리사</category>
      <author>kenkii</author>
      <guid isPermaLink="true">https://frankenkitty.tistory.com/27</guid>
      <comments>https://frankenkitty.tistory.com/27#entry27comment</comments>
      <pubDate>Sun, 16 Jun 2024 12:57:47 +0900</pubDate>
    </item>
  </channel>
</rss>