## IP ★★★
"Internet Protocol"의 약자로, 컴퓨터 네트워크에서 기기와 호스트 간의 통신을 위해 사용되는 주소 체계입니다.
IP 주소는 컴퓨터, 서버, 라우터, 스마트폰 또는 다른 네트워크 기기를 식별하는 데 사용됩니다.
# IP 주소는 다음 두 가지 주요 형식으로 나타낼 수 있습니다:
IPv4 (Internet Protocol version 4):
32비트 숫자로 표현됩니다.
주소 형식은 "x.x.x.x"로, 각각의 "x"는 0부터 255 사이의 10진수 숫자입니다.
예를 들어, "192.168.1.1"은 흔히 사용되는 IPv4 주소입니다.
그러나 IPv4 주소 공간의 부족으로 인해 IPv6가 개발되었습니다.
IPv6 (Internet Protocol version 6):
IPv6 :
128비트 숫자로 표현됩니다.
주소 형식은 "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx"로, 각각의 "x"는 16진수 숫자입니다.
IPv6는 IPv4 주소 공간의 한계를 극복하고 더 많은 고유 주소를 제공하기 위해 개발되었습니다.
IP 주소는 데이터 패킷을 보낼 때 출발지와 목적지를 결정하는 데 사용됩니다.
이것은 인터넷에서 데이터가 어떻게 라우팅되고 목적지에 도달하는지를 관리하는 데 중요한 역할을 합니다.
또한 IP 주소는 컴퓨터가 로컬 네트워크에서도 서로를 식별하는 데 사용됩니다.
예를 들어, 웹 브라우저가 웹 서버에 데이터를 요청할 때, 웹 서버의 IP 주소와 포트 번호를 사용하여 요청을 전송하고 응답을 받게 됩니다. IP 주소는 인터넷과 네트워크 통신의 핵심 요소 중 하나이며, 모든 온라인 활동에서 사용됩니다.
## 포트 (Port) ★★★
컴퓨터 네트워크에서 프로그램 또는 서비스가 커뮤니케이션을 수행하는 데 사용되는 논리적인 엔드포인트입니다.
이것은 네트워크 통신에서 프로세스 또는 서비스를 식별하고 구별하는 데 사용됩니다.
포트는 16비트 숫자로 표현되며, 0부터 65535까지의 범위를 가집니다.
# 포트는 주로 TCP (Transmission Control Protocol) 및 UDP (User Datagram Protocol)와 함께 사용되며
다음과 같은 역할을 합니다:
프로세스 식별: 하나의 컴퓨터에서 여러 서비스 또는 프로세스가 실행될 수 있습니다. 각 프로세스는 고유한 포트 번호를 통해 식별됩니다. 예를 들어, 웹 서버는 일반적으로 80번 포트를 사용하며, 이메일 서버는 25번 포트를 사용합니다.
데이터 라우팅: 데이터 패킷은 목적지 IP 주소와 포트 번호를 기반으로 해당 포트로 전송됩니다. 목적지 포트 번호를 통해 목적지 서비스 또는 프로세스가 결정되며, 그에 따라 데이터가 적절한 서비스로 전달됩니다.
포트 포워딩: 라우터 및 방화벽 설정에서 포트 포워딩을 사용하여 외부에서 내부 서버의 특정 포트로 연결하도록 구성할 수 있습니다. 이를 통해 인터넷에서 내부 서버로 트래픽을 라우팅할 수 있습니다.
포트 번호는 특정 서비스 또는 프로토콜에 할당되어 있을 수 있으며, 이러한 포트 번호는 IANA (Internet Assigned Numbers Authority)와 같은 조직에 의해 관리됩니다. 예를 들어, 80번 포트는 일반적으로 HTTP 웹 서비스에 할당되어 있으며, 443번 포트는 안전한 HTTPS 웹 서비스에 할당되어 있습니다.
포트 번호는 네트워크 통신에서 중요한 역할을 하며, 데이터 패킷의 목적지를 식별하고 올바른 서비스로 라우팅하는 데 사용됩니다.
## VPN
Virtual Private Network의 약자
공용 네트워크(예: 인터넷)를 통해 안전하고 비공개로 통신할 수 있도록 해주는 기술입니다.
VPN을 사용하면 데이터를 암호화하고 다른 위치에 있는 네트워크 또는 서버에 안전하게 연결할 수 있습니다.
# VPN의 주요 목적은 다음과 같습니다:
보안 강화: VPN은 데이터를 암호화하여 중요 정보의 유출을 방지합니다.
따라서 공격자나 감시자로부터 데이터를 보호하고, 공공 와이파이 네트워크와 같은 보안 위험을 완화합니다.
지리적 제한 우회: VPN을 사용하면 지리적으로 제한된 콘텐츠에 액세스할 수 있습니다.
특정 지역에서 차단된 웹 사이트나 서비스에 접속하려면 VPN을 사용하여 원격 서버를 통해 해당 콘텐츠에 액세스할 수 있습니다.
사설 네트워크 연결: 원격 위치나 분산된 지점에 있는 컴퓨터나 네트워크 간에 안전한 연결을 설정할 수 있습니다.
이를 통해 원격으로 업무를 수행하거나 분산된 팀 간에 협업할 수 있습니다.
익명성 보장: VPN을 사용하면 인터넷 트래픽이 VPN 서버를 통과하므로 웹 사이트나 서비스는 사용자의 실제 IP 주소를 알 수 없습니다. 이는 온라인에서 익명성을 유지하려는 사용자에게 중요한 기능입니다.
공용 와이파이에서의 보안 강화: 공용 와이파이 네트워크에서 인터넷을 사용할 때 VPN을 사용하면 데이터가 네트워크 내부에서 보호되며, 해커의 스니핑 공격으로부터 보호됩니다.
일반적으로 VPN 서비스 제공 업체를 통해 VPN을 설정하고 사용합니다.
사용자는 VPN 앱 또는 클라이언트를 설치하고, 원하는 서버를 선택하여 연결을 설정할 수 있습니다.
VPN 서비스는 다양한 보안 프로토콜을 사용하여 데이터를 암호화하고, 사용자에게 안전한 연결을 제공합니다.
VPN은 개인 사용자부터 기업 환경까지 다양한 분야에서 사용되며, 인터넷 사용의 보안과 개인 정보 보호를 강화하는 데 도움을 줍니다.
## 방화벽 ★★★
네트워크와 컴퓨터 시스템을 보호하기 위한 중요한 보안 장치로, 인터넷을 통해 들어오거나 나가는 데이터 트래픽을 모니터링, 필터링 및 제어합니다.
방화벽은 불법한 액세스, 악성 코드, 해킹 시도 및 다른 보안 위협으로부터 시스템과 네트워크를 보호하는 데 사용됩니다.
# 주요 기능:
패킷 필터링: 방화벽은 패킷(네트워크 데이터의 작은 조각)을 검사하여 특정 규칙 및 정책에 따라 허용 또는 차단합니다.
이러한 규칙은 IP 주소, 포트 번호, 프로토콜 유형 등을 기반으로 할 수 있습니다.
상태 추적 (Stateful Inspection): 일부 방화벽은 트래픽의 상태를 추적하여 연결이 초기화되고 종료되는 동안 패킷을 관리합니다. 이로써 무단 액세스 및 해킹 시도를 탐지하고 차단할 수 있습니다.
애플리케이션 레이어 필터링: 일부 고급 방화벽은 패킷 내용을 검사하여 애플리케이션 레이어에서의 보안 위협을 탐지하고 차단합니다. 이것은 악성 코드, 스팸, 악의적인 파일 다운로드 등을 방지하는 데 도움이 됩니다.
가상 사설 네트워크 (VPN): 일부 방화벽은 가상 사설 네트워크 (VPN) 서비스를 제공하여 안전한 원격 액세스 및 데이터 전송을 지원합니다.
보안 로깅 및 알림: 방화벽은 시스템 로그를 생성하여 네트워크 트래픽 및 보안 이벤트를 기록하며, 보안 위협이 탐지될 경우 경고 및 알림을 생성합니다.
# 종류:
네트워크 방화벽 (Network Firewall): 네트워크 레벨에서 동작하며 패킷 기반 필터링을 수행합니다. 주로 라우터나 스위치에 내장되거나 독립적인 장치로 사용됩니다.
호스트 방화벽 (Host Firewall): 개별 컴퓨터 또는 서버에 설치되어 해당 호스트의 보안을 관리합니다. 주로 운영 체제 수준에서 실행됩니다.
웹 애플리케이션 방화벽 (WAF): 웹 애플리케이션에 대한 공격을 방지하기 위해 웹 애플리케이션 레벨에서 동작하는 방화벽입니다. 웹 애플리케이션의 보안을 강화하고 SQL 삽입, 크로스 사이트 스크립팅(XSS) 등의 공격을 방어합니다.
클라우드 방화벽: 클라우드 환경에서 호스팅되는 애플리케이션 및 데이터를 보호하기 위한 방화벽입니다. 클라우드 서비스 제공 업체가 제공하거나 서드파티로 구매할 수 있습니다.
방화벽은 네트워크 및 컴퓨터 보안에서 중요한 역할을 하며, 네트워크 트래픽을 검사하여 안전하고 안정적인 환경을 제공합니다. 적절한 방화벽 설정 및 정책은 중요한 보안 사항 중 하나이며, 기업과 개인 사용자 모두에게 권장됩니다.
## OSI (Open Systems Interconnection) 모델
네트워크 프로토콜과 통신 시스템을 이해하고 설명하기 위한 일반적인 프레임워크로 사용됩니다.
이 모델은 7개의 레이어로 구성되어 있으며, 각 레이어는 특정한 역할과 책임을 갖고 있습니다.
OSI 모델은 컴퓨터 네트워크와 통신을 이해하고 설명하는 데 유용한 도구입니다.
# OSI 모델의 각 레이어와 해당 레이어의 주요 기능에 대한 개요입니다:
물리 레이어 (Physical Layer): OSI 모델의 가장 하단에 위치하며, 물리적인 연결과 전송 매체에 관련된 기능을 담당합니다. 비트 스트림을 전송하고 전압, 케이블, 허브 등을 통해 데이터를 전송합니다.
데이터 링크 레이어 (Data Link Layer): 이 레이어는 물리 레이어에서 받은 비트를 프레임으로 그룹화하고, 에러 검출 및 수정을 수행하여 물리적인 오류를 처리합니다. 또한 같은 네트워크 세그먼트 내에서의 데이터 전송을 관리합니다.
네트워크 레이어 (Network Layer): 네트워크 레이어는 데이터 패킷을 목적지까지 전달하는 데 사용되는 경로 선택과 라우팅을 담당합니다. 라우터와 같은 장비가 이 레이어에서 동작합니다.
전송 레이어 (Transport Layer): 이 레이어는 두 호스트 간의 데이터 전송을 관리하고, 데이터의 에러 검출과 복구, 흐름 제어, 데이터 분할 및 재조립을 처리합니다. 대표적인 프로토콜로는 TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)가 있습니다.
세션 레이어 (Session Layer): 세션 레이어는 통신 세션의 설정, 유지 및 종료를 관리합니다. 또한 데이터 교환 중에 오류 복구를 담당하고 동기화를 제공합니다.
표현 레이어 (Presentation Layer): 표현 레이어는 데이터의 형식 변환, 암호화 및 압축을 수행하여 데이터 표현을 관리합니다. 다양한 데이터 형식 간의 상호 운용성을 제공합니다.
응용 프로세스 레이어 (Application Layer): OSI 모델의 최상위 레이어로, 사용자와 응용 프로그램 간의 인터페이스를 제공합니다. 응용 프로그램은 이 레이어를 통해 네트워크 서비스에 액세스하고 통신합니다.
OSI 모델은 통신 시스템 및 프로토콜을 이해하고 설계하기 위한 기본 프레임워크로 사용됩니다. 이를 통해 다른 네트워크 프로토콜 및 통신 기술에 대한 이해를 쉽게 할 수 있으며, 문제 해결과 네트워크 설계에 도움이 됩니다. 하지만 현실적으로는 OSI 모델을 완벽하게 따르는 프로토콜 스택은 드물며, 실제로 사용되는 프로토콜 스택은 다양한 네트워크 기술에 맞게 조정됩니다.
## TCP/IP (Transmission Control Protocol/Internet Protocol)
컴퓨터 네트워크 및 인터넷 통신을 위한 기본 프로토콜 스택입니다.
이 프로토콜 스택은 데이터 통신을 관리하고 컴퓨터 간의 통신을 지원하기 위한 일련의 프로토콜과 규약으로 구성됩니다.
TCP/IP는 인터넷의 핵심 프로토콜로 널리 사용되며, 다양한 네트워크 장비와 운영 체제에서 지원됩니다.
# TCP/IP 프로토콜 스택은 다음과 같은 주요 프로토콜로 구성됩니다:
IP (Internet Protocol): IP는 인터넷에서 데이터 패킷을 라우팅하고 전송하는 데 사용되는 프로토콜입니다. IPv4와 IPv6가 가장 널리 사용되는 IP 버전입니다.
TCP (Transmission Control Protocol): TCP는 신뢰성 있는 데이터 전송을 제공하는 프로토콜로, 데이터 패킷의 순서, 에러 복구 및 흐름 제어를 관리합니다. 웹 브라우징과 이메일과 같은 응용 프로그램에서 주로 사용됩니다.
UDP (User Datagram Protocol): UDP는 데이터 전송을 특별히 빠르게 하기 위한 프로토콜로, 데이터 패킷의 신뢰성 보다는 속도를 중시합니다. 미디어 스트리밍 및 온라인 게임과 같은 응용 프로그램에서 주로 사용됩니다.
ICMP (Internet Control Message Protocol): ICMP는 네트워크 문제를 진단하고 오류 메시지를 전송하기 위한 프로토콜로, 주로 네트워크 관리 및 진단 목적으로 사용됩니다.
HTTP (Hypertext Transfer Protocol): HTTP는 웹 브라우징을 위한 프로토콜로, 웹 페이지 및 리소스를 요청하고 전송하는 데 사용됩니다.
FTP (File Transfer Protocol): FTP는 파일 전송을 위한 프로토콜로, 파일을 업로드 및 다운로드하고 관리하는 데 사용됩니다.
SMTP (Simple Mail Transfer Protocol): SMTP는 이메일을 보내는 데 사용되는 프로토콜로, 이메일 서버 간에 이메일을 전송하는 데 사용됩니다.
TCP/IP 프로토콜 스택은 인터넷과 네트워크 통신의 핵심이며, 다양한 디바이스 및 운영 체제에서 지원되므로 전 세계의 컴퓨터 및 네트워크 간에 효과적인 통신을 가능하게 합니다.
## 3 hands shake 프로그래밍
"3-way handshake"는 네트워크 통신에서 사용되는 개념으로, TCP/IP 프로토콜 스택에서 연결을 설정하기 위한 과정을 나타냅니다. 이 과정은 TCP (Transmission Control Protocol)를 사용하여 컴퓨터 간의 신뢰성 있는 데이터 통신을 구현하는 데 사용됩니다.
# 3-way handshake는 다음 세 단계로 구성됩니다:
SYN (Synchronize): 통신을 시작하려는 컴퓨터가 상대방에게 연결을 요청합니다.
이를 위해 첫 번째 패킷을 보내며, 이 패킷은 SYN 비트가 설정된 상태로 전송됩니다.
SYN-ACK (Synchronize-Acknowledge): 요청을 받은 상대방 컴퓨터가 요청을 수락하고 통신을 준비합니다.
상대방은 수락 패킷을 보내며, 이 패킷은 SYN과 ACK 비트가 설정된 상태로 전송됩니다.
ACK (Acknowledge): 요청을 한 컴퓨터가 상대방의 수락을 확인하고 연결을 설정합니다.
이를 위해 세 번째 패킷을 보내며, 이 패킷은 ACK 비트가 설정된 상태로 전송됩니다.
이렇게 3-way handshake가 완료되면 두 컴퓨터 간의 연결이 설정되며, 안정적인 데이터 전송이 가능해집니다.
이 과정은 데이터 통신에서 에러와 데이터 손실을 줄이고 신뢰성 있는 통신을 보장하는 데 중요합니다.
네트워크 프로그래밍에서 소켓을 사용하여 구현되며, TCP 연결을 수립하는 데 필요한 프로토콜입니다.
## "Distributed Denial of Service (DDoS) 공격"
악의적인 공격자가 대상 서버 또는 네트워크를 공격하는 방법 중 하나입니다.
DDoS 공격은 여러 컴퓨터 또는 장치, 일반적으로 "봇넷"이라고 불리는 감염된 컴퓨터 네트워크,를 사용하여 대상 시스템에 동시에 다량의 트래픽을 보내는 것으로 특징짓습니다.
이로 인해 대상 서버 또는 네트워크는 과부하 상태가 되어 정상적인 서비스를 제공하지 못하게 됩니다.
# DDoS 공격의 주요 특징과 관련된 중요한 사항은 다음과 같습니다:
다중 출처: DDoS 공격은 여러 출처에서 동시에 공격 트래픽을 생성하므로 감지 및 대응이 어려울 수 있습니다.
자원 고갈: DDoS 공격은 대상 시스템의 네트워크 대역폭, 처리 능력, 메모리 등의 자원을 소모하므로 대상 시스템의 서비스를 마비시킵니다.
서비스 중단: 대상 시스템 또는 네트워크는 DDoS 공격으로 인해 서비스 중단 현상을 겪을 수 있으며, 이는 비즈니스 중단 및 손실을 초래할 수 있습니다.
다양한 유형: DDoS 공격은 다양한 형태로 나타날 수 있으며, 예를 들어 공격 트래픽을 생성하는 방식, 목표와 같은 여러 측면에서 다양한 유형이 있습니다.
DDoS 공격은 주로 온라인 서비스, 웹 사이트, 온라인 게임, 클라우드 인프라 및 기업 네트워크에 영향을 미치며, 중대한 보안 문제로 간주됩니다. 공격을 방지하고 대응하기 위한 방법에는 네트워크 및 웹 애플리케이션 방화벽, 인프라 스케일링, 트래픽 분산, DDoS 방어 서비스 등이 있습니다. 또한 정기적인 모니터링과 신속한 대응이 중요합니다.
## TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)
컴퓨터 네트워크에서 데이터를 주고받을 때 사용되는 두 가지 주요한 전송 프로토콜입니다.
이 두 프로토콜은 각각 다른 특징과 용도를 가지고 있습니다:
# TCP (Transmission Control Protocol):
신뢰성: TCP는 신뢰성 있는 데이터 전송을 보장합니다. 데이터를 전송할 때 패킷의 에러 검출 및 복구를 수행하며, 데이터의 순서를 보존합니다. 이를 통해 데이터 손실 및 오류를 최소화하고 신뢰성 있는 통신을 제공합니다.
연결 지향적: TCP는 연결을 설정하고 유지한 다음 데이터를 주고받습니다. 이러한 연결은 3-way handshake 프로세스를 통해 설정되며, 연결 종료 시에도 정리 과정이 수행됩니다.
흐름 제어: TCP는 데이터의 흐름을 제어하고 수신자의 버퍼 오버플로우를 방지하기 위한 메커니즘을 제공합니다.
느린 시작 및 혼잡 제어: TCP는 네트워크 상태에 따라 데이터 전송 속도를 조절하며 혼잡을 관리하는 기능을 제공합니다.
사용 사례: 웹 브라우징, 이메일, 파일 전송 등과 같이 데이터 신뢰성이 중요한 응용 프로그램에서 주로 사용됩니다.
UDP (User Datagram Protocol):
비신뢰성: UDP는 데이터 전송 시에 에러 검출 및 복구를 수행하지 않으며, 데이터의 순서를 보장하지 않습니다. 이로 인해 데이터 손실이나 순서 변경이 발생할 수 있습니다.
연결리스: UDP는 연결 설정 과정이 없고 연결을 유지하지 않습니다. 따라서 데이터 전송에 대한 추가 오버헤드가 없습니다.
흐름 제어 없음: UDP는 흐름 제어를 수행하지 않으므로 데이터 전송 속도를 제어하지 않습니다.
사용 사례: 음성 및 비디오 스트리밍, 온라인 게임, DNS (Domain Name System) 등과 같이 빠른 데이터 전송이 중요한 응용 프로그램에서 주로 사용됩니다.
TCP와 UDP는 각각 다른 요구 사항을 충족하는 다른 특징을 가지고 있으며, 어떤 프로토콜을 선택할지는 사용하려는 응용 프로그램 및 상황에 따라 다릅니다. 데이터 신뢰성이 필요한 경우 TCP를 선택하고, 빠른 데이터 전송이 필요하거나 손실이 허용되는 경우 UDP를 선택할 수 있습니다.
## ping
네트워크에서 호스트 간에 상호 작동을 테스트하고 응답 시간을 측정하는 명령어 또는 프로토콜입니다.
# 이론적으로 "ping"은 다음과 같은 과정을 따릅니다:
요청 패킷 생성: "ping" 명령이 실행되면 호스트에서 목표 호스트(또는 IP 주소로 ICMP(Internet Control Message Protocol) 패킷을 생성합니다. 이 패킷은 목표 호스트에 전송되어 응답을 요청하는 역할을 합니다.
패킷 전송: 생성된 ICMP 패킷은 송신 호스트에서 목표 호스트로 전송됩니다. 이때, IP 주소와 MAC 주소를 기반으로 목표 호스트를 찾아갑니다.
목표 호스트에서의 처리: ICMP 패킷이 목표 호스트에 도착하면 목표 호스트는 패킷을 처리하고 해당 호스트가 살아있는지 여부를 확인합니다. 만약 목표 호스트가 살아있다면, ICMP 응답 패킷을 생성하여 송신 호스트로 다시 보냅니다.
응답 패킷 수신: 송신 호스트에서는 ICMP 응답 패킷을 수신하고 응답 시간을 측정합니다. 이 시간은 패킷이 송신 호스트에서 목표 호스트로 이동하고 다시 돌아오는 데 걸리는 시간을 나타냅니다.
결과 표시: "ping" 명령은 응답 시간과 패킷 손실률을 화면에 표시하여 사용자에게 네트워크 상태에 대한 정보를 제공합니다.
이론적으로 "ping"은 호스트 간의 기본적인 연결 상태를 테스트하고 응답 시간을 측정하기 위한 간단한 도구로 사용됩니다. 이를 통해 네트워크 문제를 신속하게 감지하고 해결할 수 있으며, 네트워크 관리와 문제 해결에 유용합니다.
'JAVA > DAY 22 _ 23.09.15' 카테고리의 다른 글
Thread활용_ChattingRoom_serverMain (0) | 2023.09.15 |
---|---|
Thread활용_ChattingRoom_clientMain (0) | 2023.09.15 |