네트워크 기본 용어
1. IP 주소 (Internet Protocol Address)
• 설명: 인터넷에 연결된 모든 기기에 부여되는 고유한 번호. 기기들이 서로를 구분하고, 데이터를 주고받을 때 사용해.
• 종류:
• IPv4: 4개의 숫자로 이루어진 32비트 주소 (예: 192.168.0.1).
• IPv6: 8개의 16진수로 구성된 128비트 주소 (예: 2001:0db8:85a3::8a2e:0370:7334).
2. MAC 주소 (Media Access Control Address)
• 설명: 네트워크 카드에 고유하게 할당된 물리적 주소. 주로 같은 네트워크 내에서 데이터를 주고받을 때 사용돼.
• 형식: 6개의 16진수 숫자로 이루어진 48비트 주소 (예: 00:1A:2B:3C:4D:5E).
3. LAN (Local Area Network)
• 설명: 동일한 건물이나 근처에 있는 기기들을 연결하는 네트워크. 집, 회사, 학교 등에서 사용되는 네트워크야.
4. WAN (Wide Area Network)
• 설명: 서로 멀리 떨어진 지역을 연결하는 네트워크. 인터넷이 가장 큰 WAN의 예시야.
5. 라우터 (Router)
• 설명: 네트워크 간 데이터를 전달하는 장치. 집에서 인터넷을 사용할 때, 네트워크 패킷을 인터넷과 네트워크 장치 사이에서 주고받도록 도와줘.
6. 스위치 (Switch)
• 설명: 네트워크 내의 여러 기기들을 서로 연결해주는 장치. LAN 내에서 주로 사용돼.
7. DNS (Domain Name System)
• 설명: 우리가 웹사이트에 접속할 때 입력하는 도메인 주소를 실제 IP 주소로 변환해주는 시스템. 예를 들어, ‘www.example.com’을 IP 주소로 변환해 웹사이트에 접속하게 해줘.
8. HTTP (HyperText Transfer Protocol)
• 설명: 웹 브라우저와 웹 서버가 서로 정보를 주고받는 규칙. 안전한 버전으로 HTTPS가 있으며, 데이터를 암호화해서 주고받아 보안을 강화해.
9. TCP/IP (Transmission Control Protocol / Internet Protocol)
• 설명: 인터넷을 통해 데이터를 주고받는 두 가지 주요 프로토콜.
• TCP는 데이터를 신뢰성 있게 전송하고, 데이터 전송이 완료되었는지 확인해.
• IP는 데이터를 전송할 경로를 결정하고, 각 패킷에 보내는 목적지(IP 주소)를 붙여줘.
10. 패킷 (Packet)
• 설명: 데이터를 쪼갠 작은 단위. 인터넷에서 데이터를 주고받을 때 패킷 단위로 쪼개서 전송돼.
추가 용어
11. 노드 (Node)
• 설명: 네트워크에서 데이터를 주고받는 모든 기기를 의미해. 컴퓨터, 스마트폰, 프린터, 라우터 등이 노드에 해당돼.
12. 링크 (Link)
• 설명: 네트워크에서 두 노드를 연결하는 물리적 또는 논리적 연결. 네트워크 케이블이나 Wi-Fi 등이 링크의 예시야.
13. 라우팅 (Routing)
• 설명: 네트워크에서 데이터 패킷이 최종 목적지까지 가는 경로를 결정하는 과정. 라우터가 주로 이 역할을 담당해.
14. 서버 (Server)
• 설명: 네트워크에서 다른 기기(클라이언트)에게 서비스를 제공하는 컴퓨터나 시스템. 데이터를 처리하고 클라이언트에 응답하는 역할을 해.
15. 클라이언트 (Client)
• 설명: 서버로부터 서비스를 받는 기기나 프로그램. 네트워크에서 데이터를 요청하는 쪽을 클라이언트라고 불러.
OSI 7계층 설명
1. 물리 계층 (Physical Layer)
• 설명: 네트워크 통신의 가장 하위 계층으로, 실제로 데이터를 물리적으로 전송하는 역할을 해. 즉, 케이블, 전파, 광섬유 등을 통해 데이터를 0과 1로 변환해 주고받는 단계야.
• 역할: 전기 신호, 빛, 무선 신호를 통해 데이터를 전송하고 수신해.
• 예시: 이더넷 케이블, 광섬유, Wi-Fi, 네트워크 카드(NIC).
2. 데이터 링크 계층 (Data Link Layer)
• 설명: 물리 계층을 통해 전달된 데이터를 안정적으로 주고받도록 하는 계층이야. 이 계층에서 데이터가 네트워크 내에서 오류 없이 전달되도록 보장하고, MAC 주소를 통해 기기들을 식별해.
• 역할: 데이터 프레임 생성, 오류 검출 및 수정, 흐름 제어.
• 예시: 이더넷, 스위치, MAC 주소.
3. 네트워크 계층 (Network Layer)
• 설명: 네트워크 간의 데이터를 전송하는 역할을 해. 이 계층에서 목적지 IP 주소를 사용하여 패킷을 전달하며, 경로를 선택하는 라우팅도 이 계층에서 이뤄져.
• 역할: 패킷을 라우팅하고 네트워크 간 전송, IP 주소 관리.
• 예시: IP(Internet Protocol), 라우터.
4. 전송 계층 (Transport Layer)
• 설명: 데이터 전송의 신뢰성을 담당하는 계층으로, 데이터가 목적지에 정확하게 도착하도록 보장해. 이 계층에서는 데이터를 작은 단위로 나누어 전송하고, 수신자가 제대로 받았는지 확인해.
• 역할: 데이터 분할 및 재조립, 오류 제어, 흐름 제어.
• 예시: TCP(Transmission Control Protocol), UDP(User Datagram Protocol).
5. 세션 계층 (Session Layer)
• 설명: 통신하는 두 기기 사이에서 세션(연결)을 설정하고, 유지하며, 종료하는 역할을 해. 예를 들어, 파일을 다운로드하는 동안 연결을 유지하는 것과 관련 있어.
• 역할: 세션 관리, 연결 설정 및 종료, 데이터 동기화.
• 예시: 세션 관리 프로토콜 (NetBIOS 등).
6. 표현 계층 (Presentation Layer)
• 설명: 데이터를 사람이 이해할 수 있는 형식으로 변환하거나, 네트워크가 이해할 수 있도록 변환하는 계층이야. 암호화, 압축, 데이터 변환 등을 담당해.
• 역할: 데이터 암호화, 압축, 포맷 변환.
• 예시: JPEG, PNG, SSL/TLS 암호화.
7. 응용 계층 (Application Layer)
• 설명: 최종적으로 사용자가 네트워크에 접근할 수 있게 해주는 계층이야. 우리가 웹 브라우저, 이메일 클라이언트 등을 통해 네트워크를 사용하는 단계야. 모든 사용자와 네트워크 상호작용은 이 계층에서 이뤄져.
• 역할: 사용자와 애플리케이션 간 상호작용, 데이터 요청 및 제공.
• 예시: HTTP, FTP, SMTP, DNS.
요약
• OSI 7계층은 네트워크 통신을 7단계로 나누어 각 단계가 어떤 역할을 하는지 설명해주는 모델이야.
• 데이터를 물리적으로 전송하는 것부터, 데이터 형식을 변환하고, 사용자가 애플리케이션을 사용하는 부분까지 모든 단계를 설명해.
• 각 계층은 자신의 역할에 집중하며, 상위 계층이나 하위 계층과 협력해서 전체 통신을 완성해.
Tip💡
**프로토콜(Protocol)**은 쉽게 말하면 **네트워크에서 데이터를 주고받기 위한 “규칙”이나 “약속”**이야. 네트워크에 연결된 장치들이 서로 통신할 때, 어떻게 데이터를 보내고, 어떻게 받을지에 대한 정해진 규칙이 필요해. 이 규칙을 따라야 장치들이 서로 오해 없이 데이터를 주고받을 수 있어.
예를 들어, 우리가 일상에서 서로 대화를 할 때도 기본적인 규칙(인사, 말하는 순서 등)이 있잖아? 만약 규칙이 없으면 대화가 엉망이 될 거야. 마찬가지로, 네트워크에서도 장치들이 같은 규칙을 따라야 데이터가 제대로 전달될 수 있어.
예시:
• HTTP (HyperText Transfer Protocol): 웹 브라우저와 서버가 웹 페이지를 주고받는 규칙.
• TCP/IP (Transmission Control Protocol / Internet Protocol): 인터넷에서 데이터를 어떻게 나눠서 보내고 받을지를 정하는 규칙.
• FTP (File Transfer Protocol): 파일을 주고받기 위한 규칙.
즉, 프로토콜은 장치 간의 “언어”이자, 데이터를 주고받는 방법을 정의한 약속이라고 보면 돼.
TCP/IP 프로토콜은 인터넷에서 데이터를 주고받기 위한 표준 통신 규약이야. TCP/IP는 **Transmission Control Protocol (전송 제어 프로토콜)**과 **Internet Protocol (인터넷 프로토콜)**의 약자인데, 이 두 프로토콜이 인터넷에서 데이터를 주고받는 과정을 정의해.
TCP/IP 프로토콜의 기본 개념
1. IP (Internet Protocol)
• 설명: IP는 데이터를 목적지에 보내기 위해 주소를 지정하고, 경로를 결정하는 역할을 해. 각 기기는 고유한 IP 주소를 가지며, IP는 이 주소를 기반으로 데이터를 올바른 목적지로 전송해.
• 역할: 데이터를 패킷이라는 작은 단위로 쪼개고, 각 패킷에 보내는 기기(출발지)와 받는 기기(목적지)의 주소를 포함시켜서 보내.
• 문제점: IP는 데이터를 정확히 도착하게 하지만, 패킷이 손실되거나 순서가 뒤바뀔 수 있어. 그래서 TCP가 이를 보완해.
2. TCP (Transmission Control Protocol)
• 설명: TCP는 데이터를 신뢰성 있게 전달하는 프로토콜이야. IP가 데이터를 목적지로 보내면, TCP는 그 데이터가 손실 없이, 순서대로, 제대로 도착했는지 확인해.
• 역할: 데이터를 작은 단위인 **세그먼트(segment)**로 나누어 전송하고, 상대방이 잘 받았는지 확인하는 **확인 응답(ACK)**을 받아. 만약 패킷이 손실되면 다시 전송하는 방식으로 데이터의 신뢰성을 보장해.
• 특징: TCP는 연결 지향형 프로토콜로, 데이터를 보내기 전에 송신자와 수신자가 먼저 연결을 맺고 데이터를 전송해.
TCP/IP의 동작 과정
1. 데이터를 전송하려면 먼저 TCP가 데이터를 여러 세그먼트로 나눠.
2. IP는 각 세그먼트에 출발지와 목적지의 IP 주소를 붙이고, 데이터를 패킷으로 만들어 네트워크로 전송해.
3. 수신 측에서는 IP가 해당 패킷들을 받아 TCP에게 전달해.
4. TCP는 패킷을 조립하고, 손실된 패킷이 있으면 다시 요청해서 데이터를 완성해.
5. 수신자는 최종적으로 완성된 데이터를 받게 돼.
TCP/IP 계층 구조
TCP/IP는 OSI 7계층처럼 계층 구조를 가지는데, 4개의 주요 계층으로 나뉘어 있어:
1. 네트워크 인터페이스 계층 (Link Layer)
• 물리적으로 데이터를 주고받는 역할. LAN, WAN 등 물리적인 네트워크 장치들이 이 계층에 포함돼.
2. 인터넷 계층 (Internet Layer)
• 데이터를 목적지까지 전달하는 역할(IP가 여기서 작동). 경로 선택(라우팅)과 IP 주소 설정을 담당해.
3. 전송 계층 (Transport Layer)
• 데이터 전송의 신뢰성을 보장하는 역할(TCP와 UDP가 여기서 작동). 데이터를 세그먼트로 나누고, 재전송 등을 통해 신뢰성 있는 통신을 보장해.
4. 응용 계층 (Application Layer)
• 사용자가 직접 상호작용하는 애플리케이션이 있는 계층. 웹 브라우저, 이메일 클라이언트 등이 여기에 포함돼 (HTTP, FTP, SMTP 등).
TCP/IP의 장점
• 신뢰성: TCP는 데이터를 잃지 않고 순서대로 전달할 수 있게 해줘.
• 유연성: 여러 네트워크 장치와 잘 호환돼, 인터넷의 다양한 기기들이 통신할 수 있어.
• 표준성: 전 세계적으로 표준으로 사용돼, 다양한 네트워크 환경에서도 안정적인 통신이 가능해.
정리
• IP는 데이터를 목적지까지 보내고, TCP는 데이터를 손실 없이 신뢰성 있게 전송해주는 역할을 해.
• TCP/IP는 인터넷의 근간이 되는 프로토콜이며, 이 덕분에 우리가 웹 브라우징, 파일 전송 등을 할 수 있어.
1. 캡슐화(Encapsulation)
캡슐화는 데이터를 네트워크를 통해 전송할 때 각 계층에서 데이터를 포장하는 과정이야. 각 계층에서 데이터를 처리할 때, 필요한 추가 정보를 덧붙여서 데이터를 점점 큰 “패키지”로 만들어 보내는 방식이지.
캡슐화의 과정:
1. 응용 계층에서 데이터 생성: 사용자가 웹 브라우저나 이메일 클라이언트를 통해 입력한 데이터를 생성.
2. 전송 계층에서 TCP/UDP 헤더를 추가: 데이터를 세그먼트로 쪼개고, 데이터 전송과 관련된 정보를 포함하는 헤더를 추가.
3. 네트워크 계층에서 IP 헤더를 추가: 세그먼트를 패킷으로 만들고, 출발지와 목적지의 IP 주소를 추가.
4. 데이터 링크 계층에서 프레임 생성: 패킷에 MAC 주소 같은 물리적 주소 정보를 덧붙여 프레임으로 만들어.
5. 물리 계층에서 전송: 프레임을 0과 1의 비트로 변환해 물리적으로 네트워크를 통해 전송해.
2. 디캡슐화(Decapsulation)
디캡슐화는 데이터를 받은 쪽에서 캡슐을 차례로 풀어가는 과정이야. 각 계층에서 자신이 추가했던 헤더를 제거하고, 최종적으로 원래의 데이터를 복원하는 거지.
디캡슐화의 과정:
1. 물리 계층: 받은 신호(0과 1)를 해석해 프레임으로 변환.
2. 데이터 링크 계층: 프레임에서 MAC 주소를 제거하고 패킷을 상위 계층으로 전달.
3. 네트워크 계층: IP 헤더를 제거하고 세그먼트를 전송 계층으로 전달.
4. 전송 계층: TCP/UDP 헤더를 제거하고, 데이터를 조립한 후 응용 계층으로 전달.
5. 응용 계층: 최종적으로 사용자가 볼 수 있는 데이터로 변환해.
요약
• 캡슐화(Encapsulation): 데이터를 전송할 때 각 계층에서 헤더를 덧붙여 데이터를 포장하는 과정.
• 디캡슐화(Decapsulation): 데이터를 받을 때 각 계층에서 헤더를 제거해 원래 데이터를 복원하는 과정.
이 두 과정 덕분에 데이터가 네트워크를 통해 정확하고 안전하게 전송되고, 수신자는 포장을 풀어 원래 데이터를 받을 수 있어.
1. 프라이빗 IP 주소 (Private IP Address)
프라이빗 IP 주소는 로컬 네트워크(집, 회사 같은 사설 네트워크) 내에서만 사용되는 IP 주소야. 이 주소들은 외부 인터넷과 직접 연결되지 않으며, 네트워크 내에서만 장치들을 식별하고 통신할 수 있어.
주요 특징:
• 외부 인터넷에서는 사용할 수 없어: 프라이빗 IP 주소는 외부 인터넷에서는 통신할 수 없고, 같은 네트워크 내에서만 작동해.
• 주소 범위가 고정되어 있어: RFC 1918에 따라 지정된 범위가 있어, 전 세계적으로 중복 사용이 가능해.
• 10.0.0.0 ~ 10.255.255.255
• 172.16.0.0 ~ 172.31.255.255
• 192.168.0.0 ~ 192.168.255.255
• NAT(Network Address Translation) 필요: 외부 인터넷과 통신하려면 NAT 장치(주로 라우터)가 프라이빗 IP 주소를 퍼블릭 IP 주소로 변환해줘야 해.
예시:
• 집에서 사용하는 Wi-Fi 네트워크에서 기기들(컴퓨터, 스마트폰 등)이 할당받는 IP 주소는 프라이빗 IP 주소야. 예를 들어, 192.168.0.1 같은 주소를 말해.
2. 퍼블릭 IP 주소 (Public IP Address)
퍼블릭 IP 주소는 인터넷에 직접 연결되는 주소야. 모든 인터넷 사용자는 고유한 퍼블릭 IP 주소를 가지고, 이 주소를 통해 전 세계와 통신할 수 있어. 퍼블릭 IP는 인터넷 상에서 장치들이 서로를 식별하고, 데이터를 주고받을 수 있도록 해줘.
주요 특징:
• 인터넷에서 사용: 퍼블릭 IP는 외부 인터넷과 연결되며, 전 세계에서 고유한 IP 주소로 통신할 수 있어.
• 고유성: 퍼블릭 IP 주소는 전 세계적으로 중복되지 않고 고유해야 해. ISP(인터넷 서비스 제공자)가 사용자에게 퍼블릭 IP 주소를 할당해.
• 직접 인터넷 접근 가능: 퍼블릭 IP 주소를 가지고 있는 기기는 NAT 없이도 바로 인터넷에 접속해 데이터를 주고받을 수 있어.
예시:
• 인터넷에서 웹사이트에 접속할 때, 그 웹사이트는 퍼블릭 IP 주소를 가지고 있어. 예를 들어, 172.217.5.110은 구글의 퍼블릭 IP 주소 중 하나야.
요약
구분 | 프라이빗 IP 주소 | 퍼블릭 IP 주소 |
---|---|---|
사용 범위 | 로컬 네트워크(집, 회사 등) | 인터넷 상에서 전 세계와 통신 |
접근 | 외부에서 직접 접근 불가 | 전 세계 어디서나 접근 가능 |
중복 가능 여부 | 중복 가능 (다른 네트워크에서 동일하게 사용 가능) | 중복 불가 (고유한 IP 주소 필요) |
NAT 필요 여부 | 외부와 통신하려면 NAT 필요 | NAT 없이 직접 인터넷 통신 가능 |
주소 범위 | 10.x.x.x, 172.16.x.x ~ 172.31.x.x, 192.168.x.x | ISP가 제공하는 고유한 IP 주소 |
정리하자면, 프라이빗 IP는 내부 네트워크에서만 쓰이고, 퍼블릭 IP는 인터넷을 통해 외부와 연결될 때 사용하는 주소야. 둘은 각기 다른 네트워크 환경에서 효율적인 통신을 위해 존재해!
1. WLAN (Wireless Local Area Network)
• 설명: WLAN은 무선으로 장치들을 연결하는 **근거리 네트워크(LAN)**의 일종이야. 주로 Wi-Fi를 사용해 네트워크에 연결된 장치들이 데이터를 주고받을 수 있어.
• 범위: 주로 건물 내, 집, 학교, 회사 등 제한된 작은 범위에서 사용돼.
• 연결 방식: 무선 라우터나 무선 액세스 포인트를 통해 스마트폰, 노트북 같은 장치들이 Wi-Fi로 연결돼.
• 속도: 근거리 네트워크이기 때문에 빠른 속도를 제공할 수 있어.
• 사용 예시: 집이나 사무실에서 사용하는 Wi-Fi 네트워크가 대표적인 예시야.
2. WAN (Wide Area Network)
• 설명: WAN은 지리적으로 넓은 지역을 연결하는 광역 네트워크야. 여러 LAN이나 다른 네트워크를 연결해 전 세계적으로 통신할 수 있도록 해.
• 범위: 국가, 대륙 또는 전 세계처럼 넓은 지역에 걸쳐 있어. 인터넷이 가장 대표적인 WAN이야.
• 연결 방식: WAN은 주로 **유선(케이블, 광섬유)**을 사용하며, 때때로 위성이나 기타 원거리 통신 방식을 사용할 수 있어.
• 속도: 범위가 넓기 때문에 WLAN보다는 상대적으로 속도가 느릴 수 있지만, 이는 네트워크 구성에 따라 다를 수 있어.
• 사용 예시: 인터넷이나 대기업에서 여러 국가나 지역의 지사들을 연결할 때 사용하는 네트워크가 WAN의 예시야.
요약 비교
구분 | WLAN (Wireless LAN) | WAN (Wide Area Network) |
---|---|---|
범위 | 집, 학교, 회사 같은 작은 지역 | 국가, 대륙, 전 세계처럼 넓은 지역 |
연결 방식 | 무선(Wi-Fi) | 유선(케이블, 광섬유), 위성 |
속도 | 일반적으로 빠름 | 범위에 따라 느릴 수 있음 |
사용 예시 | 가정이나 사무실의 Wi-Fi 네트워크 | 인터넷, 기업 간 국제 네트워크 |
서브넷 마스크와 비트와이즈 AND 연산의 관계
1. **서브넷 마스크(Subnet Mask)**는 32비트 숫자로, IP 주소의 네트워크 부분을 나타내기 위해 사용돼. 서브넷 마스크에서 1은 네트워크 부분을 나타내고, 0은 호스트 부분을 나타내.
예를 들어, 일반적인 서브넷 마스크 255.255.255.0은 이진수로 표현하면 11111111.11111111.11111111.00000000이야. 앞의 24비트가 네트워크 부분이고, 뒤의 8비트가 호스트 부분을 나타내.
2. 비트와이즈 AND 연산을 사용해 IP 주소와 서브넷 마스크를 비교하면, 네트워크 주소를 추출할 수 있어. 네트워크 주소는 해당 IP 주소가 속한 네트워크를 식별하는 데 사용돼.
예시: 비트와이즈 AND 연산을 이용한 네트워크 주소 추출
IP 주소: 192.168.1.10
• 이진수 표현: 11000000.10101000.00000001.00001010
서브넷 마스크: 255.255.255.0
• 이진수 표현: 11111111.11111111.11111111.00000000
비트와이즈 AND 연산을 수행하면:
11000000.10101000.00000001.00001010 (IP 주소)
& 11111111.11111111.11111111.00000000 (서브넷 마스크)
-------------------------------------
11000000.10101000.00000001.00000000 (네트워크 주소)
결과는 192.168.1.0이야. 이 값은 네트워크 주소로, 이 네트워크에 속한 모든 호스트들은 IP 주소의 네트워크 부분이 192.168.1로 동일하게 유지돼.
정리:
• 비트와이즈 AND 연산은 IP 주소와 서브넷 마스크를 비교해서, 네트워크 주소를 추출하는데 사용돼.
• 서브넷 마스크는 네트워크 부분을 1로, 호스트 부분을 0으로 설정해 IP 주소에서 네트워크와 호스트를 구분해.
• 결과적으로, 네트워크 주소를 알아내면 그 네트워크에 속한 IP들을 효율적으로 관리하고 라우팅할 수 있어.
네트워크 암호화와 복호화는 데이터를 안전하게 전송하기 위해 사용하는 중요한 기술이야. 암호화는 데이터를 변환해서 외부에서 이해할 수 없게 만드는 과정이고, 복호화는 암호화된 데이터를 원래대로 되돌리는 과정이야. 이를 통해 네트워크 상에서 데이터를 안전하게 주고받을 수 있어.
1. 암호화(Encryption)
암호화는 데이터를 보호하기 위해 원본 데이터를 변환하는 과정이야. 전송 중에 제3자가 데이터를 도청하거나 탈취하더라도 내용을 이해할 수 없도록 만들기 위해 사용돼.
• 동작 원리: 원본 데이터를 암호화 키를 사용해 암호화 알고리즘을 적용하여 변환해. 암호화된 데이터는 일반적으로 알아볼 수 없는 형태의 코드로 변환돼.
• 예시: 평문 Hello를 암호화하면 3f5b3f 같은 난해한 코드로 변환되는 것처럼, 데이터를 알아볼 수 없게 만들어.
• 사용 예시: HTTPS를 통한 웹사이트 접속, 이메일 암호화, VPN, 메시징 앱 등에서 사용.
2. 복호화(Decryption)
복호화는 암호화된 데이터를 다시 원래 상태로 되돌리는 과정이야. 수신 측에서 받은 암호화된 데이터를 복호화 키를 사용해 복원함으로써, 원래의 데이터를 다시 확인할 수 있어.
• 동작 원리: 복호화는 암호화에서 사용된 암호화 키 또는 대응되는 복호화 키를 통해 이루어져. 암호화된 데이터를 원래의 평문으로 되돌리는 과정이야.
• 예시: 암호화된 메시지 3f5b3f를 복호화하면 다시 Hello로 복원돼.
3. 암호화 방식
암호화는 크게 두 가지 방식으로 나눌 수 있어:
1) 대칭키 암호화 (Symmetric Encryption)
• 설명: 암호화와 복호화에 같은 키를 사용하는 방식이야. 즉, 데이터를 암호화할 때 사용한 같은 키로 복호화도 할 수 있어.
• 장점: 처리 속도가 빠르고 간단해.
• 단점: 키를 안전하게 전달하기 어려워. 만약 누군가 키를 알게 되면 데이터를 쉽게 해독할 수 있어.
• 예시: AES(Advanced Encryption Standard), DES(Data Encryption Standard).
2) 비대칭키 암호화 (Asymmetric Encryption)
• 설명: 공개 키와 개인 키 두 가지 키를 사용하는 방식이야. 공개 키로 암호화된 데이터는 개인 키로만 복호화할 수 있어. 반대로 개인 키로 암호화된 데이터는 공개 키로 복호화할 수 있지.
• 장점: 공개 키를 누구에게나 공유해도 보안이 유지돼.
• 단점: 대칭키 암호화보다 처리 속도가 느림.
• 예시: RSA(Rivest-Shamir-Adleman), ECC(Elliptic Curve Cryptography).
4. 실생활에서의 사용 예시
• HTTPS: 웹사이트에서 사용하는 프로토콜로, 웹 브라우저와 서버 간의 데이터를 암호화해서 안전하게 주고받을 수 있게 해줘.
• VPN: 사용자가 외부 네트워크에 안전하게 접속하기 위해 데이터를 암호화하여 인터넷을 통해 전달하는 방식.
• 메시지 암호화: WhatsApp, Telegram 같은 메신저는 종단 간 암호화(end-to-end encryption) 방식을 사용해서 송신자와 수신자 외에는 메시지를 해독할 수 없게 보호해.
요약:
• 암호화는 데이터를 안전하게 전송하기 위해 원래의 데이터를 알아볼 수 없는 코드로 변환하는 과정.
• 복호화는 암호화된 데이터를 원래대로 되돌리는 과정.
• 대칭키 암호화는 같은 키로 암호화와 복호화를 하고, 비대칭키 암호화는 공개 키와 개인 키를 이용해 각각의 과정을 수행해.
네트워크에서 데이터를 전달하는 방식은 데이터를 목적지까지 보내는 과정에서 어떻게 전달하느냐에 따라 여러 가지 방법으로 나눌 수 있어. 주로 유니캐스트, 멀티캐스트, 브로드캐스트의 세 가지 방식으로 구분되는데, 각 방식은 네트워크 상에서 데이터를 전송할 대상과 범위에 차이가 있어. 아래에서 각 방식에 대해 설명해줄게.
1. 유니캐스트 (Unicast)
유니캐스트는 1:1 데이터 전송 방식이야. 즉, 한 개의 송신자가 한 개의 수신자에게만 데이터를 전송하는 방식이지. 대부분의 인터넷 통신(예: 웹사이트 접속, 이메일 전송 등)이 유니캐스트 방식으로 이루어져.
• 특징: 데이터를 보내는 쪽과 받는 쪽이 명확하게 정해져 있고, 둘 사이에 직접적인 연결이 이루어져. 데이터가 목적지로만 가기 때문에 다른 네트워크 장치에는 영향을 주지 않아.
• 사용 예시:
• 웹 브라우징(클라이언트가 서버에 요청하고, 서버가 응답을 보냄)
• 이메일 전송
• 파일 다운로드
2. 멀티캐스트 (Multicast)
멀티캐스트는 1:다수의 특정 그룹에게만 데이터를 전송하는 방식이야. 송신자가 데이터를 여러 명에게 보내지만, 특정 그룹에 속한 수신자들만 데이터를 받아. 이는 네트워크 자원을 더 효율적으로 사용할 수 있게 해줘.
• 특징: 송신자는 데이터를 여러 수신자에게 동시에 보낼 수 있지만, 이때 모든 네트워크 장치가 데이터를 받는 것이 아니라 특정 그룹에 속한 장치들만 데이터를 받아. 따라서 불필요한 데이터 전송을 줄일 수 있어.
• 사용 예시:
• 실시간 스트리밍 (동영상 방송, IPTV 등)
• 화상 회의
• 온라인 게임 (다수의 플레이어에게 동시에 업데이트 전송)
3. 브로드캐스트 (Broadcast)
브로드캐스트는 1:전체에게 데이터를 전송하는 방식이야. 송신자가 같은 네트워크에 있는 모든 장치에게 데이터를 보낼 때 사용해. LAN(Local Area Network) 같은 로컬 네트워크에서 주로 사용돼.
• 특징: 송신된 데이터는 네트워크 내에 있는 모든 장치로 전송돼. 이 방식은 전체에게 정보를 전달할 때 유용하지만, 필요하지 않은 장치에도 데이터를 보내기 때문에 네트워크 부하가 커질 수 있어.
• 사용 예시:
• ARP(Address Resolution Protocol): IP 주소에 맞는 MAC 주소를 찾기 위해 사용됨.
• DHCP(Dynamic Host Configuration Protocol): 네트워크에 연결된 장치에게 IP 주소를 자동으로 할당할 때.
4. 애니캐스트 (Anycast)
애니캐스트는 1:1 전송 방식이긴 하지만, 가장 가까운 수신자에게 데이터를 전송하는 특수한 방식이야. 여러 수신자가 있을 때, 송신자는 그 중에서 가장 가까운(최단 경로에 있는) 수신자에게만 데이터를 보냄.
• 특징: 애니캐스트는 주로 부하 분산이나 장애 복구에서 사용돼. 같은 데이터가 여러 곳에 저장되어 있을 때, 가장 빠르게 응답할 수 있는 서버가 데이터를 제공하게 돼.
• 사용 예시:
• CDN(Content Delivery Network): 웹 콘텐츠를 전 세계적으로 분산시켜 제공할 때 사용.
• DNS(Domain Name System): 최적의 DNS 서버로 요청을 전달.
요약 비교
데이터 전달 방식 | 설명 | 사용 예시 |
---|---|---|
유니캐스트 (Unicast) | 1:1 데이터 전송 | 웹 브라우징, 이메일, 파일 전송 |
멀티캐스트 (Multicast) | 1:특정 그룹에게만 데이터 전송 | 실시간 스트리밍, 화상 회의, 온라인 게임 |
브로드캐스트 (Broadcast) | 1:네트워크 내 모든 장치에게 데이터 전송 | ARP, DHCP |
애니캐스트 (Anycast) | 가장 가까운 수신자에게 데이터 전송 | CDN, DNS 부하 분산 |
결론:
• 유니캐스트: 하나의 송신자가 하나의 수신자에게 데이터를 전송하는 방식.
• 멀티캐스트: 하나의 송신자가 여러 명의 특정 그룹에게만 데이터를 전송하는 방식.
• 브로드캐스트: 하나의 송신자가 같은 네트워크의 모든 장치에게 데이터를 전송하는 방식.
• 애니캐스트: 여러 수신자 중 가장 가까운 수신자에게만 데이터를 전송하는 방식.
**MAC 주소(Media Access Control Address)**는 네트워크에서 기기를 고유하게 식별하기 위해 사용되는 물리적인 주소야. 모든 네트워크 장치(컴퓨터, 스마트폰, 라우터 등)는 고유한 MAC 주소를 가지고 있어, 네트워크 상에서 서로를 구분하고 통신할 수 있어.
MAC 주소의 특징:
1. 고유성: MAC 주소는 전 세계에서 고유해. 각 네트워크 장치는 제조될 때 MAC 주소가 할당되며, 이는 중복되지 않도록 관리돼.
2. 48비트 주소: MAC 주소는 보통 48비트 길이로, 16진수 12자리로 표현돼. 6개의 2자리 16진수로 구분되며, 중간에 콜론(:)이나 하이픈(-)으로 구분해 표기해.
예시: 00:1A:2B:3C:4D:5E 또는 00-1A-2B-3C-4D-5E
3. 네트워크 인터페이스마다 존재: 하나의 장치에도 여러 개의 네트워크 인터페이스가 있다면, 각 인터페이스(유선, 무선 등)마다 다른 MAC 주소를 가지고 있어.
4. 물리 계층에서 사용: MAC 주소는 **데이터 링크 계층(OSI 2계층)**에서 사용되며, 로컬 네트워크에서 데이터를 주고받을 때 사용돼. IP 주소는 네트워크 상에서 기기를 식별하지만, 로컬 네트워크 내에서는 MAC 주소가 사용돼.
MAC 주소의 구조:
• 앞 24비트: **제조사(OUI, Organizationally Unique Identifier)**를 나타내는 부분. 이 부분을 보고 장치가 어느 제조사에서 만들어졌는지 알 수 있어.
• 뒤 24비트: 기기 고유 번호. 같은 제조사의 장치들 사이에서도 고유성을 보장하기 위한 값이 할당돼.
MAC 주소의 사용 예시:
1. LAN 통신: 로컬 네트워크에서 장치 간 통신은 MAC 주소를 사용해 데이터를 주고받아. 예를 들어, 네트워크 스위치가 패킷을 전달할 때 MAC 주소를 확인해 적절한 장치로 데이터를 보내.
2. ARP (Address Resolution Protocol): ARP는 IP 주소를 MAC 주소로 변환해주는 프로토콜이야. 네트워크에서 IP 주소만 가지고 있을 때, 이 IP 주소에 해당하는 MAC 주소를 찾아 데이터를 전달할 수 있도록 해.
3. 네트워크 보안: 네트워크 관리자들이 특정 MAC 주소만 허용해 보안을 강화하거나, MAC 주소 기반으로 네트워크에 대한 접근을 제어할 수 있어.
요약:
• MAC 주소는 네트워크 상에서 장치를 고유하게 식별하기 위한 물리적 주소.
• 48비트, 16진수로 표현되며, 전 세계적으로 고유함.
• **데이터 링크 계층(2계층)**에서 사용되며, IP 주소와 달리 로컬 네트워크에서 장치 간 통신을 위해 사용돼.
**아파치 웹 서버(Apache HTTP Server)**와 **톰캣 서버(Apache Tomcat Server)**는 서로 다른 목적을 가진 서버야. 둘 다 웹 서버로 분류되지만, 다루는 역할이 다르고, 주로 사용하는 환경도 다르지.
1. 아파치 웹 서버(Apache HTTP Server)
• 주된 역할: 정적인 콘텐츠(HTML, CSS, 이미지 등)를 제공하는 웹 서버.
• 설명: 아파치 웹 서버는 주로 정적인 웹 페이지를 서비스하기 위해 사용돼. 클라이언트가 웹 브라우저로 요청하면, 아파치 서버는 HTML 파일, 이미지, CSS, JavaScript 파일 같은 정적인 콘텐츠를 제공해.
• 사용 환경: 정적인 웹사이트나 블로그, 간단한 웹 애플리케이션을 서비스할 때 많이 사용돼.
• 확장성: PHP, Python, Perl 같은 서버 스크립트를 실행하기 위해 **CGI(Common Gateway Interface)**나 모듈을 통해 확장할 수 있어. 하지만, 자바 서블릿이나 JSP(Java Server Pages) 같은 동적 웹 애플리케이션을 처리하기 위해서는 별도의 애플리케이션 서버가 필요해.
2. 톰캣 서버(Apache Tomcat Server)
• 주된 역할: 동적인 콘텐츠(Java 기반의 웹 애플리케이션)를 실행하는 애플리케이션 서버.
• 설명: 톰캣은 Java 서블릿과 JSP(JavaServer Pages) 같은 동적인 웹 애플리케이션을 처리할 수 있는 서블릿 컨테이너야. 즉, 자바로 작성된 웹 애플리케이션을 실행할 수 있는 환경을 제공해.
• 사용 환경: 톰캣은 자바 기반의 웹 애플리케이션을 실행할 때 주로 사용돼. 예를 들어, Spring이나 Struts 같은 자바 웹 프레임워크로 개발된 애플리케이션을 서브릿이나 JSP로 처리할 수 있어.
• 정적 콘텐츠도 제공할 수 있지만, 주로 동적인 웹 애플리케이션을 처리하는 데 특화되어 있어.
차이점 요약
항목 | 아파치 웹 서버 (Apache HTTP Server) | 톰캣 서버 (Apache Tomcat Server) |
---|---|---|
주된 역할 | 정적 콘텐츠 제공 (HTML, 이미지 등) | 동적 콘텐츠 제공 (Java 서블릿, JSP) |
기능 | HTML, CSS, 이미지, JavaScript 같은 정적 파일 처리 | 자바 기반 웹 애플리케이션 실행 (서블릿, JSP) |
확장성 | PHP, Python 등 스크립트 실행 가능 | 주로 자바 웹 애플리케이션에 사용 |
사용 환경 | 정적인 웹사이트, 간단한 서비스 제공 | 자바 기반 동적 웹 애플리케이션 서비스 |
웹 애플리케이션 지원 | 별도의 애플리케이션 서버 필요 (ex. Tomcat) | 서블릿, JSP 지원 |
아파치와 톰캣의 협업
• 아파치 웹 서버와 톰캣 서버의 조합: 아파치 웹 서버와 톰캣 서버를 함께 사용해서 정적 콘텐츠는 아파치가 처리하고, 동적인 자바 애플리케이션은 톰캣이 처리하게 할 수 있어. 이를 통해 서버의 성능을 최적화할 수 있어.
결론:
• 아파치 웹 서버는 주로 정적인 콘텐츠를 제공하는 데 사용되고, 웹사이트에서 HTML, CSS, 이미지 같은 정적 파일을 서빙하는 역할을 해.
• 톰캣 서버는 Java 기반의 동적 웹 애플리케이션을 실행하는 데 특화된 서버로, 서블릿과 JSP 같은 동적인 요청을 처리해.
*짝수 패리티(Even Parity)**와 **홀수 패리티(Odd Parity)**는 데이터 전송 중 발생할 수 있는 오류를 검출하기 위한 간단한 에러 검출 방법이야. 주로 데이터 통신에서 데이터를 전송할 때 데이터가 손상되었는지 확인하는 데 사용돼. 이때 패리티 비트라는 추가적인 비트를 데이터에 더해 데이터의 1의 개수를 특정 규칙에 맞춰 조정해.
1. 짝수 패리티 (Even Parity)
짝수 패리티는 1의 개수가 짝수가 되도록 패리티 비트를 설정하는 방식이야.
• 동작 원리: 데이터를 전송하기 전에, 데이터의 모든 비트 중 1의 개수가 짝수가 되도록 패리티 비트를 추가해.
• 예시:
• 데이터가 1010100이라면, 1의 개수가 3개(홀수)야. 짝수 패리티를 사용하기 위해 패리티 비트로 1을 추가해 1의 개수를 짝수로 만들어야 해. 그래서 전송되는 데이터는 10101001(패리티 비트가 1)로 변해.
• 데이터가 1101010이라면, 1의 개수가 4개(짝수)야. 따라서 패리티 비트는 0으로 추가돼. 전송 데이터는 11010100이 돼.
2. 홀수 패리티 (Odd Parity)
홀수 패리티는 1의 개수가 홀수가 되도록 패리티 비트를 설정하는 방식이야.
• 동작 원리: 데이터를 전송하기 전에, 데이터의 모든 비트 중 1의 개수가 홀수가 되도록 패리티 비트를 추가해.
• 예시:
• 데이터가 1010100이라면, 1의 개수가 3개(홀수)야. 이미 홀수 개수이므로 패리티 비트는 0으로 추가돼. 전송되는 데이터는 10101000이 돼.
• 데이터가 1101010이라면, 1의 개수가 4개(짝수)야. 따라서 패리티 비트로 1을 추가해 1의 개수가 홀수가 되도록 만들어. 전송 데이터는 11010101이 돼.
짝수 패리티와 홀수 패리티의 비교
구분 | 짝수 패리티 (Even Parity) | 홀수 패리티 (Odd Parity) |
---|---|---|
패리티 비트 설정 | 1의 개수가 짝수가 되도록 비트를 설정 | 1의 개수가 홀수가 되도록 비트를 설정 |
오류 검출 방법 | 데이터 전송 후 1의 개수가 짝수인지 확인 | 데이터 전송 후 1의 개수가 홀수인지 확인 |
사용 예시 | 데이터 통신, 메모리 오류 검출 | 데이터 통신, 무선 전송 오류 검출 |
패리티 검사의 목적
패리티 비트는 데이터가 전송 중에 오류가 발생했는지 간단하게 확인하기 위한 수단이야. 데이터가 전송된 후, 수신 측에서는 데이터의 1의 개수를 세서 패리티 비트가 제대로 설정되었는지 확인해. 만약 설정된 패리티와 1의 개수가 맞지 않으면 오류가 발생했다는 것을 감지할 수 있어.
패리티 검사의 한계
• 단일 비트 오류만 검출 가능: 패리티 비트는 단순히 1비트의 오류만을 검출할 수 있어. 만약 두 개 이상의 비트가 잘못 전송된 경우, 패리티 검사로는 이를 검출할 수 없어.
• 오류 정정 불가능: 패리티 비트는 오류를 검출하는 용도이기 때문에, 오류가 발생했다는 사실을 알 수 있지만 오류를 수정할 수는 없어.
결론:
• 짝수 패리티는 1의 개수를 짝수로 만들기 위해 패리티 비트를 추가하는 방식이고, 홀수 패리티는 1의 개수를 홀수로 만들기 위해 패리티 비트를 추가해.
• 패리티 비트는 전송 중 오류가 발생했는지 간단하게 검출할 수 있는 방법으로, 주로 데이터 통신에서 사용돼.
'Network' 카테고리의 다른 글
Http 프로토콜 (6) | 2024.09.27 |
---|---|
UDP 소켓 프로그래밍 (0) | 2024.09.26 |
TCP 소켓 프로그래밍 (0) | 2024.09.26 |
네트워크 프로토콜 (4) | 2024.09.26 |
네트워크 필수 개념: DHCP, ARP, NAT, 그리고 ZeroConf (8) | 2024.09.25 |