Now Loading ...
-
🌐[Network] STOMP(Simple/Streaming Text Messaging Protocol)란 무엇일까요?
🌐[Network] STOMP(Simple/Streaming Text Messaging Protocol)란 무엇일까요?
STOMP(Simple/Streaming Text Messaging Protocol)는 텍스트 기반의 메시징 프로토콜로, 클라이언트와 메시징 브로커(Message Broker) 간의 통신을 지원하기 위해 설계되었습니다.
일반적으로 WebSocket과 함께 사용되며, Pub/Sub 패턴의 메시징을 더 쉽게 구현할 수 있게 도와줍니다.
1️⃣ STOMP의 주요 특징.
1️⃣ 간단한 메시징 프로토콜.
STOMP는 간단한 메시지 프레임 구조를 가지고 있어 이해하고 구현하기 쉽습니다.
메시지 프레임은 명확한 헤더와 본문(Body)으로 구성됩니다.
2️⃣ WebSocket 상위 레이어 프로토콜.
STOMP는 WebSocket을 기반으로 동작하지만, WebSocket의 단순한 통신 방식에 Pub/Sub(발행/구독) 기능을 추가하여 메시징 시스템을 구현합니다.
WebSocket은 단순히 양방향 연결만 지원하지만, STOMP를 통해 더 복잡한 메시지 전달 패턴을 구현할 수 있습니다.
3️⃣ 서버와 클라이언트 간의 메시징.
STOMP는 서버-클라이언트 또는 클라이언트-클라이언트 간의 메시지를 전송할 수 있도록 설계되었습니다.
주로 메시지 브로커(예: ActiveMQ, RabbitMQ)와 함께 사용됩니다.
4️⃣ Pub/Sub 패턴 지원.
클라이언트는 특정 주제(Topic) 또는 큐(Queue)를 구독(Subscribe)하여, 해당 주제에 발행된 메시지를 받을 수 있습니다.
2️⃣ STOMP 프레임 구조.
STOMP 메시지 프레임은 다음과 같은 구조로 되어 있습니다.
요소 구성.
1️⃣ 명령(command)
프레임의 목적을 정의합니다.(예: CONNECT, SEND, SUBSCRIBE, UNSUBSCRIBE)
2️⃣ 헤더(headers)
프레임과 관련된 추가 정보를 포함합니다.(예: 목적지, 콘텐츠 타입 등)
3️⃣ 본문(body)
메시지 내용(선택 사항)
예제
아래는 메시지 전송(SEND) 프레임 예제입니다.
```hash
SEND
destination:/queue/test
content-type:text/plain
Hello, STOMP!
- **명령 :** SEND
- **헤더 :** destination:/queue/test, content-type:text/plain
- **본문 :** Hello, STOMP!
## 3️⃣ Spring에서 STOMP 사용 예제.
- Spring Boot는 **STOMP**와 **WebSocket**을 결합하여 메시징을 구현할 수 있도록 기분 지원을 제공합니다.
### 1️⃣ STOMP 의존성 추가.
- build.gradle 또는 pom.xml에 다음 의존성을 추가합니다.
```groovy
implementation 'org.springframework.boot:spring-boot-starter-websocket'
2️⃣ WebSocket 설정.
STOMP 엔드포인트와 메시지 브로커를 설정하는 @Configuration 클래스를 작성합니다.
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic"); // 클라이언트 구독 주소
config.setApplicationDestinationPrefixes("/app"); // 클라이언트 발행 주소
}
@Override
public void registerStompEndpoints(org.springframework.web.socket.config.annotation.StompEndpointRegistry registry) {
registry.addEndpoint("/ws") // WebSocket 엔드포인트
.setAllowedOrigins("*") // CORS 허용
.withSockJS(); // SockJS 지원
} } ```
3️⃣ 컨트롤러
STOMP 메시지를 처리할 컨트롤러를 작성합니다.
```java
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
@Controller
public class ChatController {
@MessageMapping("/sendMessage") // 클라이언트가 메시지 발행할 경로
@SendTo("/topic/messages") // 구독된 클라이언트에게 보낼 경로
public String sendMessage(String message) {
return "서버 응답: " + message;
} } ```
4️⃣ 클라리언트 JavaScript
JavaScript를 사용하여 STOMP 메시지를 전송하고 수신합니다.
```javascript
const socket = new SockJS(‘/ws’); // 서버 WebSocket 엔드포인트
const stompClient = Stomp.over(socket);
stompClient.connect({}, () => {
console.log(‘WebSocket 연결됨’);
// 메시지 구독
stompClient.subscribe('/topic/messages', (message) => {
console.log('수신한 메시지:', message.body);
});
// 메시지 발행
stompClient.send('/app/sendMessage', {}, 'Hello from client!'); }); ```
4️⃣ 결론.
STOMP는 WebSocket을 보완하여 효율적으로 메시지를 발행하고 구독하는 데 도움을 주는 고수준 프로토콜입니다.
Spring Boot에서 기본적으로 지원하므로, 쉽게 실시간 기능을 구현할 수 있습니다.
-
🌐[Network] 웹소켓(WebSocket) 프로토콜이란 무엇일까요?
🌐[Network] 웹소켓(WebSocket) 프로토콜이란 무엇일까요?
웹소켓(WebSocket)은 클라이언트(예: 브라우저)와 서버 간의 양방향(full-duplex) 통신을 가능하게 하는 프로토콜입니다.
웹소켓(WebSocket)은 HTTP(Hypertext Transfer Protocol)와는 다른 프로토콜로, 표준화된 방식으로 실시간 데이터 교환을 지원합니다.
웹소켓(WebSocket)은 초기 연결만 HTTP로 시작하고, 이후에는 하나의 연결을 유지하며 양방향 데이터 전송을 지원합니다.
이를 통해 웹 애플리케이션에서 실시간 상호 작용을 쉽게 구현할 수 있습니다.
1️⃣ 웹소켓 프로토콜의 특징.
1️⃣ 양방향 통싱(Full-Duplex)
클라이언트와 서버가 동시에 데이터를 주고받을 수 있습니다.
HTTP처럼 클라이언트의 요청-응답 구조가 아니라, 연결이 유지되는 동안 언제든지 데이터 전송이 가능합니다.
2️⃣ 지속적인 연결(Persistent Connection)
한번 연결이 설정되면 클라이언트와 서버 간에 지속적인 연결이 유지됩니다.
재연결의 오버헤드가 없어, 효율적인 데이터 교환이 가능합니다.
3️⃣ 낮은 오버헤드
HTTP보다 훨씬 가벼운 헤더를 사용하므로 데이터 전송량이 적고, 속도가 빠릅니다.
특히, 실시간 애플리케이션에서 효율적입니다.
4️⃣ 표준 프로토콜
RFC 6455에서 표준으로 정의됩니다.
대부분의 최신 브라우저와 서버 프레임워크에서 지원합니다.
2️⃣ 웹소켓의 작동 방식.
1️⃣ 핸드셰이크(Handshake)
클라이언트와 서버 간의 초기 연결은 HTTP 요청을 사용하여 이루어집니다.
클라이언트가 서버에 업그레이드 요청을 보냅니다:
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
서버는 이를 승인하여 응답합니다:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
2️⃣ 연결이 업그레이드됨.
HTTP 연결이 WebSocket 연결로 업그레이드되며, 이후에는 지속적인 양방향 통신이 가능합니다.
3️⃣ 데이터 전송.
연결이 설정되면, 클라이언트와 서버는 메시지를 자유롭게 송수신할 수 있습니다.
4️⃣ 연결 종료.
필요에 따라 클라이언트나 서버가 연결을 종료(Close)할 수 있습니다.
3️⃣ 웹소켓의 장점.
1️⃣ 실시간 통신.
HTTP의 요청-응답 모델과 달리, 실시간 상호작용을 지원합니다.
실시간 채팅, 게임, 주식 가격 업데이트 등에서 효율적입니다.
2️⃣ 효율성.
HTTP에 비해 오버헤드가 적고, 대역폭 소비가 낮습니다.
지속적인 연결로 인해 다수의 메시지를 빠르게 교환 가능.
3️⃣ 확장성.
높은 트래픽에서도 효율적으로 작동하므로, 대규모 실시간 애플리케이션에 적합합니다.
4️⃣ 웹소켓과 HTTP의 차이.
특징
HTTP
WebSocket
통신 방식
요청-응답(Request-Response)
양방향(Full-Duplex)
연결 유지
요청마다 새 연결 생성
연결 유지(Persistent)
오버헤드
비교적 높은 헤더 오버헤드
낮은 헤더 오버헤드
사용 사례
일반 웹 페이지, REST API
실시간 채팅, 게임, 스트리밍
5️⃣ 웹소켓의 사용 사례.
1️⃣ 실시간 채팅 애플리케이션.
예: Slack, Discord
2️⃣ 라이브 업데이트.
주식 사격, 스포츠 경기 점수.
3️⃣ 실시간 게임.
멀티플레이어 게임에서 빠른 데이터 교환.
4️⃣ IoT 애플리케이션.
장치 상태 모니터링 및 제어.
5️⃣ 협업 도구.
문서 편집, 화상 회의 등.
6️⃣ 웹소켓 사용 예제.
1️⃣ JavaScript 클라이언트 코드(브라우저 클라이언트)
const socket = new WebSocket('ws://localhost:8080/ws/chat');
// 연결 열림
socket.onopen = () => {
console.log('WebSocket 연결 열림');
socket.send('Hello from client!');
};
// 메시지 수신
socket.onmessage = (event) => {
console.log('서버로부터 받은 메시지:', event.data);
};
// 연결 닫힘
socket.onclose = () => {
console.log('WebSocket 연결 닫힘');
};
// 에러 발생
socket.onerror = (error) => {
console.error('WebSocket 에러:', error);
};
2️⃣ Spring Boot WebSocket 서버 코드.
1️⃣ 의존성 추가.
Spring Boot 프로젝트의 build.gradle 파일에 WebSocket 관련 의존성을 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-websocket'
2️⃣ WebSocket Config 설정.
WebSocket 엔드포인트와 핸들러를 설정하는 @Configuration 클래스를 작성합니다.
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// WebSocket 핸들러 등록
registry.addHandler(new MyWebSocketHandler(), "/ws/chat")
.setAllowedOrigins("*"); // CORS 설정
}
}
3️⃣ WebSocket 핸들러 작성.
WebSocket 연결을 처리하는 핸들러를 작성합니다.
클라이언트에서 받은 메시지를 로그에 출력하고 다시 클라이언트로 전달합니다.
```java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(MyWebSocketHandler.class);
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
logger.info("클라이언트 연결됨: {}", session.getId());
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
logger.info("받은 메시지: {}", message.getPayload());
// 클라이언트로 메시지 다시 전송(Echo)
session.sendMessage(new TextMessage("서버 응답: " + message.getPayload()));
}
@Override
public void afterConnectionClosed(WebSocketSession session, org.springframework.web.socket.CloseStatus staus) throws Exception {
logger.info("클라이언트 연결 종료: {}", session.getId());
} } ```
4️⃣ Spring Boot Application 실행.
Spring Boot 애플리케이션을 실행하면 /ws/chat 엔드포인트로 WebSocket 연결을 받을 수 있습니다.
5️⃣ 동작 확인.
Spring Boot 애플리케이션을 실행합니다.
브라우저에서 WebSocket 클라이언트를 실행합니다.
서버에서 클라이언트로 메시지를 전송하고, 클라이언트가 받은 메시지를 확인합니다.
6️⃣ 결과.
클라이언트 콘솔.
WebSocket 연결 열림
서버로부터 받은 메시지: 서버 응답: Hello from client!
서버 로그
클라이언트 연결됨: f9351a2c-7f2e-4bd7-b930-bddf37e78e0d
받은 메시지: Hello from client!
클라이언트 연결 종료: f9351a2c-7f2e-4bd7-b930-bddf37e78e0d
-
🌐[Network] WSS(WebSocket Secure) 프로토콜이란 무엇일까요?
🌐[Network] WSS(WebSocket Secure) 프로토콜이란 무엇일까요?
WSS(WebSocket Secure)는 WebSocket 프로토콜의 보안버전입니다.
WebSocket은 클라이언트와 서버 간의 양방향 통신을 위한 프로토콜로, ws://는 보안이 적용되지 않은 일반 WebSocket 연결을 의미하며, wss://는 TLS(Transport Layer Security) 암호화를 사용하는 보안 WebSocket 연결을 의미합니다.
1️⃣ WSS(WebSocket Secure)의 특징.
1️⃣ TLS(Transport Layer Security) 암호화 지원.
WSS(WebSocket Secure)는 HTTPS(Hypertext Transfer Protocol Secure)과 유사하게 TLS/SSL 인증서를 사용하여 데이터를 암호화합니다.
이를 통해 클라이언트와 서버 간의 통신을 보호하고, 데이터가 도청, 변조되지 않도록 합니다.
2️⃣ 보안 강화.
WSS는 일반 WebSocket(ws://)보다 보안 수준이 높으며, 네트워크 트래픽을 감시하거나 공격자가 데이터를 가로채는 것을 방지합니다.
3️⃣ HTTPS 환경과 함께 사용.
WSS는 HTTPS 환경에서 사용되며, HTTPS를 사용하는 웹사이트에서 반드시 WSS를 사용해야 합니다.
브라우저는 HTTPS 사이트에서 ws:// 연결을 허용하지 않습니다.
2️⃣ WSS 사용 사례.
실시간 채팅 애플리케이션.
예: Slack, Discord 같은 서비스에서 사용자 간 실시간 메시지 전송.
라이브 데이터 스트리밍.
예: 주식 가격 업데이트, 스포츠 경기 스코어.
게임 서버.
예: 실시간 멀티플레이어 게임에서의 빠른 데이터 교환.
IoT 기기 관리.
IoT 장치와 서버 간의 안전한 데이터 전송.
3️⃣ WSS와 HTTPS의 차이.
특징
HTTPS
WSS
사용 프로토콜
HTTP over TLS
WebSocket over TLS
포트 번호
443
443(대부분의 경우)
통신 방식
요청-응답(Request-Response)
양방향(Full-Duplex, Real-Time)
사용 목적
일반 웹 브라우징 및 API 통신
실시간 데이터 교환
4️⃣ WSS를 설정하려면?
1️⃣ 서버에서 SSL/TLS 인증서 설치.
인증서는 Let’s Encrypt, DigiCert 등에서 발급받아야 합니다.
예: Nginx나 Apache에 TLS를 설정.
2️⃣ WebSocket 서버 구현.
Node.js, Java, Python 등에서 WebSocket 서버를 구현하고, TLS 인증서를 적용합니다.
3️⃣ 클라이언트에서 WSS 연결 사용.
클라이언트 코드는 wss://를 사용하여 WebSocket 서버와 연결해야 합니다.
예(JavaScript)
const socket = new WebSocket('wss://example.com/socket');
socket.onopen = () => console.log('Connected');
socket.onmessage = (event) => console.log(event.data);
5️⃣ 요약.
WSS는 WebSocket의 보안 버전으로, 클라이언트와 서버 간 데이터를 암호화하여 안전하게 전달합니다.
ws://는 HTTP와 같이 보안이 없는 환경에서 사용되고, wss://는 HTTPS처럼 TLS를 적용한 환경에서 사용됩니다.
HTTPS 웹사이트는 반드시 wss://를 사용해야 합니다.
-
-
🌐[Network] 패킷(Packet)이란 무엇일까요?
🌐[Network] 패킷(Packet)이란 무엇일까요?
패킷(Packet)은 네트워크 상에서 데이터를 전송하는 기본 단위입니다.
컴퓨터 네트워크에서 큰 데이터를 전송 할 때, 데이터를 작은 조각으로 나누어 각각의 조각을 패킷(Packet)이라고 부릅니다.
이러한 패킷(Packet)은 네트워크를 통해 목적지에 도달하며, 도착한 후에 다시 원래의 데이터로 재조립됩니다.
1️⃣ 패킷의 필요성.
데이터를 전송할 때 단일 큰 데이터 덩어리로 보내는 대신, 데이터를 여러 개의 작은 패킷으로 나누는 이유는 네트워크의 효율성과 안정성을 높이기 위해서 입니다.
1️⃣ 효율성.
데이터를 작은 단위로 나누어 전송하면 네트워크 리소스를 더 효율적으로 사용할 수 있습니다.
대용량 데이터가 네트워크에서 하나의 덩어리로 전송된다면, 다른 데이터가 전송되는 동안 대기해야 할 수 있습니다.
패킷(Packet)은 나뉘어 전송되므로 여러 데이터가 동시에 네트워크를 통해 흐를 수 있습니다.
2️⃣ 안정성.
작은 패킷(Packet) 단위로 나뉘어 전송하면 데이터 손실이 발생했을 때 일부 패킷(Packet)만 재전송하면 되므로, 전체 데이터를 다시 전송하지 않아도 됩니다.
네트워크 연결이 불안정하거나 문제가 발생했을 때도, 손상된 패킷(Packet)만 다시 보내 효율적으로 문제를 해결할 수 있습니다.
3️⃣ 경로 다양성.
네트워크를 통해 전송되는 패킷(Packet)은 서로 다른 경로를 통해 목적지에 도달할 수 있습니다.
즉, 같은 데이터를 여러 경로로 나눠 전송하므로 특정 경로에 문제가 생겨도 다른 경로를 통해 전달될 수 있습니다.
2️⃣ 패킷의 구조.
패킷(Packet)은 크게 헤더(Header)와 데이터(Payload, 페이로드)로 구성됩니다.
1️⃣ 헤더(Header)
패킷(Packet)의 헤더(Header)는 제어 정보를 담고 있으며, 네트워크에서 패킷(Packet)이 어떻게 전달되고 처리될지 결정하는 데 중요한 역할을 합니다.
헤더(Header)에는 다음과 같은 정보가 포함됩니다.
출발지 IP(Internet Protocol) 주소 : 패킷(Packet)을 보낸 컴퓨터의 IP(Internet Protocol) 주소.
목적지 IP(Internet Protocol) 주소 : 패킷(Packet)이 도착해야 할 컴퓨터 IP(Internet Protocol) 주소.
프로토콜(Protocol) : 패킷(Packet)이 어떤 프로토콜(예: TCP(Transmission Control Protocol), UDP(User Datagram Protocol))을 사용하는지 나타냅니다.
패킷 번호 : 패킷이 전체 데이터에서 몇 번째 패킷인지를 나타냅니다.
TTL(Time to Live) : 패킷이 네트워크에서 얼마 동안 유효한지를 나타내며, 특정 시간이나 홉(hop)을 넘으면 패킷(Packet)은 폐기됩니다.
📝 홉(hop)
네트워크에서 패킷(Packet)이 한 네트워크 장비(주로 라우터)에서 다른 장비로 이동하는 과정을 의미하는 단위입니다.
네트워크 패킷이 출발지에서 목적지까지 이동하는 동안 라우터와 같은 중간 장비들을 통과할 때마다 하나의 홉이 발생합니다.
2️⃣ 데이터(Payload, 페이로드)
패킷(Packet)의 데이터 부분은 실제로 전송하려는 유효 데이터(문서, 이미지, 동영상 파일의 일부 등)가 담긴 부분입니다.
이 데이터는 네트워크 상에서 목적지에 도달한 후, 여러 패킷이 다시 모여 원래의 데이터로 재구성 됩니다.
3️⃣ 트레일러(Trailer)
일부 패킷(Packet) 구조에서 트레일러(Trailer)가 포함될 수 있습니다.
이는 패킷(Packet)이 올바르게 전송되었는지 확인하기 위한 오류 검사 정보를 포함합니다.
예를 들어, 체크섬(Checksum)이 포함되어 패킷이 손상되었는지 확인할 수 있습니다.
📝 체크섬(Checksum)
데이터의 무결성을 확인하기 위해 사용되는 오류 검출 기법 중 하나입니다.
데이터가 전송되거나 저장될 때, 손상되거나 변경된 부분이 없는지 확인하기 위해 사용됩니다.
체크섬(Checksum)은 전송하려는 데이터에 대해 수학적인 계산을 수행한 후 고유한 값(체크섬 값)을 생성하고, 이 값을 데이터와 함께 전송하거나 저장합니다.
데이터를 수신하는 측에서는 동일한 방식으로 체크섬(Checksum) 값을 계산하여 원래의 체크섬 값과 비교함으로써 데이터가 정상적으로 전송되었는지 확인할 수 있습니다.
3️⃣ 패킷의 동작 원리.
1️⃣ 데이터 나누기.
네트워크를 통해 데이터를 전송할 때, 원래의 데이터를 여러 개의 작은 패킷으로 분할합니다.
각 패킷(Packet)은 헤더(Header)와 데이터(Payload, 페이로드)를 포함하며, 헤더(Header)에는 각 패킷(Packet)이 어디에서 어디로 가는지, 어떤 경로를 따라가야 하는지 등의 정보가 담깁니다.
2️⃣ 네트워크 전송.
패킷(Packet)은 네트워크를 통해 목적지로 전송됩니다.
이때, 패킷(Packet)은 네트워크 장치(라우터(Router, Switch 등)를 거쳐 목적지까지 전달됩니다.
각 장치는 패킷의 헤더(Header)를 읽어 적절한 경로를 찾아 다음 목적지로 패킷(Packet)을 보냅니다.
3️⃣ 데이터 재조립.
목적지에 도착한 패킷(Packet)들은 다시 조립되어 원래의 데이터를 복구합니다.
전송 중에 일부 패킷(Packet)이 손실되거나 손상된 경우, 해당 패킷(Packet)만 다시 요청하여 전송받을 수 있습니다.
4️⃣ 패킷 교환과 전송 방식.
네트워크에서 패킷 전송 방식을 패킷 교환(Packet Switching)이라고 합니다.
이는 데이터를 패킷(Packet) 단위로 나누어 각 패킷(Packet)이 독립적으로 네트워크를 통해 전송되는 방식입니다.
1️⃣ 패킷 교환(Packet Switching)
패킷 교환 방식은 데이터를 작은 패킷(Packet) 단위로 나누어, 각 패킷이 네트워크를 통해 독립적으로 전송됩니다.
각 패킷(Packet)은 목적지에 도달할 때까지 다른 경로를 통해 이동할 수 있으며, 목적지에서 다시 재조립됩니다.
2️⃣ 회선 교환(Circuit Switching)
회선 교환 방식은 전화 통화와 같은 네트워크에서 사용되며, 데이터를 전송하기 위해 고정된 경로를 설정한 후 데이터를 전송합니다.
데이터 전송이 완료될 때까지 해당 경로는 다른 용도로 사용할 수 없습니다.
3️⃣ 데이터그램 기반 전송.
UDP(User Datagram Protocol)는 패킷 교환 방식 중 하나로, 데이터가 순서에 상관없이 패킷 단위로 전송되며, 수신자는 도착한 패킷을 기반으로 데이터를 복원합니다.
UDP(User Datagram Protocol)는 빠른 전송 속도가 필요하지만 데이터 정확도가 덜 중요한 경우(예: 실시간 스트리밍, 게임)에 사용됩니다.
5️⃣ 패킷과 네트워크 프로토콜
패킷은 여러 네트워크 프로토콜에 의해 관리됩니다.
주로 사용하는 프로토콜은 다음과 같습니다.
1️⃣ TCP(Transmission Control Protocl) / IP(Internet Protocol)
TCP(Transmission Control Protocol) / IP(Internet Protocol)는 인터넷 프로토콜로, 패킷(Packet)이 정확하게 도착하는지 확인하고, 손실된 패킷이 있으면 다시 전송하는 방식입니다.
TCP(Transmission Control Protocol)는 데이터의 신뢰성을 보장하고, IP(Internet Protocol)는 패킷(Packet)의 주소 지정과 경로 선택을 담당합니다.
2️⃣ UDP(User Datagram Protocol)
UDP(User Datagram Protocol)는 TCP(Transmission Control Protocol)와 달리 비연결형 프로토콜로, 패킷(Packet)의 신뢰성을 보장하지 않습니다.
속도가 중요한 경우, 예를 들어 동영상 스트리밍, 온라인 게임에서 많이 사용됩니다.
6️⃣ 패킷 손실과 복구
1️⃣ 패킷 손실
네트워크에서 패킷이 소실되거나 지연될 수 있습니다.
이는 네트워크 혼잡, 라우터의 버퍼 부족, 신호 간섭 등 다양한 이유로 발생할 수 있습니다.
📝 라우터의 버퍼(Buffer)
라우터의 버퍼(Buffer)는 라우터가 처리해야 할 데이터 패킷(Packet)들을 임시로 저장하는 메모리 공간을 의미합니다
라우터는 네트워크를 통해 전달되는 수많은 패킷을 처리하고 전달하는 역할을 하며, 네트워크 혼잡이나 트래픽 변동 상황에서 모든 패킷을 즉시 처리할 수 없을 때 이 버퍼에 패킷을 일시적으로 저장합니다.
2️⃣ 패킷 복수
TCP와 같은 신뢰성 있는 프로토콜은 패킷 손실이 발생했을 때 손실된 패킷을 재전송합니다.
그러나 UDP는 패킷 손실이 발생해도 이를 처리하지 않으며, 손실된 데이터를 그대로 넘깁니다.
7️⃣ 패킷의 예시.
👉 웹 브라우징.
사용자가 웹 브라우저에서 특정 웹사이트에 접속할 때, 웹 서버는 HTML, CSS, 이미지 등의 파일을 패킷(Packet)으로 나누어 사용자의 컴퓨터로 전송합니다.
사용자의 컴퓨터는 이 패킷들을 수신하고, 다시 조립하여 웹 페이지를 화면에 표시합니다.
👉 이메일 전송.
이메일이 전송될 때, 이메일 본문과 첨부 파일은 여러 개의 패킷으로 나누어 네트워크를 통해 전송됩니다.
각 패킷은 목적시 이메일 서버에 도착하면 다시 하나의 이메일로 합쳐집니다.
8️⃣ 결론.
패킷(Packet)은 네트워크에서 데이터를 전송하기 위해 작게 나눈 데이터 조각으로, 네트워크 통신의 효율성과 신뢰성을 높이는 데 중요한 역할을 합니다.
패킷 스위칭 방식은 데이터를 독립적인 패킷으로 나누어 네트워크 경로를 유연하게 선택해 전송하며, 이를 통해 인터넷을 포함한 다양한 네트워크에서 데이터 통신의 효율성을 극대화합니다.
패킷은 데이터를 전송할 때 헤더, 데이터, 오류 검출 정보 등을 포함하며, 목적지에서 재조립되어 원래의 데이터로 복구됩니다.
-
🌐[Network] 라우터와 스위치의 차이점.
🌐[Network] 라우터(Router)와 스위치(Switch)의 차이점.
라우터(Router)와 스위치(Switch)는 네트워크 장비로서, 모두 데이터를 전달하고 네트워크 장치들을 연결하는 역할을 하지만, 기능과 동작 방식에서 중요한 차이점이 있습니다.
주로 어느 계층에서 동작하는지, 어떤 정보를 바탕으로 데이터를 전송하는지, 그리고 어떤 네트워크 환경에서 사용되는지에 따라 구분됩니다.
1️⃣ 기본 역할.
👉 라우터(Router)
다른 네트워크 간의 통신을 담당합니다.
라우터(Router)는 IP 주소를 사용하여 패킷(Packet)을 목적지 네트워크로 라우팅(Routing)하며, 주로 LAN(Local Area Network, 근거리 통신망)과 WAN(Wide Area Network, 광역 통신망) 간의 연결을 담당합니다.
즉, 네트워크와 네트워크를 연결하는 장치입니다.
🙋♂️ IP(Internet Protocol)란 무엇일까?
🙋♂️ WAN(Wide Area Network)이란 무엇일까요?
🙋♂️ LAN이 합쳐져서 WAN이 되는걸까?
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
👉 스위치(Switch)
같은 네트워크 내 장치들 간의 통신을 관리합니다.
스위치(Switch)는 MAC(Media Access Control) 주소를 기반으로 데이터를 전송하며, LAN(Local Area Network, 근거리 통신망) 내에서 컴퓨터, 프린터, 서버 등의 장치들이 서로 통신할 수 있도록 패킷(Packet)을 전달하는 역할을 합니다.
즉, 장치와 장치를 연결하는 장치입니다.
🙋♂️MAC(Media Access Control)주소란 무엇일까요?
2️⃣ 작동하는 계층.
👉 라우터(Router)
OSI 7계층 모델의 3계층(네트워크 계층)에서 동작합니다.
라우터(Router)는 IP(Internet Protocol) 주소를 바탕으로 패킷(Packet)의 라우팅(Routing)을 수행하며, 서로 다른 네트워크 간의 데이터 전송 경로를 설정하고 관리합니다.
👉 스위치(Switch)
OSI 7 계층 모델의 2계층(데이터 링크 계층)에서 동작합니다.
스위치(Switch)는 MAC(Media Access Control) 주소를 사용하여 데이터를 목적지 장치로 전달합니다.
스위치(Switch)는 장치 간 데이터 프레임을 전송하고, 네트워크 내에서 패킷(Packet)을 필터링하고 전송할 경로를 설정합니다.
🙋♂️ OSI 7계층 모델
🙋♂️ OSI 7계층 모델 - 계층별 기능
🙋♂️ LAN 내에서 전달되는 데이터 프레임이란 무엇일까?
3️⃣ 주소 기반 동작.
👉 라우터(Router)
IP(Internet Protocol) 주소를 사용하여 네트워크 장치 간에 패킷(Packet)을 전달합니다.
출발지 IP(Internet Protocol) 주소와 목적지 IP(Internet Protocol) 주소를 분석하여, 데이터를 최적의 경로로 라우팅(Routing)합니다.
라우터(Router)는 네트워크 간의 트래픽을 제어하고, 인터넷과 같은 WAN(Wide Area Network) 연결을 관리합니다.
👉 스위치(Switch)
MAC(Media Address Control) 주소를 사용하여 데이터 프레임을 전달합니다.
스위치(Switch)는 MAC(Media Access Control) 주소 테이블을 유지하며, 패킷(Packet)의 목적지 MAC(Media Access Control) 주소에 따라 해당 프레임을 적절한 포트로 전송합니다.
주로 LAN(Local Area Network, 근거리 통신망) 내에서 사용됩니다.
🙋♂️ 네트워크 포트(Network Port)란 무엇일까?
🙋♂️ 네트워크, 포트, 도메인 이름, IP, DNS
4️⃣ 주요 기능.
👉 라우터(Router)
서로 다른 네트워크(LAN(Local Area Network, 근거리 통신망)과 WAN(Wide Area Network, 광역 통신망)) 간의 데이터 패킷(Packet) 전달 및 라우팅(Routing)
인터넷 연결을 공유하고, 다양한 네트워크를 연결하는 역할.
네트워크 트래픽 제어 및 IP(Internet Protocol) 주소 할당(DHCP), 네트워크 주소 변환(NAT)
방화벽(Firewall) 기능을 통해 보안 제어 가능.
👉 스위치(Switch)
LAN(Local Area Network, 근거리 통신망) 내에서 여러 장치 간의 데이터를 빠르게 전송.
MAC(Media Access Control) 주소 기반으로 데이터를 필터링하고 적절한 포트(Port)로 전송.
네트워크(Network) 내 장치 간의 충돌 방지 및 효율적인 데이터 전송.
VLAN(Virtual LAN)을 설정하여 네트워크 세분화 가능.
📝 VLAN(Virtual LAN, 가상 LAN)
하나의 물리적인 네트워크 장비, 예를 들어 스위치 내에서 네트워크를 논리적으로 분리하여 여러 개의 가상 네트워크를 만드는 기술입니다.
VLAN(Virtual LAN, 가상 LAN)은 서로 다른 네트워크 세그먼트에 속하는 장치들을 같은 스위치에 연결되어 있어도 서로 통신할 수 없도록 분리하거나, 같은 VLAN에 속한 장치들끼리만 통신할 수 있도록 합니다.
📝 Virtual Network(가상 네트워크)
물리적인 네트워크 하드웨어와 상관없이, 소프트웨어적으로 구현된 네트워크를 의미합니다.
가상 네트워크는 물리적인 네트워크 인프라를 추상화하여, 네트워크의 연결과 관리가 소프트웨어적으로 처리되도록 구성됩니다.
이러한 가상 네트워크는 서버, 네트워크 장비, 클라이언트 등을 물리적으로 연결하지 않고도 논리적으로 네트워크를 생성하고 관리할 수 있게 해줍니다.
5️⃣ 사용되는 네트워크 범위.
👉 라우터(Router)
다른 네트워크 간의 연결을 관리하므로, 주로 WAN(Wide Area Network, 광역 통신망)이나 인터넷 연결이 필요한 환경에서 사용됩니다.
예를 들어, 가정에서는 라우터(Router)가 인터넷 서비스 제공업체(ISP, Internet Service Provider)와 사용자의 네트워크를 연결하는 역할을 수행합니다.
👉 스위치(Switch)
같은 네트워크 내에서 장치들을 연결합니다.
주로 LAN(Local Area Network, 근거리 통신망)에서 사용되며, 컴퓨터, 프린터, 서버 등 다양한 장치가 동일한 네트워크 내에서 데이터를 주고받는 데 사용됩니다.
6️⃣ 전송 방식.
👉 라우터(Router)
패킷 스위칭(Packet Switching)을 사용합니다.
라우터(Router)는 패킷(Packet)이 어디로 갈지에 대한 최적의 경로를 계산하고, 각 패킷이 다른 경로로 이동할 수 있게 합니다.
👉 스위치(Switch)
프레임 스위칭(Frame Switching)을 사용합니다.
스위치(Switch)는 목적지 MAC(Media Address Control) 주소를 기반으로 데이터 프레임을 전송하고, 네트워크 내 장치 간의 빠른 데이터 전송을 보장합니다.
7️⃣ 브로드캐스트 도메인과 충돌 도메인.
👉 라우터(Router)
브로드캐스트 도메인(Broadcast Domain)을 분리합니다.
라우터(Router)는 네트워크를 나누기 때문에, 라우터(Router)를 경우한 네트워크 간에는 브로드캐스트 트래픽이 전달되지 않습니다.
👉 스위치(Switch)
브로드캐스트 도메인(Broadcast Domain)을 나누지 않고, 충돌 도메인(Collision Domain)만 분리합니다.
스위치(Switch)는 연결된 모든 장치가 동일한 브로드캐스트 도메인에 속해 있으므로, 브로드캐스트 트래픽이 스위치(Switch)를 경유하여 네트워크(Network) 전체에 전달됩니다.
📝 브로드캐스트 도메인(Broadcast Domain)
브로드캐스트 도메인(Broadcast Domain)은 네트워크 내에서 브로드캐스트 트래픽이 전파되는 범위를 의미합니다.
다시 말해, 네트워크 장치가 브로드캐스트(Broadcast) 메시지(모든 네트워크 장치에 전송되는 메시지)를 보냈을 때, 그 메시지를 받을 수 있는 네트워크 상의 모든 장치들이 속한 영역을 브로드캐스트 도메인(Broadcast Domain)이라고 합니다.
📝 충돌 도메인(Collision Domain)
충돌 도메인(Collision Domain)은 네트워크에서 두 개 이상의 장치가 동시에 데이터를 전송할 때 충돌이 발생할 수 있는 네트워크 범위를 의미합니다.
충돌이란 동시에 전송된 데이터 패킷들이 서로 켭치거나 부딪히는 상황을 말하며, 충돌 도메인 내에서는 한 번에 하나의 장치만 데이터를 전송해야 충돌을 피할 수 있습니다.
네트워크 장비가 데이터 충돌을 처리할 수 없는 환경에서는 충돌이 발생하면 데이터는 손실되거나 다시 전송해야 하므로, 네트워크 성능에 영향을 미칠 수 있습니다.
8️⃣ 보안 기능.
👉 라우터(Router)
보안 기능이 더 강력합니다.
라우터는 방화벽(Firewall), NAT(Network Address Translation) 등을 통해 외부 네트워크로부터 보호하고, 네트워크 트래픽을 모니터링하고 제어할 수 있습니다.
👉 스위치(Switch)
기본적으로 보안 기능이 적습니다.
스위치는 내부 네트워크에서 장치 간의 데이터를 전송하므로, 보안 측면에서 라우터만큼 강력한 보호 기능을 제공하지는 않습니다.
그러나 고급 스위치에서는 VLAN(Virtual LAN, 가상 LAN)을 통해 네트워크를 분리하고, 포트 보안을 설정할 수 있습니다.
9️⃣ 주요 차이점 요약.
기능
라우터(Router)
스위치(Switch)
작동 계층
네트워크 계층(3계층, IP 주소 사용)
데이터 링크 계층(2계층, MAC 주소 사용)
사용하는 주소
IP 주소
MAC 주소
기본 역할
서로 다른 네트워크를 연결(LAN과 WAN간)
동일 네트워크 내의 장치들을 연결(LAN 내)
보안 기능
방화벽, NAT, 트래픽 제어 등 고급 보안 기능 제공제한적(고급 스위치 VLAN 및 포트 보안 사용 가능)
제한적(고급 스위치에서 VLAN 및 포트 보안 사용 가능)
브로드캐스트 도메인
분리
분리하지 않음
주요 사용 환경
WAN, 인터넷 연결, 서로 다른 네트워크 간 데이터 전송
LAN 내에서의 데이터 전송 및 네트워크 장치 연결
전송 방식
패킷 스위칭(IP 패킷)
프레임 스위칭(데이터 프레임)
1️⃣0️⃣ 결론.
라우터(Router)는 서로 다른 네트워크 간의 연결을 관리하며, IP 주소를 통해 네트워크 간의 경로를 설정하고 데이터를 전송하는 역할을 합니다.
반면, 스위치(Switch)는 LAN(Local Area Network, 근거리 통신망) 내의 장치들을 연결하고 MAC(Media Access Control) 주소를 통해 데이터 프레임을 전송합니다.
즉, 라우터(Router)는 네트워크 간의 통신을, 스위치(Switch)는 네트워크 내부 장치들 간의 통신을 담당합니다.
-
🌐[Network] TCP(Transmission Control Protocol)란 무엇일까?
🌐[Network] TCP(Transmission Control Protocol)란 무엇일까?
TCP(Transmisson Control Protocol)는 인터넷 프로토콜 스위트(Internet Protol Suite)의 핵심 프로토콜 중 하나로, 신뢰성 있는 데이터 전송을 보장하는 연결 지향형 프로토콜입니다.
TCP는 데이터 패킷을 손실 없이, 순서대로, 정확하게 전달하는 것을 목표로 하며, 인터넷을 포함한 대부분의 네트워크에서 사용됩니다.
TCP/IP라고도 불리며, IP(Internet Protocol)와 함께 동작하기 때문입니다.
1️⃣ TCP의 주요 특징.
1️⃣ 연결 지향형 프로토콜.
TCP는 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정합니다.
이 연결을 통해 두 장치가 데이터를 주고받을 수 있는 가상 회선을 형성합니다.
연결이 설정되면, 데이터가 손실되지 않고 순서대로 전달 되도록 보장합니다.
2️⃣ 신뢰성 있는 데이터 전송.
TCP는 패킷 손실이 발생할 경우 손실된 패킷을 재전송하고, 수신한 패킷이 올바른지 확인하는 오류 검출 및 수정 메커니즘을 가지고 있습니다.
이로 인해 데이터가 손실되거나 손상되지 않고, 정확히 목적지에 도달하도록 합니다.
3️⃣ 데이터 흐름 제어.
TCP는 수신 측이 데이터를 처리할 수 있는 속도에 맞춰 데이터를 전송하는 흐름 제어 기능을 제공합니다.
이를 통해 송신 측에서 데이터를 너무 빨리 보내 수신 측이 처리하지 못하는 상황을 방지합니다.
4️⃣ 혼잡 제어.
네트워크에서 혼잡이 발생할 경우, TCP는 전송 속도를 줄여 네트워크 부하를 완화하는 혼잡 제어 기능을 수행합니다.
이를 통해 네트워크가 과부하 상태에 빠지지 않도록 보호합니다.
5️⃣ 패킷 순서 보장.
네트워크에서는 패킷이 서로 다른 경로를 통해 목적지에 도달할 수 있기 때문에, 도착 순서가 달라질 수 있습니다.
TCP(Transmission Control Protocol)는 이러한 패킷을 올바른 순서로 재조립하여 원래의 데이터로 복원합니다.
6️⃣ 패킷 오류 검출 및 수정.
TCP(Transmission Control Protocol) 패킷에 체크섬(Checksum)이라는 오류 검출 값을 포함하여, 데이터가 손상되지 않았는지 확인합니다.
만약 패킷이 손상되었거나 도착하지 않았다면, 해당 패킷을 다시 전송합니다.
2️⃣ TCP의 동작 원리.
TCP는 데이터를 송신자에서 수신자로 안전하게 전송하기 위해 세 가지 주요 단계를 거칩니다.
1️⃣ 연결 설정(3-Way Handshake)
TCP(Transmisson Control Protocol)는 데이터 전송을 시작하기 전에 송신자와 수신자 간에 3단계 핸드셰이크(3-Way Handshake)를 통해 연결을 설정합니다.
1️⃣ SYN : 송신자는 수신자에게 연결 요청(SYN)을 보냅니다.
2️⃣ SYN-ACK : 수신자는 송신자의 요청을 수락하고, 연결을 승인하는 응답(SYN-ACK)을 보냅니다.
3️⃣ ACK : 송신자는 수신자의 응답을 확인(ACK)하고, 데이터 전송을 시작할 준비가 완료됩니다.
이 과정이 완료되면 송신자와 수신자는 데이터 전송을 위한 가상 연결을 확립하게 됩니다.
2️⃣ 데이터 전송
데이터를 작은 패킷으로 나누어 전송합니다.
각 패킷은 순서 번호가 부여되며, 수신자는 이 번호를 이용해 패킷이 올바른 순서로 도착했는지 확인하고 재조립합니다.
각 패킷이 성공적으로 도착하면 수신자는 송신자에게 ACK(Acknowledgement, 확인 응답)를 보냅니다.
만약 수신자가 패킷을 받지 못하거나 패킷이 손상된 경우, 송신자는 해당 패킷을 재전송합니다.
3️⃣ 연결 해제(4-Way Handshake)
데이터 전송이 완료되면, 송신자와 수신자는 4단계 핸드 셰이크(4-Way Handshake) 과정을 통해 연결을 해제합니다.
1️⃣ FIN : 송신자는 연결을 종료하기 위한 요청(FIN)을 보냅니다.
2️⃣ ACK : 수신자는 이 요청을 수락하고 ACK(Acknowledgement, 확인 응답)을 보냅니다.
3️⃣ FIN : 수신자도 연결을 종료하고 싶을 때 FIN을 보냅니다.
4️⃣ ACK : 송신자는 수신자의 FIN에 대한 ACK(Acknowledgement, 확인 응답)를 보냅니다.
이 과정이 완료되면 송신자와 수신자 간의 연결이 종료됩니다.
3️⃣ TCP와 IP의 관계.
TCP(Transmisson Control Protocol)는 전송 계층(Transport Layer)에서 동작하는 프로토콜이며, IP(Internet Protocol)는 네트워크 계층(Network Layer)에서 동작하는 프로토콜입니다.
이 둘은 TCP/IP라는 이름으로 함께 사용되며, TCP(Transmisson Control Protocol)는 데이터 전송의 신뢰성을 보장하고, IP(Internet Protocol)는 신뢰성이나 순서 보장을 하지 않기 때문에, TCP(Transmisson Control Protocol)가 그 위에서 패킷의 순서 및 무결성을 보장하는 역할을 합니다.
4️⃣ TCP의 장점.
1️⃣ 신뢰성 : TCP(Transmisson Control Protocol)는 데이터 손실, 패킷 오류, 순서 오류 등을 자동으로 처리하여, 데이터를 정확하게 전송합니다.
2️⃣ 순서 보장 : TCP는 패킷이 순서대로 도착하도록 보장하여, 전송된 데이터가 정확하게 재조립될 수 있도록 합니다.
3️⃣ 흐름 제어 : 수신 측의 처리 속도에 맞추어 데이터를 조절함으로써, 데이터 과부하를 방지합니다.
4️⃣ 혼잡 제어 : 네트워크 혼잡 상태를 관리하여, 네트워크 부하가 발생했을 때도 효율적으로 데이터 전송을 유지합니다.
5️⃣ TCP의 단점.
1️⃣ 속도
TCP(Transmisson Control Protocol)는 데이터의 신뢰성을 보장하기 위해 많은 오버헤드가 발생합니다.
확인 응답(ACK, Acknowledgement)을 주고받고, 재전송을 수행해야 하기 때문에 UDP(User Datagram Protocol)에 비해 속도가 느릴 수 있습니다.
2️⃣ 복잡성
TCP(Transmisson Control Protocol)는 상태를 유지하고, 각 패킷의 순서와 무결성을 추절해야 하기 때문에 구현이 복잡합니다.
3️⃣ 실시간 데이터 전송에 부적합
TCP(Transmisson Control Protocol)는 실시간으로 빠르게 전송해야 하는 스트리밍 서비스나 온라인 게임 등에서는 적합하지 않습니다.
실시간 응답보다는 신뢰성이 더 중요할 때 TCP가 사용됩니다.
6️⃣ TCP와 UDP의 비교.
특징
TCP(Transmisson Control Protocol)
UDP(User Datagram Protocol)
연결 방식
연결 지향형(3-Way Handshake)
비연결형
데이터 전송 보장
신뢰성 보장, 패킷 재정송, 순서 보장
신뢰성 없음, 패킷 손실 발생 가능성
속도
상대적으로 느림
상대적으로 빠름
오류 처리
오류 검출 및 재전송
오류 검출 없음
적합한 용도
웹 브라우징, 파일 전송, 이메일 등
실시간 스트리밍, 온라인 게임 등
7️⃣ TCP의 사용 사례.
웹 브라우징(HTTP/HTTPS)
TCP는 HTTP와 HTTPS에서 사용되며, 웹 페이지가 손상 없이 정확하게 로드 될 수 있도록 보장합니다.
파일 전송(FTP, File Transport Protocol)
FTP(File Transport Protocol)는 TCP를 사용하여 파일을 신뢰성 있게 전송합니다.
이메일(SMTP/IMAP/POP3)
이메일 전송 및 수신 시, SMTP, IMAP, POP3는 TCP(Transmission Control Protocol)를 사용하여 데이터가 손실되지 않고 도착하도록 보장합니다.
원격 접속(SSH, Telent)
원격 서버에 안전하게 연결하여 명령을 전송할 때 TCP를 사용하여 신뢰성 있는 통신을 보장합니다.
8️⃣ 결론.
TCP(Transmisson Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜로, 인터넷에서 널리 사용됩니다.
데이터가 정확하게, 손실 없이 전달되는 것을 보장하며, 연결을 설정한 후 데이터를 송수신하고, 전송된 데이터가 손상되지 않았는지 확인하며, 손상된 데이터는 재전송합니다.
웹 브라우징, 파일 전송, 이메일 전송등 신뢰성이 중요한 애플리케이션에서 주로 사용되며, 이로 인해 네트워크의 안정성을 크게 향상시킵니다.
-
🌐[Network] 네트워크 포트(Network Port)란 무엇일까?
🌐[Network] 네트워크 포트(Network Port)란 무엇일까?
네트워크 포트(Network Port)는 컴퓨터나 네트워크 장치가 서로 통신할 때, 특정 프로세스나 서비스에 대한 데이터의 출입을 식별하기 위한 논리적인 통신 경로입니다.
포트는 IP 주소와 함께 사용되어, 어떤 애플리케이션이 데이터를 송수신을 해야 하는지를 컴퓨터나 네트워크 장치가 알 수 있도록 도와줍니다.
네트워크에서, IP 주소는 장치 자체를 식별하는 역할을 하며, 포트 번호는 그 장치 내에서 특정 애플리케이션이나 서비스를 식별하는 역할을 합니다.
포트는 정수 값으로 표현되며, 보통 0부터 65535까지의 숫자를 가집니다.
🙋♂️ 네트워크, 포트, 도메인 이름, IP, DNS
1️⃣ 네트워크 포트의 주요 역할.
1️⃣ 데이터 전달 경로 지정.
IP 주소는 네트워크 상에서 장치를 식별하지만, 같은 장치 내에서 여러 프로그램이 동시에 실행될 수 있기 때문에, 포트 번호는 특정 프로그램이나 서비스로 데이터를 전달하는 경로를 지정하는 역할을 합니다.
👉 예시.
예를 들어, 한 컴퓨터에서 웹 브라우저와 이메일 클라이언트가 동시에 실행 중일 때, IP 주소는 컴퓨터를 식별하고, 포트 번호는 각각의 서비스(웹 브라우저와 이메일 클라이언트)를 식별하여 데이터를 적절한 애플리케이션으로 전달합니다.
2️⃣ 프로토콜 기반 통신.
포트 번호는 네트워크 프로토콜에 따라 각기 다른 애플리케이션 또는 서비스를 구분하는 데 사용됩니다.
예를 들어, HTTP 프로토콜은 기본적으로 포트 80을 사용하고, HTTPS는 포트 443을 사용합니다.
이러한 표준 포트 번호를 통해 데이터가 정확한 프로토콜과 애플리케이션으로 전달됩니다.
2️⃣ 포트 번호의 범위.
포트 번호는 0번에서 65535번까지 사용할 수 있으며, 크게 세 가지 범위로 나눌 수 있습니다.
1️⃣ Well-Known Ports(0-1023)
0번부터 1023번까지의 포트는 널리 알려진 포트로, 주로 표준 네트워크 프로토콜이 사용하는 포트입니다.
대부분의 서비스는 고정된 포트를 사용하며, 주로 시스템 수준에서 예약된 포트입니다.
👉 예시.
포트 80 : HTTP(웹 브라우징)
포트 443 : HTTPS(보안 웹 브라우징)
포트 21 : FTP(파일 전송 프로토콜)
포트 22 : SSH(보안 쉘)
포트 25 : SMTP(이메일 전송)
2️⃣ Registered Ports (1024-49151)
1024번 부터 49151번까지의 포트는 등록된 포트로, 특정 애플리케이션이나 서비스가 사용하도록 등록된 포트입니다.
이는 공식적으로 IANA(Internet Assigned Numbers Authority)에서 관리되며, 특정 기업이나 애플리케이션에 할당될 수 있습니다.
👉 예시.
포트 3306 : MySQL 데이터베이스
포트 1433 : Microsoft SQL Server
포트 8080 : HTTP 대체 포트(웹 개발 또는 프록시 서버)
3️⃣ Dynamic/Private Ports (49152-65535)
49152번부터 65535번까지의 포트는 동적 포트 또는 임시 포트로, 클라이언트 프로그램이 동적으로 할당하여 사용하는 포트입니다.
주로 응용 프로그램이 실행될 때, 시스템이 자동으로 포트 번호를 할당하여 사용합니다.
이러한 포트는 주로 클라이언트 측에서 서버와의 통신을 위해 사용되며, 세션이 종료되면 포트 번호가 해제됩니다.
3️⃣ 포트와 IP 주소의 관계.
IP 주소는 네트워크 상에서 컴퓨터나 네트워크 장치를 식별하는 주소입니다.
포트 번호는 그 장치 내에서 어떤 애플리케이션이 통신할 것인지를 결정합니다.
예를 들어, 웹 브라우저를 사용해 http://example.com에 접속할 때, 브라우저는 포트 80(HTTP 기본 포트)으로 서버에 요청을 보냅니다.
서버는 포트 80을 통해 요청을 받아, 웹 페이지 데이터를 클라이언트에게 반환합니다.
IP 주소와 포트 번호를 결합하여 소켓을 형성합니다.
소켓은 네트워크 통신에서 IP 주소 + 포트 번호로 구성된 단위로, 이를 통해 통신이 이루어 집니다.
4️⃣ 네트워크 포트의 예.
1️⃣ HTTP와 HTTPS
포트 80은 HTTP 트래픽을 처리하는 데 사용되며, 포트 443은 HTTPS(암호화된 웹 트래픽)를 처리하는 데 사용됩니다.
예시: http://example.com (HTTP) 또는 https://example.com:443 (HTTPS)
2️⃣ SSH
포트 22는 SSH(Secure Sheel) 프로토콜을 사용하는 원격 접속 서비스에서 사용됩니다.
SSH는 네트워크 상에서 원격 시스템에 보안 연결을 설정하는 데 사용됩니다.
3️⃣ FTP
포트 21은 FTP(File Transfer Protocol)를 처리하는 데 사용됩니다.
이를 통해 서버와 클라이언트 간에 파일을 전송할 수 있습니다.
예시: ftp://example.com:21
4️⃣ 데이터베이스
포트 3306은 MySQL 데이터베이스와 연결할 때 사용되며, 클라이언트는 이 포트를 통해 MySQL 서버에 접근합니다.
포트 1433은 Microsoft SQL Server가 사용하는 포트입니다.
5️⃣ 이메일
포트 25는 SMTP(Simple Mail Transfer Protocol)를 사용하여 이메일을 전송하는 데 사용됩니다.
포트 993은 IMAP(Internet Message Access Protocol)을 통한 보안 이메일 접근에 사용됩니다.
5️⃣ 포트 스캐닝과 보안.
1️⃣ 포트 스캐닝.
포트 스캐닝은 네트워크 보안에서 중요한 활동입니다.
해커는 시스템에 열려있는 포트를 찾기 위해 포트 스캐닝을 수행하여, 취약한 포트를 악용할 수 있습니다.
시스템 보안을 강화하려면 필요하지 않은 포트는 차단하거나 방화벽을 통해 관리하는 것이 중요합니다.
2️⃣ 방화벽과 포트 차단.
방화벽(Firewall)은 특정 포트에 대한 외부 접근을 차단하거나 허용할 수 있습니다.
보안 강화를 위해, 네트워크 관리자는 불필요한 포트를 닫고, 필요한 포트만 열어두는 것이 중요합니다.
3️⃣ 포트 포워딩.
포트 포워딩은 네트워크 외부에서 들어오는 트래픽을 내부 네트워크의 특정 장치로 전달하는 과정입니다.
이를 통해 외부 네트워크와 내부 네트워크 간의 통신을 원활하게 할 수 있습니다.
6️⃣ 결론.
네트워크 포트는 네트워크 상에서 특정 어플리케이션이나 서비스에 대한 통신 경로를 제공하는 논리적인 번호입니다.
포트는 IP 주소와 함께 사용되어, 어떤 애플리케이션이 데이터를 처리해야 하는지를 결정하며, 데이터 전송의 목적지를 명확히 지정해줍니다.
포트 번호는 네트워크 프로토콜마다 고유하게 사용되며, 이를 통해 웹 브라우징, 이메일 전송, 파일 전송과 같은 다양한 작업이 이루어집니다.
포트 관리와 보안은 네트워크 운영에서 매우 중요한 부분입니다.
-
🌐[Network] IP(Internet Protocol)란 무엇일까?
🌐[Network] IP(Internet Protocol)란 무엇일까?
IP(Internet Protocol)는 컴퓨터 네트워크에서 데이터를 전송하기 위한 주소 체계이자 프로토콜입니다.
IP는 패킷(Packet) 단위로 데이터를 전송하며, 데이터를 전송할 발신자와 수신자를 식별하기 위해 고유한 IP 주소를 사용합니다.
IP는 네트워크 계층(Network Layer)에서 동작하며, 인터넷과 같은 연결망에서 장치들이 서로 통신할 수 있도록 해줍니다.
1️⃣ IP의 주요 역할
1️⃣ 주소 지정.
IP(Internet Protocol)는 네트워크 상에서 각 장치(컴퓨터, 서버, 라우터 등)에 고유한 IP 주소를 부여하여, 주고받는 송신자와 수신자를 식별합니다.
IP 주소는 각 장치가 네트워크 상에서 유일하게 구분될 수 있는 식별자로, 데이터를 정확한 목적지로 전달하는 데 사용됩니다.
2️⃣ 데이터 패킷 전송.
IP(Internet Protocol)는 데이터를 작은 패킷(Packet) 단위로 나누어 전송합니다.
이러한 패킷(Packet)들은 각각 IP 주소를 통해 발신지에서 목적지까지 최적의 경로로 전달됩니다.
패킷(Packet)은 서로 다른 경로를 통해 전달될 수 있으며, 목적지에서 다시 조립됩니다.
3️⃣ 경로 설정 및 라우팅.
IP는 네트워크 장비인 라우터를 통해 패킷(Packet)의 전송 경로를 결정합니다.
라우터는 목적지 IP 주소를 확인하고, 패킷(Packet)이 올바른 경로로 전달되도록 합니다.
IP(Internet Protocol)는 패킷(Packet)이 네트워크를 목적지까지 효율적으로 전달되도록 경로를 설정하는 역할을 합니다.
2️⃣ IP 주소의 구조.
IP(Internet Protocol) 주소는 네트워크 상에서 장치를 구분하는 고유한 숫지 식별자입니다.
IP(Internet Protocol) 주소는 IPv4와 IPv6의 두 가지 버전으로 나뉩니다.
1️⃣ IPv4(Internet Protocol version 4)
32비트로 구성된 주소로, 닷(deciaml) 표기법을 사용하여 4개의 숫자로 표현됩니다.
각 숫자는 0~255 범위 내에 있으며 점(.)으로 구분됩니다.
예시: 192.169.1.1
IPv4는 약 43억 개의 고유 주소를 제공하지만, 인터넷 사용이 폭발적으로 증가하면서 주소가 고갈되고 있어, 이를 대체하기 위해 IPv6가 도입되었습니다.
2️⃣ IPv6(Internet Protocol version 6)
128비트로 구성된 주소로, 16진수를 사용해 8개의 그룹으로 표현됩니다.
각 그룹은 콜론(,)으로 구분됩니다.
예시: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6는 매우 많은(340언델리온) 주소 공간을 제공하여, 미래의 인터넷 사용을 충분히 지원할 수 있습니다.
3️⃣ IP의 주요 기능.
1️⃣ 데이터 패킷화 및 전송.
IP는 데이터를 패킷(Packet) 단위로 분할아혀 전송합니다.
각 패킷에는 발신자 IP(Internet Protocol) 주소와 수신자 IP(Internet Protocol) 주소가 포함되며, 패킷은 네트워크 상의 여러 장비(라우터 등)를 거쳐 목적지에 도달합니다.
2️⃣ 최적 경로 설정.
IP는 네트워크 내에서 최적의 경로를 통해 데이터를 전달합니다.
패킷(Packet)은 각 경로를 지나며, IP(Internet Protocol) 주소를 기반으로 라우팅됩니다.
이를 통해 데이터가 가장 빠르고 효율적으로 전달될 수 있습니다.
3️⃣ 비연결성.
IP는 비연결성 프로토콜입니다.
즉, 데이터를 전송할 때 송신자와 수신자 간에 사전 연결 설정을 하지 않습니다.
각 패킷(Packet)은 독립적으로 전송되며, 네트워크 상황에 따라 서로 다른 경로로 전달될 수 있습니다.
4️⃣ 무결성 보장 없음.
IP(Internet Protocol)는 데이터를 전송할 때 패킷(Packet)의 신뢰성이나 순서 보장을 하지 않습니다.
패킷(Packet)이 손실되거나, 순서가 뒤바뀔 수 있으며, 이는 상위 계층의 프로토콜(TCP, Transmission Control Protocol)이 처리합니다.
IP(Internet Protocol)는 단지 데이터를 전송하는 역할을 수행합니다.
🙋♂️ TCP(Transmission Control Protocol)란 무엇일까요
4️⃣ IP의 동작 방식.
1️⃣ 패킷 생성.
송신 장치는 데이터를 작은 패킷(Packet)으로 나누고, 각 패킷에 IP 헤더를 추가합니다.
이 헤더에는 송신자와 수신자의 IP(Internet Protocol) 주소가 포함됩니다.
2️⃣ 라우팅.
패킷(Packet)이 네트워크를 통해 전송될 때, 각 패킷(Packet)은 라우터(Router)를 거쳐 최종 목적지로 향합니다.
라우터는 패킷(Packet)의 목적지 IP 주소를 분석하여, 패킷을 적절한 경로로 전송합니다.
3️⃣ 패킷 수신.
목적지 장치에서 패킷(Packet)을 수신하면, 패킷(Packet)을 다시 원래의 데이터로 재조립합니다.
상위 계층의 프로토콜(TCP(Transmission Control Protocol) / UDP(User Datagram Protocol))은 패킷의 손신 여부나 순서를 확인하고, 데이터를 정확하게 전달하도록 보장합니다.
5️⃣ IP의 종류.
1️⃣ 공인 IP 주소(Public IP Address)
공인 IP 주소(Public IP Address)는 인터넷 상에서 고유한 주소로, 인터넷 서비스 제공업체(ISP, Internet Service Provider)에 의해 할당됩니다.
이 주소는 전 세계에서 유일하며, 인터넷을 통해 다른 장치들과 통신할 수 있습니다.
2️⃣ 사설 IP 주소(Private IP Address)
사설 IP 주소(Private IP Address)는 로컬 네트워크에서 사용되는 IP(Internet Protocol) 주소 입니다.
같은 사설 IP 주소는 여러 네트워크에서 중복해서 사용할 수 있지만, 인터넷과 직접 통신할 수 없습니다.
사설 IP는 NAT(Network Address Translation)을 통해 공인 IP(Public IP)로 변환되어 인터넷에 접근할 수 있습니다.
👉 사설 IP 주소 대역
1.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
6️⃣ IP 프로토콜의 버전.
1️⃣ IPv4(Internet Protocol version 4)
IPv4는 인터넷이 상용화된 초기부터 사용된 프로토콜로, 32비트 주소 체계를 사용합니다.
43억 개의 IP 주소를 제공하지만, 인터넷 장치의 폭발적 증가로 인해 IP 주소가 부족해지고 있습니다.
2️⃣ IPv6(Internet Protocol version 6)
IPv6는 128비트 주소 체계를 사용하여 거대한 주소 공간을 제공합니다.
IPv6는 IPv4의 주소 부족 문제를 해결하기 위해 도입되었으며, 주소 자동 구성 및 향상된 보안 기능을 지원합니다.
7️⃣ IP 프로토콜의 역할과 TCP/IP 모델.
IP는 네트워크 계층(Network Layer)에서 동작하는 프로토콜로, 데이터가 목적지에 도달할 수 있도록 경로 설정과 주소 지정을 처리합니다.
IP는 TCP와 함께 동장하여 데이터를 안전하게 전송하는 TCP/IP 모델의 일부입니다.
TCP(Transmission Control Protocol)는 전송 계층에서 데이터를 신뢰성 있게 전송하며, IP(Internet Protocol)는 네트워크 계층에서 패킷(Packet)을 올바른 경로로 전송합니다.
🙋♂️ OSI 7계층 모델
8️⃣ IP와 관련된 주요 프로토콜.
1️⃣ TCP(Transmission Control Protocol)
TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜입니다.
IP(Internet Protocol)는 패킷(Packet)을 목적지로 전달하는 역할을 하지만, TCP(Transmission Control Protocol)는 패킷의 무결성, 순서 보장, 오류 검출 및 수정을 담당합니다.
2️⃣ UDP(User Datagram Protocol)
UDP(User Datagram Protocol)는 비연결형 프로토콜로, IP(Internet Protocol)와 마찬가지로 데이터를 전송하지만, 신뢰성을 보장하지 않습니다.
TCP(Transmission Control Protocol)와 달리 오버헤드(Overhead)가 적고 빠르기 때문에, 실시간 스트리밍이나 온라인 게임에서 많이 사용됩니다.
3️⃣ ICMP(Internet Control Message Protocol)
ICMP(Internet Control Message Protocol)는 네트워크 진단 및 오류 처리를 위한 프로토콜입니다.
Ping 명령어는 ICMP를 사용하여 네트워크 연결 상태를 확인합니다.
9️⃣ IP의 사용 사례.
인터넷 통신
IP는 인터넷 상의 모든 장치가 서로 통신할 수 있도록 주소를 제공하고, 데이터를 전송하는 핵심 프로토콜입니다.
로컬 네트워크(LAN, Local Area Network, 근거리 통신망)
IP는 가정이나 사무실에서 로컬 네트워크 내 장치들이 서로 데이터를 주고받을 수 있게 합니다.
네트워크 장비 간 통신
라우터, 스위치, 서버 등 네트워크 장비들이 IP 주소를 통해 서로 통신하고 데이터를 전달합니다.
1️⃣0️⃣ 결론.
IP(Internet Protocol)는 네트워크 상의 장치들이 데이터를 주고받을 수 있도록 하는 기본 프로토콜입니다.
IP 주소를 통해 각 장치를 고유하게 식별하고, 데이터를 패킷(Packet) 단위로 나누어 전달합니다.
IPv4와 IPv6 두 가지 버전이 있으며, 경로 설정, 주소 지정, 데이터 패킷화 등을 담당합니다.
IP는 네트워크 통신의 핵심적인 역할을 수행하며, 인터넷과 로컬 네트워크에서 모든 장치 간 통신을 가능하게 합니다.
-
🌐[Network] LAN 내에서 전달되는 데이터 프레임이란 무엇일까?
🌐[Network] LAN 내에서 전달되는 데이터 프레임이란 무엇일까?
LAN(Local Area Network, 근거리 통신망) 내에서 전달되는 데이터 프레임(Data Frame)은 네트워크 계층의 데이터가 데이터 링크 계층(OSI 7계층의 2계층)에서 전송 단위로 사용되는 구조입니다.
프레임(Frame)은 이더넷(Ethernet)과 같은 LAN(Local Area Network, 근거리 통신망) 기술에서 데이터 패킷(Data Packet)을 네트워크 장치 간에 전송하는 데 사용되며, 헤더, 데이터(페이로드,Payload), 트레일러로 구성됩니다.
🙋♂️ 이더넷(Ethernet)이란 무엇일까요?
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
🙋♂️ OSI 7계층 모델
1️⃣ 데이터 프레임의 구성 요소.
1️⃣ 헤더(Header)
목적지 MAC 주소
데이터가 어느 장치로 전송될지 나타냅니다.
LAN(Local Area Network, 근거리 통신망) 내에서 연결된 네트워크 장치들(예: 컴퓨터, 프린터, 스위치 등)은 MAC 주소를 통해 식별됩니다.
🙋♂️ MAC(Media Access Control) 주소란 무엇일까요?
2️⃣ 데이터(페이로드, Payload)
상위 계층에서 전송된 실제 데이터가 포함됩니다.
주로 네트워크 계층(예: IP 패킷)의 데이터를 전달하며, 최대 1500바이트의 데이터를 포함할 수 있습니다.
3️⃣ 트레일러(Trailer)
프레임 체크 시퀀스(FCS, Frame Check Sequence)
데이터 전송 중 오류를 감지하는 오류 검사 코드를 포함합니다.
수신 측에서 데이터 프레임이 손상되지 않았는지 확인하는 데 사용합니다.
2️⃣ 데이터 프레임의 동작 원리.
1️⃣ 출발지 장치에서 생성.
데이터 링크 계층에서 상위 계층의 데이터를 받아 프레임으로 변환합니다.
출발지 MAC 주소와 목적지 MAC 주소가 프레임에 추가됩니다.
2️⃣ LAN 내에서 전송.
이더넷 케이블, 스위치 또는 무선 엑세스 포인트(WAP, Wireless Access Point)를 통해 프레임이 LAN(Local Area Network, 근거리 통신망) 내에서 전송됩니다.
스위치(Switch)는 MAC 주소 테이블을 사용하여 목적지 MAC 주소를 분석한 후, 해당 장치로 프레임을 전달합니다.
3️⃣ 수신 측에서 재조립
목적지 장치는 해당 프레임을 수신하고, 오류가 없는지 검사한 후 데이터 링크 계층의 헤더와 트레일러를 제거하고 상위 계층(네트워크 계층)으로 데이터를 전달합니다.
3️⃣ 데이터 프레임의 역할
1️⃣ 데이터 전달의 기본 단위.
LAN(Local Area Network, 근거리 통신망) 내에서 데이터 통신의 기본 단위로 사용됩니다.
이더넷(Ethernet), Wi-Fi 등 다양한 LAN 기술에서 데이터를 전송할 때 프레임이 사용됩니다.
2️⃣ MAC(Media Access Control)주소를 통한 장치 식별.
MAC(Media Access Control) 주소를 사용하여 LAN(Local Access Network, 근거리 통신망) 내에서 장치를 식별하고, 데이터 프레임을 해당 장치로 전달합니다.
3️⃣ 에러 감지.
프레임에 포함된 FCS(Frame Check Sequence)를 통해 데이터 전송 중 오류 감지를 수행합니다.
오류가 발생한 경우 데이터 프레임은 폐기되며, 필요시 재전송됩니다.
4️⃣ 데이터 프레임 전송 과정 예시.
1️⃣ 컴퓨터 A에서 컴퓨터 B로 데이터를 전송하려면, 컴퓨터 A는 컴퓨터 B의 MAC 주소를 사용하여 데이터 프레임을 생성합니다.
2️⃣ 이 프레임은 스위치 등 네트워크 장치를 거쳐 컴퓨터 B로 전달됩니다.
3️⃣ 컴퓨터 B는 자신의 MAC(Media Access Control) 주소와 일치하는 프레임을 수신하고, 해당 데이터를 처리합니다.
5️⃣ 결론.
LAN(Local Area Network, 근거리 통신망) 내에서 데이터 프레임은 네트워크에서 데이터를 전송하기 위한 기본 단위입니다.
프레임은 데이터 링크 계층에서 MAC(Media Access Control) 주소를 사용하여 출발지와 목적지 장치를 식별하며, 데이터를 전송하는 동안 오류 감지 기능을 수행합니다.
이는 이더넷(Ethernet) 기반 네트워크에서 데이터를 신뢰성 있게 전송하는 핵심 요소입니다.
-
🌐[Network] WAN(Wide Area Network)이란 무엇일까요?
🌐[Network] WAN(Wide Area Network)이란 무엇일까요?
WAN(Wide Area Network, 광역 통신망)은 지리적으로 멀리 떨어진 지역들을 연결하는 네트워크입니다.
WAN(Wide Area Network, 광역 통신망)은 도시, 국가, 심지어 전 세계에 걸쳐있는 네트워크를 연결할 수 있으며, 일반적으로 여러 LAN(Local Area Network, 근거리 통신망)이나 MAN(Metropolitan Area Network, 도시권 통신망)을 서로 연결하여 데이터를 주고받을 수 있게 해줍니다.
인터넷이 가장 대표적인 WAN의 예입니다.
🙋♂️LAN(Local Area Network)이란 무엇일까요?
1️⃣ WAN(Wide Area Network, 광역 통신망)의 주요 특징.
1️⃣ 광범위한 지리적 범위.
WAN(Wide Area Network, 광역 통신망)은 멀리 떨어진 지역에 있는 네트워크들을 연결합니다.
예를 들면, 한 나라의 여러 도시나, 심지어 다른 나라의 네트워크까지 연결할 수 있습니다.
WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)과 달리 국가 간, 대륙 간 네트워크를 연결할 수 있습니다.
2️⃣ 낮은 데이터 전송 속도.
WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)에 비해 상대적으로 낮은 데이터 전송 속도를 제공합니다.
네트워크 장비 간의 물리적 거리가 멀기 때문에, 데이터 전송 속도가 느려질 수 있습니다.
하지만 광케이블과 같은 고속 네트워크 기술을 사용하여 성능을 향상시킬 수 있습니다.
3️⃣ 인터넷 서비스 제공업체(ISP, Internet Service Provider)를 통한 연결.
WAN(Wide Area Network)은 일반적으로 ISP(인터넷 서비스 제공업체, Internet Service Provider)를 통해 연결됩니다.
ISP(인터넷 서비스 제공업체, Internet Service Provider)는 WAN(Wide Area Network)을 통해 여러 지역이나 국가를 연결하는 네트워크 인프라를 제공합니다.
개인이나 회사는 ISP(Internet Service Provider)의 WAN(Wide Area Network, 광역 통신망)을 사용해 인터넷을 통해 다른 네트워크와 연결됩니다.
4️⃣ 고비용.
WAN(Wide Area Network)은 구축과 유지비용이 매우 높습니다.
지리적으로 먼 거리를 연결하기 위해 복잡한 장비와 기술이 필요하며, 대규모 네트워크 인프라가 요구됩니다.
WAN(Wide Area Network, 광역 통신망) 연결을 위해 고속 광케이블, 위성 연결, 전용선등이 사용됩니다.
5️⃣ 다양한 연결 기술 사용.
WAN(Wide Area Network, 광역 통신망)은 광케이블, 위성 연결, 전용선 DSL(디지털 가입자 회선), LTE/5G와 같은 여러 기술을 사용하여 데이터를 전송합니다.
이러한 기술은 거리에 따른 속도와 성능에 영향을 미칩니다.
2️⃣ WAN의 구성 요소.
1️⃣ 라우터(Router)
라우터(Router)는 WAN(Wide Area Network, 광역 통신망)에서 데이터를 적절한 네트워크로 경로 설정하고 전송하는 역할을 합니다.
여러 LAN(Local Area Network, 근거리 통신망)을 서로 연결하거나, LAN(Local Area Network, 근거리 통신망)을 인터넷과 연결하는 데 사용됩니다.
2️⃣ 전용선(Leased Line)
전용선은 두 지점 간에 데이터를 전송하기 위해 전용으로 사용되는 통신 회선입니다.
일반적으로 기업이 본사와 지사 간의 통신을 위해 전용선으로 사용하여, 보안성과 성능을 확보할 수 있습니다.
3️⃣ 스위치(Switch)
스위치는 WAN(Wide Area Network, 광역 통신망)에서도 네트워크 장치 간의 데이터를 효율적으로 전달하기 위해 사용됩니다.
LAN(Local Area Network, 근거리 통신망)에서도 많이 사용되지만, WAN(Wide Area Network, 광역 통신망)에서는 더 큰 규모의 데이터 흐름을 관리하는 스위치가 필요합니다.
4️⃣ 방화벽(Firewall)
WAN(Wide Area Network, 광역 통신망)을 통한 네트워크 통신을 보호하기 위해 방화벽이 사용됩니다.
외부에서 들어오는 불법적인 접근이나 해킹을 차단하고, 네트워크의 보안을 강화하는 역할을 합니다.
5️⃣ 게이트웨이(Gateway)
서로 다른 네트워크 프로토콜을 사용하는 네트워크 간에 통신을 가능하게 해주는 장비입니다.
WAN(Wide Area Network, 광역 통신망)에서는 여러 종류의 네트워크를 연결할 수 있으므로, 서로 다른 네트워크 간의 통신을 위해 게이트웨이가 사용됩니다.
3️⃣ WAN의 예시.
1️⃣ 인터넷(Internet)
인터넷(Internet)은 가장 큰 WAN(Wide Area Network, 광역 통신망)의 예입니다.
전 세계의 수많은 LAN(Local Area Network, 근거리 통신망)과 WAN(Wide Area Network, 광역 통신망)이 인터넷을 통해 연결되어 통신을 주고받습니다.
인터넷은 ISP(Internet Service Provider, 인터넷 서비스 제공업체)들이 제공하는 네트워크 인프라를 통해 전 세계에서 데이터를 주고받을 수 있게 해줍니다.
2️⃣ 기업 WAN(Wide Area Network, 광역 통신망)
대기업은 본사와 여러 지사 간의 데이터를 교환하기 위해 자체적인 WAN을 구축할 수 있습니다.
예를 들어, 서울에 본사를 둔 회사가 부산, 뉴욕, 도쿄의 지사와 WAN(Wide Area Network, 광역 통신망)을 통해 연결하여 데이터를 공유하고, 협업을 진행할 수 있습니다.
3️⃣ 은행 네트워크
전 세계에 지점을 두고 있는 은행은 WAN(Wide Area Network, 광역 통신망)을 통해 각 지점 간에 데이터를 수행합니다.
고객의 계좌 정보, 거래 내역 등을 전송하고, 실시간으로 금융 데이터를 동기화합니다.
4️⃣ 정부 네트워크
여러 국가기관이 WAN(Wide Area Network, 광역 통신망)을 사용해 중앙 정부와 지방 정부 간의 데이터를 전송하거나, 다른 국가 기관과 통신하는 네트워크를 구축합니다.
4️⃣ WAN의 장점.
1️⃣ 지리적 한계를 넘는 통신.
WAN(Wide Area Network, 광역 통신망)을 사용하면 멀리 떨어진 지리적 위치에 있는 네트워크와도 쉽게 통신할 수 있습니다.
국가 간, 대륙간 연결도 WAN(Wide Area Network, 광역 통신망)을 통해 가능합니다.
2️⃣ 자원 공유.
WAN(Wide Area Network, 광역 통신망)을 통해 여러 지역에 흩어진 네트워크 사용자들이 데이터와 자원을 공유할 수 있습니다.
예를 들어, 한 회사의 여러 지사에서 파일 서버나 데이터베이스에 접근할 수 있습니다.
3️⃣ 중앙 집중 관리.
WAN(Wide Area Network, 광역 통신망)은 네트워크의 중앙 관리를 가능하게 합니다.
본사에서 지사 네트워크 관리하거나, 중앙 서버에서 네트워크 자원을 통합적으로 관리할 수 있습니다.
4️⃣ 확장성.
WAN(Wide Area Network, 광역 통신망)은 필요한 만큼 확장할 수 있습니다.
지역이 다르거나 국가가 다르더라도, 네트워크를 확장하여 연결할 수 있습니다.
5️⃣ WAN의 단점.
1️⃣ 높은 비용.
WAN(Wide Area Network, 광역 통신망)을 구축하고 유지하는 데 비용이 많이 듭니다.
전용선, 위성 링크, 광섬유 등의 인프라를 구축하는 데 많은 자원이 필요합니다.
특히, 장거리 연결일수록 비용이 더 높아집니다.
2️⃣ 느린 속도.
WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)에 비해 데이터 전송 속도가 느릴 수 있습니다.
물리적 거리가 멀수록 데이터 전송에 걸리는 시간이 증가하고, 지연이 발생할 수 있습니다.
3️⃣ 복잡성.
WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)보다 구축과 관리가 훨씬 복잡합니다.
장거리 네트워크 통신은 여러 기술과 장비의 조합이 필요하며, 문제가 발생했을 때 해결하기 어렵습니다.
4️⃣ 보안 문제.
WAN(Wide Area Network, 광역 통신망)은 인터넷과 같은 공개 네트워크를 사용할 때 보안 문제가 발생할 수 있습니다.
데이터를 안전하게 보호하기 위해서는 암호화, 방화벽 등의 보안 기술이 필요합니다.
6️⃣ 결론.
WAN(Wide Area Network, 광역 통신망)은 광범위한 지역을 연결하는 네트워크로, LAN(Local Area Network, 근거리 통신망)과 MAN(Metropolitan Area Network, 도시권 통신망)을 연결하고 국가 간, 대륙 간 통신을 가능하게 합니다.
WAN(Wide Area Network, 광역 통신망)은 인터넷을 통해 여러 장치와 네트워크가 서로 연결될 수 있는 방법을 제공하며, 기업이나 정부, 은행 등에서 다양한 용도로 사용됩니다.
WAN(Wide Area Network, 광역 통신망)을 통해 먼 거리의 네트워크를 연결하여 자원 공유와 통신을 할 수 있지만, 구축 및 유지 비용이 높고 관리가 복잡할 수 있습니다.
-
🌐[Network] HTTP 프로토콜이란 무엇일까요?
🌐[Network] HTTP 프로토콜이란 무엇일까요?
HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)는 웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 규약입니다.
인터넷에서 웹 페이지, 이미지, 동영상 등 다양한 리소스를 전송하는 표준 통신 프로토콜로, 웹 브라우저와 웹 서버 간의 통신에 사용됩니다.
🙋♂️ 프로토콜(Protocol)이란 무엇일까요?
1️⃣ HTTP의 기본 개념.
1️⃣ 클라이언트-서버 모델.
HTTP는 클라이언트와 서버 간의 요청-응답 방식으로 동작합니다.
웹 브라우저 같은 클라이언트가 서버에 요청을 보내면, 서버는 요청을 처리하고 그 결과를 응답으로 돌려줍니다.
클라이언트 : 웹 브라우저, 모바일 앱 등 사용자 측에서 요청을 보내는 쪽입니다.
서버 : 클라이언트의 요청을 처리하고 응답을 보내는 쪽으로, 웹 서버나 데이터베이스 서버가 대표적입니다.
2️⃣ 무상태성(Stateless).
HTTP는 무상태성 프로토콜입니다.
즉, 각 요청은 독립적이며, 이전 요청이나 응답에 의존하지 않습니다.
서버는 요청을 처리할 때 클라이언트의 상태를 기억하지 않으며, 모든 요청은 새로운 것처럼 처리됩니다.
이를 보완하기 위해, 쿠키나 세션을 통해 클라이언트 상태를 유지하는 방법이 사용되기도 합니다.
3️⃣ URI(Uniform Resource Identifier)
HTTP는 URI(통합 지원 식별자)를 사용하여 웹에서 특정 리소스를 식별합니다.
일반적으로는 URI는 웹 주소(또는 URL)로 표현되며, 서버에서 원하는 리소스를 가리킵니다.
예: https://www.example.com/index.html
https:// : HTTP 프로토콜(HTTPS)
www.example.com : 서버 도메인 이름
/index.html : 서버 내에서 요청한 리소스의 경로
4️⃣ HTTP 메서드(HTTP Methods)
HTTP는 리소스에 대한 요청의 의도를 명확히 하기 위해 여러 메서드를 사용합니다.
메서드는 클라이언트가 서버에 어떤 작업을 요청하는지를 정의합니다.
주요 HTTP 메서드
GET : 리소스를 조회하는 데 사용합니다.(데이터를 서버에서 가져옴)
POST : 서버에 새로운 리소스를 생성하거나 데이터를 전송하는 데 사용합니다.
PUT : 서버의 기존 리소스를 수정하는 데 사용합니다.
DELETE : 서버에서 리소스를 삭제 하는 데 사용합니다.
HEAD : GET 요청과 유사하지만, 응답 본문 없이 헤더만을 반환합니다.
5️⃣ HTTP 상태 코드(HTTP Status Codes)
서버는 클라이언트의 요청에 대해 상태 코드를 통해 응답의 결과를 전달합니다.
상태 코드는 요청이 성공했는지, 실패했는지, 또는 어떤 문제가 발생했는지에 대한 정보를 제공하여, 3자리 숫자로 구성됩니다.
주요 상태 코드
200 OK : 요청이 성공적으로 처리됨.
201 Created : 리소스가 성공적으로 생성됨.
400 Bad Request : 클라이언트의 요청이 잘못됨.
401 Unauthorized : 인증이 필요함.
403 Forbidden : 권한이 없어서 요청이 거부됨.
404 Not Found : 요청한 리소스를 찾을 수 없음.
500 Internal Server Error : 서버 내부 오류가 발생함.
6️⃣ 헤더(Headers)
HTTP 요청과 응답에는 헤더가 포함됩니다.
헤더는 요청이나 응답에 대한 부가 정보를 담고 있으며, 클라이언트와 서버 간의 통신 방식을 제어합니다.
주요 헤더 예
Content-Type : 요청 또는 응답 본문의 데이터 형식을 지정합니다.
예: application/json, text/html
User-Agent : 클라이언트 애플리케이션(예: 브라우저)의 정보를 서버에 전달합니다.
Authorization : 인증에 필요한 정보(토큰 등)를 포함하여 서버에 전달합니다.
7️⃣ HTTP 버전.
HTTP는 여러 버전이 존재하며, 각 버전은 성능 및 기능을 개선해왔습니다.
HTTP/1.0 : 기본적인 기능만 제공하며, 한 번에 하나의 요청만 처리할 수 있습니다.
HTTP/1.1 : 연결 재사용(Persistent Connection)을 지원하여 여러 요청을 동시에 처리할 수 있습니다.
여전히 웹에서 가장 많이 사용되는 버전입니다.
HTTP/2 : 성능 향상을 위해 요청과 응답을 다중화하여, 동시에 여러 요청을 보내고 받을 수 있게 설계되었습니다.
웹 페이지 로딩 속도를 크게 개선합니다.
HTTP/3 : 최신 버전으로, QUIC 프로토콜을 기반으로 하여 성능과 보안성을 크게 개선했습니다.
📝 QUIC(Quick UDP Internet Connections) 프로토콜.
QUIC(Quick UDP Internet Connections)는 구글이 개발한 인터넷 전송 계층 프로토콜로, TCP와 같은 신뢰성있는 데이터 전송을 제공하면서도 UDP(User Datagram Protocol)를 기반으로 하여 더 빠른 연결 수립과 더 나은 성능을 목표로 합니다.
HTTP/3는 QUIC 위에서 동작하며, 웹에서의 저지연과 안정성을 개선하는 데 중요한 역할을 합니다.
2️⃣ HTTP 통신 과정.
HTTP 통신 과정은 클라이언트가 서버에 요청(Request)을 보내고, 서버가 응답(Response)을 반환하는 요청-응답 모델로 구성됩니다.
1️⃣ 클라이언트 요청.
클라이언트가 서버에 리소스를 요청하면, HTTP 요청을 서버로 전송합니다.
요청은 다음과 같은 구성 요소를 포함합니다.
요청 메서드(예: GET, POST)
URI(예: /index.html)
헤더(예: Content-Type, User-Agent)
본문(POST 요청일 경우 데이터가 포함될 수 있음)
👉 예시: GET 요청.
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
2️⃣ 서버 응답.
서버는 클라이언트 요청을 처리한 후, HTTP 응답을 클라이언트에 반환합니다.
응답은 다음과 같은 구성 요소를 포함합니다.
상태 코드 (예: 200 OK, 404 Not Found)
헤더 (예: Content-Type, Cache-Control)
본문 (예: HTML, JSON 데이터)
👉 예시: 200 OK 응답.
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1354
<html>
<head><title>Example</title></head>
<body>...</body>
</html>
3️⃣ HTTP의 주요 특징.
1️⃣ 간단함.
HTTP는 텍스트 기반 프로토콜로, 사람이 이해하기 쉬운 방식으로 설계되었습니다.
각 요청과 응답은 명확한 구조로 되어 있어, 쉽게 해석할 수 있습니다.
2️⃣ 확장성.
HTTP는 확장 가능한 프로토콜입니다.
헤더를 통한 다양한 정보(인증 정보, 캐싱 정보, 데이터 형식 등)를 전송할 수 있으며, 새로운 기능도 쉽게 추가할 수 있습니다.
3️⃣ 유연성.
HTTP는 다양한 데이터 형식을 전송할 수 있습니다.
텍스트, 이미지, 동영상 등 다양한 콘텐츠 타입을 지원하며, 클라이언트와 서버가 이를 교환할 수 있습니다.
4️⃣ 무상태성.
각 HTTP 요청은 독립적으로 처리되며, 서버는 요청 간에 상태를 유지하지 않습니다.
이를 통해 서버는 확장성과 단순성을 유지할 수 있지만, 쿠키나 세션을 통해 상태 유지를 보완할 수 있습니다.
4️⃣ HTTP와 HTTPS의 차이
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 계층(SSL/TLS)이 추가된 버전입니다.
HTTPS는 데이터를 암호화하여 전송하므로, 클라이언트와 서버 간의 통신을 보호할 수 있습니다.
이를 통해 데이터가 제 3자에 의해 도청, 변조, 위조되는 것을 방지합니다.
👉 주요 차이점.
HTTP : 데이터를 암호화하지 않고 평문으로 전송.
HTTPS : SSL/TLS를 사용하여 데이터를 암호화해 전송.
5️⃣ 결론.
HTTP는 웹에서 클라이언트와 서버 간에 데이터를 주고받는 데 사용되는 핵심적인 통신 프로토콜입니다.
요청-응답 모델을 기반으로 하며, 리소스 접근, 데이터 전송, 웹 페이지 로딩 등에 사용됩니다.
HTTP는 간단하고 확장 가능하며, 현대 웹의 기반을 이루는 중요한 프로토콜입니다.
-
🌐[Network] LAN이 합쳐져서 WAN이 되는걸까?
🌐[Network] LAN이 합쳐져서 WAN이 되는걸까?
네트워크 개념에서 LAN(Local Area Network, 근거리 통신망)이 WAN(Wide Area Network, 광역 통신망)으로 단순히 합쳐지는 것은 아닙니다.
LAN과 WAN은 서로 다른 규모와 기능을 가진 네트워크 유형이며, 그 관계는 단순한 결합 이상의 개념입니다.
1️⃣ LAN과 WAN의 차이와 관계.
1️⃣ LAN(Local Area Network, 근거리 통신망)
LAN(Local Area Network, 근거리 통신망)은 지리적 범위(예: 집, 사무실, 학교) 내에서 컴퓨터, 프린터, 서버 등 장치들을 연결하는 네트워크입니다.
고속 데이터 전송을 제공하며, 주로 이더넷(Ethernet) 또는 Wi-Fi를 사용하여 장치 간의 통신을 처리합니다.
2️⃣ WAN(Wide Area Network, 광역 통신망)
WAN(Wide Area Network, 광역 통신망)은 넓은 지리적 범위(예: 여러 도시, 국가, 심지어 전 세계)를 커버하는 네트워크입니다.
WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)보다 느릴 수 있으며, 여러 LAN(Local Area Network, 근거리 통신망)을 연결하여 원거리 통신을 가능하게 합니다.
WAN(Wide Area Network, 광역 통신망)은 ISP(Internet Service Provider, 인터넷 서비스 제공업체) 또는 전용선을 통해 연결되며, 네트워크 장치 간의 물리적 거리가 매우 멀 수 있습니다.
🙋♂️ WAN(Wide Area Network)이란 무엇일까요?
🙋♂️ 이더넷(Ethernet)이란 무엇일까요?
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
2️⃣ LAN과 WAN의 관계.
👉 LAN(Local Area Network, 근거리 통신망)이 WAN(Wide Area Network, 광역 통신망)에 연결된다.
여러 LAN(Local Area Network, 근거리 통신망)을 WAN(Wide Area Network, 광역 통신망)으로 연결하여 광범위한 네트워크를 형성합니다.
예를 들어, 한 기업의 각 지사(각 지사는 LAN(Local Area Network, 근거리 통신망)을 형성)를 WAN(Wide Area Network, 광역 통신망)을 통해 연결하여 본사와 다른 지사 간에 통신할 수 있게 합니다.
👉 WAN(Wide Area Network, 광역 통신망)은 LAN(Local Area Network, 근거리 통신망)을 포함할 수 있다.
WAN(Wide Area Network, 광역 통신망)은 여러 LAN(Local Area Network, 근거리 통신망)을 포함할 수 있습니다.
즉, WAN(Wide Area Network, 광역 통신망)의 일부는 여러 개의 LAN(Local Area Network, 근거리 통신망)을 연결하여, 전세계에 분산된 장치들이 서로 통신할 수 있게 만듭니다.
3️⃣ 예시
1️⃣ 회사 네트워크.
한 회사가 서울, 부산, 뉴욕에 지사를 두고 있다고 가정합니다.
각 지사는 자체적인 LAN(Local Area Network, 근거리 통신망)을 가지고 있는데, 이 LAN(Local Area Network, 근거리 통신망)은 지사 내의 컴퓨터, 프린터, 서버 등을 연결합니다.
각 지사는 WAN(Wide Area Network, 광역 통신망)을 통해 본사와 다른 지사들과 연결됩니다.
WAN(Wide Area Network, 광역 통신망)을 통해 서울 지사의 직원이 부산 지사의 서버에 접근하거나, 뉴욕 지사와 파일을 공유할 수 있습니다.
2️⃣ 인터넷(Internet).
인터넷(Internet)은 세계 최대의 WAN(Wide Area Network, 광역 통신망)으로, 여러 LAN(Local Area Network, 근거리 통신망)과 WAN(Wide Area Network, 광역 통신망)을 연결하여 전 세계의 컴퓨터들이 서로 통신할 수 있도록 만듭니다.
내가 집에서 인터넷에 접속하는 경우, 집의 LAN(예: Wi-Fi 네트워크)이 인터넷(WAN, Wide Area Network)을 통해 전 세계의 다른 컴퓨터와 연결됩니다.
4️⃣ WAN(Wide Area Network, 광역 통신망)의 구현 방법.
WAN(Wide Area Network, 광역 통신망)을 구현하기 위해서는 ISP(Internet Service Provider, 인터넷 서비스 제공자), 위성 링크, 전용선, 광섬유 등의 기술이 사용됩니다.
LAN(Local Area Network, 근거리 통신망)은 일반적으로 스위치, 라우터, 케이블을 통해 설정되지만, WAN(Wide Area Network)은 훨씬 더 복잡한 기술 인프라를 필요로 합니다.
VPN(가상 사설망)도 WAN(Wide Area Network, 광역 통신망)을 구축하는 방법 중 하나로, 여러 LAN을 공용 네트워크(인터넷, Internet)를 통해 안전하게 연결할 수 있도록 해줍니다.
5️⃣ 결론.
LAN(Local Area Network, 근거리 통신망)이 여러개 합쳐져서 WAN(Wide Area Network, 광역 통신망)이 되는 것은 아닙니다.
그러나 LAN(Local Area Network, 근거리 통신망)은 WAN(Wide Area Network, 광역 통신망)의 일부가 될 수 있으며, WAN(Wide Area Network, 광역 통신망)은 여러 LAN(Local Area Network, 근거리 통신망)을 연결하여 광범위한 통신망을 형성합니다.
WAN(Wide Area Network, 광역 통신망)은 주로 먼 거리의 네트워크를 연결하기 위한 것이고, LAN(Local Area Network, 근거리 통신망)은 가까운 거리에서 효율적으로 자원을 공유하고 데이터를 전송하기 위해 설계된 네트워크입니다.
-
🌐[Network] RESTful API란 무엇일까요?
🌐[Network] RESTful API란 무엇일까요?
RESTful API는 REST(Representational State Transfer) 아키텍처 스타일을 기반으로 한 웹 API를 의미합니다.
RESTful API는 클라이언트와 서버 간의 통신을 효율적이고 일관성 있게 설계하기 위해 HTTP 프로토콜을 활용하여 데이터를 주고 받는 방식입니다.
RESTful은 특정 기술이나 프로토콜을 지칭하는 것은 아니지만, REST 아키텍처의 원칙을 준수하는 API를 설명할 때 사용하는 용어입니다.
1️⃣ REST(Representational State Transfer)의 기본 개념.
REST는 Roy Fielding이 2000년 박사 논문에서 소개한 분산 시스템을 설계하기 위한 아키텍처 스타일입니다.
RESTful API는 이 원칙을 따르는 API로, 클라이언트-서버 구조, 무상태성, 캐싱 가능성, 계층화된 시스템과 같은 REST의 주요 제약을 따릅니다.
2️⃣ REST의 주요 원칙 및 RESTful API의 특징.
1️⃣ 자원(Resource) 기반.
REST에서는 모든 것을 자원으로 간주합니다.
예를 들어, 사용자는 하나의 자원, 게시물은 또 다른 하나의 자원으로 취급됩니다.
각 자원은 고유한 URI(Uniform Resource Identifer)를 통해 식별됩니다.
예를 들어, https://api.example.com/user/1는 id=1인 사용자 자원을 나타냅니다.
👉 URI 설계 예시
GET /users -> 모든 사용자 목록 가져오기
GET /users/1 -> 특정 사용자(id=1) 가져오기
POST /users/1 -> 새 사용자 생성
PUT /users/1 -> 사용자 정보 업데이트
DELETE /users/1 -> 사용자 삭제
2️⃣ HTTP 메서드 사용.
RESTful API는 HTTP 메서드를 자원의 작업과 연관시키기 위해 사용합니다.
주요 메서드로는 GET, POST, PUT, DELETE가 있습니다.
GET : 자원을 조회할 때 사용합니다.
POST : 자원을 생성할 때 사용합니다.
PUT : 자원을 업데이트할 때 사용합니다.
DELETE : 자원을 삭제할 때 사용합니다.
이러한 HTTP 메서드의 사용은 요청의 목적을 명확히 하고, 클라이언트와 서버 간의 상호작용을 일관성 있게 만듭니다.
3️⃣ 무상태성(Stateless)
RESTful API는 무상태(Stateless)해야 합니다.
즉, 서버는 클라이언트의 상태를 저장하지 않습니다.
클라이언트가 보낸 각각의 요청은 독립적이어야 하며, 요청에 의존해서는 안 됩니다.
클라이언트는 매 요청마다 필요한 모든 정보를 서버에 보내야 하며, 서버는 해당 요청만을 처리하고 응답을 반환합니다.
4️⃣ 캐시 가능(Cacheable)
RESTful API에서 응답은 캐시 될 수 있어야 합니다.
서버는 응답에 대한 캐싱 가능 여부를 클라이언트에게 명확히 전달합니다.
클라이언트가 자원의 불필요한 요청을 반복하지 않도록 하기 위해, 서버는 HTTP 헤더에 Cache-Control이나 Expires와 같은 캐시 관련 정보를 포함하여 응답을 보낼 수 있습니다.
5️⃣ 계층화된 구조.
RESTful 아키텍처는 계층화된 시스템을 지원합니다.
클라이언트는 중간 서버(프록시, 게이트웨이 등)를 통과하더라도, 요청과 응답이 처리되는 방식에 대해 신경 쓸 필요가 없습니다.
서버는 여러 계층을 통해 보안, 로드 밸런싱 등을 처리할 수 있습니다.
6️⃣ 일관된 인터페이스.
RESTful API는 일관된 인터페이스를 제공해야 합니다.
이는 자원에 접근하고 조작하는 방식이 명확하고 일관적이어야 하며, 클라이언트가 각 자원에 대해 동일한 방식으로 작업을 수행할 수 있어야 한다는 의미입니다.
7️⃣ 표현(Representation) 전송.
자원 자체는 서버에 저장되며, 클라이언트는 서버에서 자원의 표현(Representation) 을 전송받습니다.
일반적으로 RESTful API는 JSON이나 XML 형식으로 자원의 상태를 표현하며, 이를 클라이언트에 전달합니다.
👉 예시: 서버가 사용자 자원을 클라이언트에게 JSON 형식으로 응답할 때.
{
"id": 1,
"name": "Kobe",
"email": "kobe@example.com"
}
3️⃣ RESTful API의 HTTP 메서드와 자원의 관계.
1️⃣ GET
자원을 조회하는 데 사용됩니다.
예: GET /users/1은 id=1인 사용자를 조회하는 요청입니다.
2️⃣ POST
새로운 자원을 생성하는 데 사용됩니다.
예: POST /users는 새로운 사용자를 생성하는 요청입니다.
요청 본문에는 생성할 자원의 정보가 포함됩니다.
3️⃣ PUT
기존 자원을 업데이트하는 데 사용됩니다.
예: PUT /users/1은 id=1인 사용자 정보를 업데이트하는 요청입니다.
4️⃣ DELETE
자원을 삭제하는 데 사용됩니다.
예: DELETE /users/1은 id=1인 사용자를 삭제하는 요청입니다.
4️⃣ RESTful API의 예
👉 사용자 자원을 관리하는 RESTful API 예시.
1️⃣ GET 요청 (모든 사용자 조회)
GET /users
응답
[
{"id": 1, "name": "Kobe", "email": "kobe@example.com"},
{"id": 2, "name": "Eric", "email": "eric@example.com"}
]
2️⃣ POST 요청 (새 사용자 생성)
POST /users
요청 본문.
{
"name": "Kobe",
"email": "kobe@example.com"
}
응답.
PUT /users/3
3️⃣ PUT 요청 (사용자 정보 업데이트)
PUT /users/3
요청 본문
{
"name": "Kobe updated",
"email": "kobe.updated@example.com"
}
응답
{
"id": 3,
"name": "Kobe updated",
"email": "kobe.updated@example.com"
}
4️⃣ DELETE 요청 (사용자 삭제)
DELETE /users/3
응답.
{
"message": "User deleted successfully"
}
5️⃣ RESTful API의 장점.
1️⃣ 확장성.
RESTful API는 서버와 클라이언트 간의 결합도를 낮춰, 확장 가능하고 유연한 시스템을 설계할 수 있습니다.
2️⃣ 표준화.
HTTP 프로토콜의 표준을 기반으로 하여, 다양한 클라이언트와 쉽게 연동이 가능합니다.
3️⃣ 경량성.
JSON 같은 경량 포맷을 사용해 데이터 전송을 최적화할 수 있습니다.
4️⃣ 캐싱 가능.
HTTP 캐싱 메커니즘을 통해 성능을 향상시키고 네트워크 부하를 줄일 수 있습니다.
6️⃣ 결론.
RESTful API는 웹 애플리케이션에서 서버와 클라이언트 간의 상호작용을 일관성 있고 효율적으로 처리하기 위한 API 설계 방식입니다.
HTTP 프로토콜을 기반으로 자원을 CRUD 방식으로 관리하며, 무상태성, 자원 기반 접근, 일관된 인터페이스 등의 REST 원칙을 따릅니다.
RESTful API는 다양한 클라이언트(모바일, 웹 등)와 통신할 수 있는 확장 가능하고 유연한 시스템을 구축하는 데 매우 유용합니다.
-
🌐[Network] 프로토콜(Protocol)이란 무엇일까요?
🌐[Network] 프로토콜(Protocol)이란 무엇일까요?
프로토콜(Protocol) 은 컴퓨터나 네트워크 장치간에 데이터를 주고 받기 위한 일련의 규칙과 절차를 정의한 표준입니다.
쉽게 말해, 통신하는 장치들이 서로 이해하고 데이터 교환을 원활히 할 수 있도록 정해진 약속을 말합니다.
프로토콜은 데이터 형식, 통신 속도, 오류 처리 방식, 메시지 구조 등 통신에 필요한 모든 요소를 정의합니다.
1️⃣ 프로토콜의 주요 역할.
1️⃣ 통신 규칙 제공.
서로 다른 장치나 시스템이 데이터를 주고받기 위해 따라야 할 규칙을 제공합니다.
각 장치나 시스템이 동일한 프로토콜을 따름으로써, 서로 원활하게 정보를 주고받을 수 있습니다.
2️⃣ 데이터 형식 정의.
데이터를 어떻게 표현하고 전송할지에 대한 형식을 정의합니다.
예를 들어, 메시지의 시작과 끝을 어떻게 구분할지, 데이터의 크기나 구조는 어떻게 할지 등을 결정합니다.
3️⃣ 오류 검출 및 수정.
데이터 전송 중 발생할 수 있는 오류를 감지하고, 이를 처리하는 방식을 정의합니다.
통신 중 데이터가 손상되거나 유실될 경우 이를 해결하기 위한 절차가 포함됩니다.
4️⃣ 동기화
데이터를 주고 받는 송신자와 수신자 간의 동기화를 처리하여, 두 장치가 서로의 데이터를 올바르게 이해하고 처리할 수 있도록 돕습니다.
2️⃣ 프로토콜의 종류.
네트워크 통신에서 사용되는 프로토콜은 OSI(Open Systems Interconnection) 모델이나 TCP/IP 모델의 계층에 따라 나눌 수 있습니다.
각 계층은 서로 다른 프로토콜을 사용하여 특정 기능을 수행합니다.
1️⃣ 네트워크 계층별 프로토콜.
프로토콜은 네트워크 통신의 각 단계에 해당하는 다양한 역할을 담당합니다.
👉 응용 계층(Application Layer)
HTTP(HyperText Transfer Protocol)
웹 브라우저와 웹 서버 간에 데이터를 주고받기 위한 프로토콜로, 웹 페이지의 전송을 담당합니다.
FTP(File Transfer Protocol)
컴퓨터 간에 파일을 전송하는 데 사용되는 프로토콜입니다.
SMTP(Simple Mail Transfer Protocol)
이메일 전송을 위한 프로토콜입니다.
DNS(Domain Name System)
도메인 이름을 IP 주소로 변환하는 프로토콜입니다.
👉 전송 계층(Transport Layer)
TCP(Transmission Control Protocol)
신뢰성 있는 연결형 데이터 전송 프로토콜로, 데이터를 패킷으로 나누어 전송하고, 오류가 발생하면 재전송을 통해 안정성을 보장합니다.
UDP(User Datagram Protocol)
비연결형 프로토콜로, 빠른 데이터 전송이 가능하지만, 데이터 전송의 신뢰성은 보장하지 않습니다.
주로 실시간 스트리밍이나 게임에서 사용됩니다.
👉 인터넷 계층(Internet Layer)
IP(Internet Protocol)
데이터를 패킷으로 나누어 목적지까지 전달하는 역할을 하는 프로토콜로, 인터넷에서 기본적인 데이터 전송을 담당합니다.
ICMP(Internet Control Message Protocol)
네트워크 장비 간의 진단이나 오류 메시지를 전송하는 데 사용됩니다.
예: ping 명령.
👉 네트워크 인터페이스 계층(Network Interface Layer)
Ethernet
로컬 영역 네트워크(LAN)에서 사용되는 물리적 네트워크 프로토콜로, 네트워크 카드 간 데이터 전송을 처리합니다.
Wi-Fi
무선 네트워크에서 사용되는 통신 프로토콜로, 무선 장치 간 데이터를 주고받을 때 사용됩니다.
2️⃣ 보안 관련 프로토콜
SSL/TLS(Secure Sockets Layer / Transport Layer Security)
인터넷 상에서 데이터를 안전하게 암호화하여 전송하는 프로토콜입니다.
HTTPS는 SSL/TLS를 사용하여 HTTP 통신을 암호화합니다.
SSH(Secure Shell)
원격 시스템에 안전하게 접속하기 위한 프로토콜로, 데이터를 암호화하여 전송합니다.
3️⃣ 프로토콜 예시: HTTP 프로토콜
HTTP(HyperText Transfer Protocol) 는 클라이언트와 서버간의 웹 페이지 데이터를 주고받는 데 사용하는 프로토콜입니다.
클라이언트(예: 웹 브라우저)가 HTTP 요청을 보내면, 서버는 그에 대한 응답을 HTTP 형식으로 반환합니다.
클라이언트의 요청(Request) : GET /index.html HTTP/1.1
서버의 응답(Response) : HTTP/1.1 200 OK
이때, HTTP 프로토콜은 요청과 응답의 구조, 상태 코드(200, 404 등), 메서드(GET, POST 등) 등 모든 통신 규칙을 정의합니다.
4️⃣ 프로토콜의 필요성.
1️⃣ 호환성 확보.
다양한 장치와 시스템 간의 호환성을 보장하기 위해 표준화된 프로토콜이 필요합니다.
프로토콜이 없다면 서로 다른 장치나 시스템 간에 데이터를 주고받는 것이 매우 어려워질 것입니다.
2️⃣ 통신 표준 제공.
프로토콜은 데이터 형식, 에러 처리 방식, 전송 속도 등 여러 요소를 표준화하여 네트워크 상의 모든 장치가 동일한 규칙을 따르도록 합니다.
이를 통해 전 세계적으로 인터넷 통신이 가능해집니다.
3️⃣ 효율적인 통신.
프로토콜은 데이터 전송을 최적화하고, 오류 발생 시 복구할 수 있는 메커니즘을 제공합니다.
또한 통신 과정에서 발생할 수 있는 여러 문제를 해결할 수 있는 방법을 정의하여 안정적이고 효율적인 데이터 전송을 보장합니다.
5️⃣ 결론.
프로토콜(Protocol) 은 장치들 간의 통신을 위한 규칙과 표준을 정의한 중요한 요소입니다.
프로토콜이 없다면 네트워크 상의 다양한 시스템 간의 데이터 교환은 불가능할 것입니다.
인터넷과 네트워크 통신에서 프로토콜은 데이터의 정확한 전달을 보장하고, 네트워크 장치 간의 상호 운용성을 유지하기 위한 필수적인 구성 요소입니다.
-
🌐[Network] 네트워크 인터페이스 카드(NIC, Network Interface Card)란 무엇일까요?
🌐[Network] 네트워크 인터페이스 카드(NIC, Network Interface Card)란 무엇일까요?”
네트워크 인터페이스 카드(NIC, Network Interface Card)
네트워크 인터페이스 카드(NIC, Network Interface Card) 는 컴퓨터나 네트워크 장치가 네트워크에 연결하여 데이터를 송수신할 수 있게 해주는 하드웨어 장치입니다.
무선 네트워크 어댑터
네트워크 인터페이스 카드(이하 NIC)는 이더넷 포트 또는 무선 네트워크 어댑터를 통해 로컬 네트워크(LAN, Local Area Network) 또는 인터넷(WAN, Wide Area Network) 과 같은 네트워크에 연결되며, 데이터를 전송하는 데 필요한 물리적인 인터페이스를 제공합니다.
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
1️⃣ 네트워크 인터페이스 카드(NIC, Network Interface Card)의 주요 역할.
1️⃣ 데이터 송수신.
NIC는 네트워크 상의 다른 장치와 데이터를 송수신하는 역할을 합니다.
컴퓨터에서 데이터를 패킷 형태로 만들어 네트워크를 통해 보낼 수 있으며, 다른 장치에서 온 데이터를 받아 컴퓨터가 처리할 수 있는 형태로 변환합니다.
2️⃣ 네트워크 연결.
NIC는 컴퓨터나 장치를 네트워크에 물리적으로 연결합니다.
유선 네트워크의 경우 이더넷 케이블을 통해 연결되며, 무선 네트워크의 경우 Wi-Fi를 통해 네트워크에 연결할 수 있습니다.
3️⃣ MAC 주소 할당.
NIC는 고유한 MAC 주소를 가지고 있습니다.
MAC 주소는 네트워크에서 장치를 식별하는 고유 식별자로, 네트워크 상에서 데이터 패킷을 송수신할 때 특정 장치를 구분하는 데 사용됩니다.
4️⃣ 데이터 변환
컴퓨터 내부에서 사용되는 디지털 신호를 네트워크에서 사용할 수 있는 신호(유선의 경우 전기 신호, 무선의 경우 무선 신호)로 변환하여 네트워크를 통해 데이터를 전송합니다.
반대로, 네트워크에서 받은 신호를 컴퓨터가 이해할 수 있는 디지털 신호로 변환하는 기능도 수행합니다.
2️⃣ 네트워크 인터페이스 카드(NIC, Network Interface Card)의 구성요소.
1️⃣ 이더넷 포트.
유선 네트워크 카드에는 이더넷 포트가 있어, 이더넷 케이블을 사용해 네트워크에 연결할 수 있습니다.
이더넷 포트는 RJ-45 커넥터를 사용하여 네트워크 케이블을 연결합니다.
2️⃣ 무선 안테나.
무선 네트워크 카드에는 Wi-Fi 신호를 주고 받기 위한 무선 안테나가 장착 되어 있습니다.
이를 통해 무선 액세스 포인트(AP, Access Point)와 통신하여 네트워크에 접속합니다.
3️⃣ 칩셋(Chipset).
NIC에는 데이터 전송 및 처리를 관리하는 칩셋(Chipset)이 장착되어 있습니다.
이 칩셋은 네트워크 프로토콜을 처리하고, 데이터를 패킷으로 전환하거나 수신된 패킷을 해석하는 역할을 합니다.
4️⃣ MAC 주소.
NIC는 네트워크에서 MAC 주소라는 고유한 하드웨어 주소를 가집니다.
이 MAC 주소는 네트워크 상에서 장치를 고유하게 식별하는 데 사용됩니다.
3️⃣ 네트워크 인터페이스 카드(NIC, Network Interface Card)의 유형.
1️⃣ 유선 네트워크 카드(Ethernet NIC).
유선 NIC는 이더넷 케이블을 통해 네트워크에 연결하는 카드입니다.
일반적으로 데스크탑 컴퓨터, 서버, 프린터 등에서 많이 사용되며, 고속 데이터 전송이 가능합니다.
이더넷 카드의 속도는 10Mbps, 100Mbps, 1Gbps, 10Gbps 등의 다양한 속도를 지원할 수 있으며, CAT5e, CAT6 등의 케이블을 사용합니다.
2️⃣ 무선 네트워크 카드(Wirless NIC).
무선 NIC는 Wi-Fi를 통해 무선 네트워크에 연결하는 카드입니다.
일반적으로 노트북, 태블릿, 스마트폰 같은 휴대용 장치에서 많이 사용되며, 이동성과 유연성이 장점입니다.
무선 네트워크 카드는 다양한 Wi-Fi 표준(802.11a/b/g/n/ac/ax)을 지원하며, 무선 엑세스 포인트(AP, Access Point)와 통신하여 인터넷에 연결됩니다.
3️⃣ 내장형 네트워크 카드.
오늘날 대부분의 컴퓨터, 노트북, 스마트폰 등에는 내장형 NIC가 장착되어 있어, 별도의 네트워크 카드를 설치하지 않아도 네트워크에 연결할 수 있습니다.
이러한 내장형 NIC는 메인보드에 직접 통합되어 있습니다.
4️⃣ 외장형 네트워크 카드.
USB 네트워크 어댑터와 같은 외장형 NIC는 USB 포트에 연결하여 사용됩니다.
이러한 외장형 네트워크 카드는 주로 내장 NIC가 없는 장치에서 네트워크 기능을 확장하거나, 추가 네트워크 인터페이스가 필요할 때 사용됩니다.
4️⃣ 네트워크 인터페이스 카드의 동작 원리.
1️⃣ 데이터 패킷 전송.
NIC는 컴퓨터의 CPU나 메모리에서 데이터를 받아 이를 패킷으로 변환하고, 네트워크를 통해 전송합니다.
이때 데이터는 이더넷 케이블이나 Wi-Fi 신호를 통해 송신됩니다.
2️⃣ 데이터 패킷 수신.
NIC는 네트워크에서 전송된 데이터를 받아 컴퓨터가 처리할 수 있는 형식으로 변환하여 운영체제나 응용 프로그램에 전달합니다.
3️⃣ 네트워크 프로토콜 처리.
NIC는 다양한 네트워크 프로토콜(예: TCP/IP, UDP 등)을 처리합니다.
각 프로토콜에 따라 데이터를 올바르게 전송하고 수신하는 역할을 하며, 이를 통해 안정적인 네트워크 통신이 가능해집니다.
4️⃣ MAC 주소 기반 통신.
네트워크 상에서 데이터는 MAC 주소를 기반으로 각 장치에 전송됩니다.
NIC는 MAC 주소를 사용해 패킷이 올바른 목적지로 전달되도록 관리합니다.
예를 들어, 스위치나 라우터는 패킷의 MAC 주소를 확인하여 적절한 장치로 데이터를 전달합니다.
5️⃣ 네트워크 인터페이스 카드(NIC, Network Interface Card)의 중요성.
1️⃣ 네트워크 연결의 필수 장치.
NIC는 컴퓨터와 네트워크를 연결하는 가장 중요한 장치입니다.
NIC가 없으면 컴퓨터나 장치는 네트워크에 연결될 수 없으며, 인터넷 접속이나 로컬 네트워크에서의 파일 공유, 자원 공유 등이 불가능합니다.
2️⃣ 고속 데이터 전송.
NIC는 고속으로 데이터를 송수신할 수 있게 해주며, 특히 유선 네트워크에서는 1Gbps 이상의 속도를 제공하여 대용량 파일 전송이나 고속 인터넷 연결에 유리합니다.
3️⃣ 다양한 네트워크 환경 지원.
NIC는 유선과 무선 네트워크 모두를 지원하며, 이를 통해 다양한 네트워크 환경에서 장치들이 자유롭게 연결되고 통신할 수 있습니다.
4️⃣ 네트워크 보안.
NIC는 네트워크에서 보안 통신을 가능하게 하며, 데이터 암호화 및 인증을 처리하는 데 중요한 역할을 합니다.
이를 통해 데이터가 안전하게 송수신될 수 있습니다.
6️⃣ 결론.
NIC는 컴퓨터나 네트워크 장치가 네트워크에 연결하여 데이터를 송수신할 수 있도록 해주는 필수적인 하드웨어입니다.
NIC는 네트워크 연결을 제공하고, 데이터를 패킷 단위로 변환하여 네트워크 상의 다른 장치와 통신할 수 있도록 도와줍니다.
유선과 무선 NIC가 있으며, 오늘날 대부분의 장치에는 NIC가 내장형으로 포함되어 있지만, 추가적인 필요에 따라 외장형 NIC를 사용할 수도 있습니다.
-
🌐[Network] MAC(Media Access Control) 주소란 무엇일까요?
🌐[Network] MAC(Media Access Control) 주소란 무엇일까요?
MAC 주소(Media Access Control Address)는 네트워크 인터페이스 카드(NIC, Network Interface Card)에 할당된 고유한 식별자로, LAN(Local Area Network)과 같은 네트워크에서 장치들이 서로 통신할 때 사용됩니다.
MAC 주소는 네트워크 장치의 물리적인 하드웨어 주소이며, 네트워크에서 각 장치를 구분하는 데 사용됩니다.
MAC 주소는 이더넷과 Wi-Fi와 같은 여러 네트워크 기술에서 사용됩니다.
🙋♂️ 네트워크 인터페이스 카드(NIC, Network Interface Card)란 무엇일까요?
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
1️⃣ MAC 주소의 주요 특징.
1️⃣ 고유성.
MAC 주소는 네트워크 카드 제조사에서 전 세계적으로 유일하게 할당되며, 각 네트워크 장치(컴퓨터, 프린터, 스마트폰 등)에 고유하게 부여됩니다.
즉, 각 장치의 네트워크 카드(NIC, Network Interface Card)마다 하나의 고유한 MAC 주소가 존재합니다.
2️⃣ 48비트 주소.
MAC 주소는 48비트(6바이트) 크기의 이진수로 표현되며, 보통 16진수로 표기됩니다.
48비트는 총 281조 개의 고유한 MAC 주소를 생성할 수 있게 합니다.
예: 00:1A:2B:3C:4D:5E 또는 00-1A-2B-3C-4D-5E
3️⃣ 하드웨어 주소.
MAC 주소는 네트워크 인터페이스 카드(NIC, Network Interface Card) 자체에서 영구적으로 할당된 주소로, 장치가 네트워크에 물리적으로 연결될 때 사용됩니다.
IP 주소는 네트워크 내에서 동적으로 할당될 수 있지만, MAC 주소는 장치의 하드웨어에 고정되어 있습니다.
4️⃣ 계층 2 주소.
MAC 주소 OSI 7계층 모델의 데이터 링크 계층(Layer 2)에서 사용됩니다.
즉, MAC 주소는 같은 네트워크(LAN) 내에서 장치 간 데이터를 전달하는 데 사용됩니다.
네트워크의 라우터나 스위치는 MAC 주소를 사용하여 데이터를 적절한 장치로 전달합니다.
🙋♂️ OSI 7계층 모델
🙋♂️ OSI 7계층 모델 - 계층별 기능
2️⃣ MAC 주소의 구조.
MAC 주소는 두 부분으로 나누어집니다.
1️⃣ 제조사 식별자(OUI, Organizationally Unique Identifier)
MAC 주소의 첫 24비트(앞의 6자리 16진수)는 네트워크 카드 제조사를 나타냅니다.
이 부분은 OUI라고 하며, 각 네트워크 카드 제조사는 고유한 OUI를 할당받습니다.
예: 00:1A:2B -> 제조사의 OUI
2️⃣ 장치 식별자(Device Identifier)
MAC 주소의 나머지 24비트(뒤의 6자리 16진수)는 제조사가 해당 네트워크 카드나 장치에 부여한 고유 식별자입니다.
예: 3C:4D:5E -> 장치의 고유 식별자
3️⃣ 결합.
이 두 부분(OUI + Device Identifier)을 결합하여 하나의 고유한 MAC 주소가 만들어집니다.
예: 00:1A:2B:3C:4D:5E
3️⃣ MAC 주소의 역할.
1️⃣ 로컬 네트워크(LAN)에서 데이터 전송.
MAC 주소는 LAN(Local Area Network) 내에서 데이터 프레임을 전달할 때 사용됩니다.
네트워크 장치가 데이터를 보낼 때, 해당 데이터는 송신자의 MAC 주소를 포함하고, 스위치와 같은 네트워크 장치가 이를 읽어 적절한 목적지로 데이터를 전달합니다.
2️⃣ 데이터 링크 계층에서 통신.
MAC 주소는 데이터 링크 계층에서 장치 간 프레임을 전달하는 데 사용됩니다.
이더넷 네트워크에서 MAC 주소는 같은 네트워크 내의 장치 간에 데이터를 정확하게 전달하기 위한 핵심 역할을 합니다.
3️⃣ ARP(Address Resolution Protocol)와의 연관성.
ARP는 IP 주소와 MAC 주소를 연결해주는 프로토콜입니다.
네트워크에서 IP 주소를 통해 데이터를 전송 할 때, ARP는 해당 IP 주소에 대한 MAC 주소를 찾아내어, 데이터를 올바른 장치로 전달할 수 있게 합니다.
이는 특히 로컬 네트워크에서 중요한 역할을 합니다.
4️⃣ 네트워크 장치의 고유 식별.
MAC 주소는 각 장치의 고유한 하드웨어 주소이므로, 네트워크에서 장치를 고유하게 식별하는 데 사용됩니다.
네트워크 관리자들은 MAC 주소를 이용해 네트워크에 연결된 장치들을 추적하거나, 특정 장치에 대해 네트워크 접근을 제어할 수 있습니다.
4️⃣ MAC 주소와 IP 주소의 차이점.
MAC 주소는 하드웨어 주소로, 네트워크 인터페이스 카드(NIC, Network Interface Card)에 고유하게 할당된 고정된 주소입니다.
장치가 네트워크에 물리적으로 연결되면 MAC 주소를 통해 통신하게 됩니다.
IP 주소는 논리주소로, 네트워크 장치가 인터넷 프로토콜을 통해 통신할 때 사용됩니다.
IP 주소는 동적으로 할당되거나 수동으로 설정할 수 있으며, 네트워크 간에 데이터를 전송할 때 사용됩니다.
5️⃣ MAC 주소의 예시.
1️⃣ 이더넷 프레임에서의 사용.
네트워크에서 컴퓨터 A가 컴퓨터 B로 데이터를 전송하려고 할 때, 이더넷 프레임에는 송신자의 MAC 주소와 수신자의 MAC 주소가 포함됩니다.
이때, 네트워크 장비(예: 스위치)는 수신자의 MAC 주소를 기반으로 데이터를 올바른 장치(B)로 전달합니다.
[출발지 MAC 주소] -> [목적지 MAC 주소]
00:1A:2B:3C:4D:5E -> 00:1A:7C:8D:9F:0A
2️⃣ ARP(Address Resolution Protocol)를 통한 IP-MAC 매핑.
네트워크에서 컴퓨터가 IP 주소를 통해 데이터를 전송할 때, ARP 프로토콜이 IP 주소에 대응하는 MAC 주소를 찾아 프레임을 생성하고, 데이터를 전송합니다.
예를 들어, 컴퓨터 A(192.168.1.2)가 컴퓨터 B(192.168.1.3)로 데이터를 전송 할 때 A는 ARP를 사용해 컴퓨터 B의 MAC 주소를 찾아내어 데이터를 전송합니다.
6️⃣ MAC 주소의 보안 이슈.
1️⃣ MAC 주소 스푸핑(Spoofing)
MAC 주소는 네트워크에서 장치를 식별하는 데 사용되지만, MAC 주소 스푸핑이라는 공격을 통해 MAC 주소를 위조할 수 있습니다.
공격자는 자신의 장치의 MAC 주소를 다른 장치의 MAC 주소로 변경하여 네트워크에서 허가되지 않은 접근을 시도할 수 있습니다.
2️⃣ MAC 주소 필터링.
네트워크 보안을 강화하기 위해 일부 네트워크 관리자들은 MAC 주소 필터링을 사용하여 허용된 장치들만 네트워크에 접속할 수 있도록 설정합니다.
그러나 MAC 주소가 스푸핑될 수 있기 때문에, 보안 측면에서 완벽한 방법은 아닙니다.
7️⃣ 결론.
MAC 주소는 네트워크 장치에 고유하게 할당된 물리적 하드웨어 주소로, 로컬 네트워크에서 데이터 전송 및 장치 식별에 중요한 역할을 합니다.
MAC 주소는 OSI 모델의 데이터 링크 계층(Layer 2)에서 사용되며, 이더넷과 같은 네트워크 기술에서 장치 간 통신을 가능하게 합니다.
MAC 주소는 고유하며 변경되지 않는 반면, IP 주소는 논리적이고 변경될 수 있습니다.
MAC 주소는 보안과 통신에서 중요한 역할을 하지만, 스푸핑 등의 보안 위협도 존재할 수 있습니다.
-
🌐[Network] 이더넷(Ethernet)이란 무엇일까요?
🌐[Network] 이더넷(Ethernet)이란 무엇일까요?
이더넷(Ethernet) 은 컴퓨터 네트워크 기술 중 하나로, LAN(Local Area Network, 근거리 통신망) 에서 주로 사용됩니다.
이더넷은 컴퓨터와 네트워크 장치들을 유선으로 연결하여 데이터를 송수신할 수 있도록 하는 표준 프로토콜입니다.
이더넷은 전 세계적으로 가장 널리 사용되는 LAN 기술이며, 빠르고 안정적인 데이터 전송을 제공합니다.
🙋♂️ LAN(Local Area Network)이란 무엇일까요?
1️⃣ 이더넷의 주요 특징.
1️⃣ 유선 네트워크 기술.
이더넷은 주로 이더넷 케이블(UTP, CAT5e, CAT6 등) 을 사용하여 네트워크 장치들을 물리적으로 연결합니다.
각 장치는 네트워크 인터페이스 카드(NIC, Network Interface Card) 를 통해 이더넷 네트워크에 연결됩니다.
2️⃣ 고속 데이터 전송.
이더넷은 고속 데이터 전송을 지원합니다.
초기 이더넷은 10Mbps 속도를 제공했지만, 현재는 1Gbps(1기가바이트 이더넷), 10Gbps 또는 그 이상의 속도를 제공하는 고속 이더넷이 널리 사용됩니다.
3️⃣ 통신 방식.
이더넷은 패킷 교환 방식을 사용하여 데이터를 전송합니다.
데이터를 작은 패킷으로 분할하여 전송하며, 각 패킷은 송신지와 목적지의 MAC 주소를 포함하여 네트워크 장치 간에 이동합니다.
CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 기술을 사용하여, 네트워크 상에서 데이터 충돌을 감지하고 처리합니다.(현대의 이더넷은 스위치 기반이므로 충돌이 거의 발생하지 않음.)
4️⃣ 이더넷 스위치.
현대의 이더넷 네트워크는 스위치를 사용하여 데이터를 효율적으로 전송합니다.
스위치는 네트워크에 연결된 장치들 간의 데이터 트래픽을 관리하고 데이터를 목적지 MAC 주소에 따라 적절한 장치로 전달합니다.
5️⃣ 표준화.
이더넷은 IEEE 802.3이라는 국제 표준에 의해 정의된 네트워크 기술입니다.
이 표준은 물리적 연결 방식, 데이터 전송 방식, 신호 처리 등을 규정하여, 전 세계에서 호환 가능한 네트워크를 구축할 수 있도록 합니다.
2️⃣ 이더넷의 주요 구성 요소.
1️⃣ 이더넷 케이블.
이더넷은 유선 네트워크이기 때문에 이더넷 케이블을 통해 장치들을 연결합니다.
일반적으로 UTP(Unshielded Twisted Pair) 케이블이 사용되며, CAT5e, CAT6 등의 케이블이 데이터 전송 속도에 따라 선택됩니다.
CAT5e : 1Gbps 속도를 지원하는 케이블.
CAT6 : 10Gbps까지 지원하는 케이블.
2️⃣ 네트워크 인터페이스 카드(NIC, Network Interface Card).
이더넷에 연결된 각 장치(컴퓨터, 프린터 등)는 네트워크 인터페이스 카드(NIC, Network Interface Card) 를 통해 이더넷 네트워크와 통신합니다.
NIC는 데이터를 송수신하고, 장치 간의 통신을 처리하는 하드웨어입니다.
3️⃣ 스위치(Switch).
이더넷 스위치는 네트워크의 중앙에서 여러 장치를 연결하고, 각 장치가 보낸 데이터를 올바른 목적지로 전달하는 역할을 합니다.
스위치는 각 장치의 MAC 주소를 기억하고, 데이터를 적절한 포트로 전달함으로써 네트워크 효율을 높입니다.
4️⃣ 라우터(Router).
이더넷 네트워크에서 라우터는 네트워크 외부(예: 인터넷)와 통신할 수 있도록 연결을 제공합니다.
라우터는 이더넷 네트워크와 외부 네트워크 간의 데이터를 주고받는 역할을 합니다.
3️⃣ 이더넷의 작동 원리.
1️⃣ 패킷 전송.
이더넷은 데이터를 패킷이라는 작은 단위로 분할하여 전송합니다.
각 패킷은 데이터를 포함하며, 출발지 MAC 주소와 목적지 MAC 주소 등의 정보를 포함합니다.
2️⃣ 스위치를 통한 전달.
네트워크에 연결된 장치들이 스위치를 통해 데이터를 주고받습니다.
스위치는 장치들의 MAC 주소를 기억하고, 데이터를 목적지 장치로 정확하게 전달합니다.
이를 통해 네트워크 효율성이 증가하고, 충돌이 최소화됩니다.
3️⃣ 데이터 충돌 방지.
이더넷은 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 라는 기술을 사용하여 데이터 충돌을 감지하고, 충돌이 발생하면 데이터를 재전송하는 방식으로 동작합니다.
그러나 현대의 스위치 기반 이더넷에서는 충돌이 거의 발생하지 않기 때문에 이 메커니즘은 잘 사용되지 않습니다.
3️⃣ 이더넷의 유형.
1️⃣ 10Base-T (초기 이더넷)
초기의 이더넷 표준으로, 10Mbps 속도를 제공하며, 주로 구리 케이블을 사용하여 연결됩니다.
오늘날에는 거의 사용되지 않으며, 더 빠른 이더넷 기술로 대체되었습니다.
2️⃣ Fast Ethernet
100Base-TX라고도 불리며, 100Mbps 속도를 제공하는 이더넷입니다.
이전의 10Mbps 이더넷보다 빠른 데이터 전송을 지원하며, 일부 구현 네트워크 환경에서 여전히 사용됩니다.
3️⃣ Gigabit Ethernet
10 Gigabit Ethernet
10Gbps 속도를 제공하는 고속 이더넷으로, CAT6 이상의 고성능 케이블을 사용하여 연결됩니다.
데이터 센터, 서버, 고속 네트워크 환경에서 주로 사용됩니다.
4️⃣ PoE(Power over Ethernet)
PoE는 이더넷 케이블을 통해 전력과 데이터를 동시에 전송할 수 있는 기술입니다.
주로 IP 카메라, 무선 엑세스 포인트(AP), VoIP 전화기 등에서 사용되며, 별도의 전원 케이블 없이 네트워크 장치에 전력을 공급할 수 있습니다.
4️⃣ 이더넷의 장점.
1️⃣ 빠르고 안정적.
이더넷은 유선 네트워크로, 매우 빠르고 안정적인 데이터 전송을 제공합니다.
특히 Gigabit Ethernet 및 10Gbps 이더넷은 고속 네트워크 환경에서 매우 유리합니다.
2️⃣ 보안성.
이더넷은 유선으로 연결되기 때문에 무선 네트워크(Wi-Fi) 에 비해 보안 위협이 적습니다.
외부에서 물리적으로 접근하지 않는 한 네트워크 통신을 가로채는 것이 어렵습니다.
3️⃣ 네트워크 혼잡 감소.
스위치 기반 이더넷에서는 각 장치 간의 통신 경로가 충돌 없이 독립적으로 처리되므로, 네트워크 혼잡이 적고 데이터 전송 속도가 빠릅니다.
4️⃣ 비용 효율적.
이더넷은 전 세계에서 표준화된 기술로, 저렴한 비용으로 네트워크를 구축할 수 있습니다.
이더넷 장비와 케이블은 널리 사용되기 때문에 비용이 낮고 쉽게 구할 수 있습니다.
5️⃣ 이더넷의 단점.
1️⃣ 이동성 부족.
이더넷은 유선 네트워크이기 때문에, 사용자가 네트워크에 물리적으로 연결된 상태에서만 통신이 가능합니다.
무선 네트워크(Wi-Fi) 와 달리 자유롭게 이동하며 사용할 수 없습니다.
2️⃣ 배선 복잡성.
여러 장치를 연결해야 하는 대규모 네트워크에서는 많은 이더넷 케이블이 필요하며, 이로 인해 물리적 배선이 복잡해질 수 있습니다.
케이블 관리가 어려울 수 있습니다.
5️⃣ 결론.
이더넷(Ethernet) 은 LAN(Local Area Network)에서 유선으로 데이터를 송수신하는데 사용되는 대표적인 네트워크 기술입니다.
이더넷은 고속, 안정성, 보안성에서 뛰어나며, 전 세계적으로 가장 널리 사용되는 네트워크 표준입니다.
현대의 고속 이더넷 기술(1Gbps, 10Gbps)은 빠르고 효율적인 네트워크 통신을 제공하며, 특히 대규모 데이터 센트와 기업 네트워크에서 중요한 역할을 합니다.
-
🌐[Network] LAN(Local Area Network)이란 무엇일까요?
🌐[Network] LAN(Local Area Network)이란 무엇일까요?
LAN(Local Area Network, 근거리 통신망) 은 한정된 지역 내에서 장치들 간에 네트워크 연결을 제공하는 통신망을 말합니다.
LAN은 일반적으로 한 건물이나 가정, 사무실과 같은 작은 지리적 범위 내에서 컴퓨터, 프린터, 서버, 스마트 기기 등 여러 장치들을 연결하여 데이터 통신을 가능하게 합니다.
1️⃣ LAN의 주요 특징.
1. 제한된 지리적 범위.
LAN은 보통 한정된 지역(집, 사무실, 학교, 캠퍼스 등) 내에서 운영됩니다.
WAN(Wide Area Network)이나 MAN(Metropolitan Area Network)과 비교하면, 상대적으로 작은 범위에서 장치들을 연결합니다.
2. 고속 데이터 전송.
LAN은 일반적으로 고속 데이터 전송을 지원합니다.
이더넷 기반 LAN의 경우 100Mbps에서 1Gbps, 심지어 10Gbps 이상의 속도를 지원하는 네트워크 환경도 있습니다.
이는 인터넷보다 빠른 속도를 제공하여, 장치 간의 데이터 전송을 더 효율적으로 처리할 수 있습니다.
3. 저비용.
LAN은 제한된 범위 내에서 구축되기 때문에, 대규모 네트워크(예: WAN(Wide Area Network))에 비해 구축 비용이 상대적으로 저렴합니다.
네트워크 장비와 배선 설치 등이 간단하고 저렴하게 처리될 수 있습니다.
4. 데이터 및 자원 공유.
LAN을 통해 데이터와 자원(프린터, 파일 서버 등) 을 여러 장치와 사용자 간에 공유할 수 있습니다.
예를 들어, 한 사무실 내에서 LAN을 통해 여러 컴퓨터가 하나의 프린터를 공유하거나, 파일 서버에 저장된 데이터를 서로 접근하고 수정할 수 있습니다.
5. 네트워크 보안.
LAN은 로컬 네트워크이기 때문에, 외부로부터 침입을 방지하는 다양한 보안 메커니즘을 쉽게 적용할 수 있습니다.
예를 들어, 방화벽, VPN, 암호화 등을 통해 네트워크 보안을 강화할 수 있습니다.
2️⃣ LAN의 구성 요소.
1. 네트워크 장비.
LAN을 구성하는 데 필요한 네트워크 장비들은 다음과 같습니다.
스위치(Switch) : 네트워크에서 데이터를 올바른 장치로 전달하는 역할을 합니다. 각 장치를 스위치에 연결하면, 스위치는 데이터를 목적지 MAC 주소에 따라 적절한 장치로 전달합니다.
라우터(Router) : LAN을 외부 네트워크(예: 인터넷)와 연결하는 장치입니다. LAN 내에서 데이터를 전송할 때는 스위치가 주로 사용되지만, 외부 네트워크와의 통신을 위해서는 라우터가 필요합니다.
액세스 포인트(AP, Access Point) : 무선 장치를 네트워크에 연결할 수 있게 해주는 장치입니다. 유선 네트워크를 무선으로 확장하여, 무선 기기(노트북, 스마트폰 등)가 LAN에 연결될 수 있게합니다.
2. 네트워크 케이블.
이더넷 케이블은 유선 LAN에서 각 장치(컴퓨터, 스위치, 라우터)를 물리적으로 연결하는 데 사용됩니다.
일반적으로 CAT5e, CAT6 같은 케이블이 사용되며, 데이터 전송 속도에 따라 다르게 선택됩니다.
3. 네트워크 인터페이스 카드(NIC).
네트워크 카드 또는 네트워크 인터페이스 카드(NIC, Network Interface Card) 는 각 장치를 LAN에 연결하는 역할을 합니다.
NIC는 데이터를 전송할 수 있도록 컴퓨터에 네트워크 포트를 제공하며, 유성 또는 무선으로 LAN에 연결됩니다.
4. 장치들.
컴퓨터, 프린터, 서버, 스마트폰 등의 장치들이 LAN에 연결되어 서로 데이터를 주고받거나 자원을 공유할 수 있습니다.
3️⃣ LAN의 유형.
1. 유선 LAN(Ethernet LAN).
유선 LAN은 이더넷 케이블을 사용하여 각 장치를 물리적으로 연결하는 방식입니다.
일반적으로 스위치에 여러 장치를 연결하고, 스위치가 데이터를 올바른 목적지로 전송합니다.
유선 LAN은 신뢰성 있고 속도가 빠르며, 보안 면에서도 유리합니다.</a>
2. 무선 LAN(Wireless LAN, WLAN).
무선 LAN은 Wi-Fi를 통해 장치들이 무선으로 연결되는 네트워크입니다.
무선 엑세스 포인트(AP, Access Point)를 통해 스마트폰, 노트북 같은 무선 장치들이 네트워크에 접속할 수 있습니다.
무선 LAN은 이동성과 유연성이 뛰어나지만, 유선 LAN에 비해 상대적으로 속도가 느기고, 보안 위협이 더 클 수 있습니다.
3. 가상 LAN(Virtual LAN, VLAN)
VLAN은 물리적으로 같은 네트워크 내에 있는 장치들을 논리적으로 구분하여, 마치 서로 다른 네트워크처럼 동작하게 합니다.
예를 들어, 하나의 물리적 네트워크에서 부서별로 논리적으로 네트워크를 나누어, 서로 다른 트래픽을 분리하고 관리할 수 있습니다.
4️⃣ LAN의 장점.
1. 고속 데이터 전송.
LAN은 인터넷 연결보다 빠른 속도를 제공합니다.
특히 유선 LAN은 1Gbps 이상의 속도를 제공할 수 있어, 대용량 파일 전송이나 고성능 네트워크 작업에 적합합니다.
2. 자원 공유.
LAN을 통해 여러 사용자가 프린터, 파일 서버, 데이터베이스 등의 자원을 쉽게 공유할 수 있습니다.
3. 비용 절감.
자원 공유를 통해 비용을 절감할 수 있습니다.
예를 들어, 여러 컴퓨터가 하나의 프린터를 공유하면, 각 컴퓨터마다 프린터를 구입할 필요가 없습니다.
4. 보안.
LAN은 내부 네트워크이기 때문에, 외부 위협으로부터 보호하기가 상대적으로 쉽습니다.
내부 사용자만 네트워크에 접근할 수 있도록 설정할 수 있으며, 네트워크 보안을 강화할 수 있습니다.
5. 네트워크 관리 용이.
LAN은 소규모 네트워크이기 때문에, 네트워크 관리와 유지보수가 상대적으로 간단합니다.
네트워크 장애가 발생했을 때 신속하게 문제를 파악하고 해결할 수 있습니다.
5️⃣ LAN의 단점.
1. 물리적 범위 제한.
LAN은 지리적으로 제한된 범위 내에서만 사용 가능하며, 먼 거리에 있는 장치를 연결하는 데에는 적합하지 않습니다.
2. 무선 LAN 보안 문제.
무선 LAN은 상대적으로 보안 위협에 더 취약할 수 있습니다.
와이파이 신호는 외부로 유출될 수 있기 때문에 불법적인 접근을 방지하기 위한 추가적인 보안 조치가 필요합니다.
3. 유선 LAN의 배선 문제.
유선 LAN은 케이블 설치가 필요하기 때문에, 물리적인 공간이 복잡해질 수 있으며, 이동성이 제한될 수 있습니다.
6️⃣ LAN과 다른 네트워크 유형과의 비교.
1. WAN(Wide Area Network)
WAN은 광범위한 지리적 범위를 아우르는 네트워크입니다.
여러 지역에 거쳐있는 네트워크나 인터넷 같은 거대한 네트워크가 WAN에 해당합니다.
LAN은 제한된 지역 내에서만 작동하는 반면, WAN은 여러 도시, 국가 또는 전 세계적으로 연결할 수 있습니다.
2. MAN(Metropolitan Area Network)
MAN은 도시 수준에서 운영되는 네트워크로, LAN보다는 크고 WAN보다는 작은 규모의 네트워크입니다.
대학교 캠퍼스, 기업 본사 등이 도시 또는 캠퍼스 전역을 커버하는 네트워크로 MAN을 구축할 수 있습니다.
7️⃣ 결론.
LAN(Local Area Network) 은 제한된 지역 내에서 장치 간의 네트워크 연결을 제공하여 데이터 통신과 자원 공유를 가능하게 하는 네트워크입니다.
LAN은 고속 데이터 전송과 효율적인 자원 공유를 제공하며, 주로 가정, 사무실, 학교 등에서 사용됩니다.
유선 LAN과 무선 LAN이 있으며, 각각 장단점이 있습니다.
LAN은 현대 컴퓨팅 환경에서 필수적인 네트워크 구성 요소로, 내부 네트워크 관리와 데이터 통신을 쉽게 처리할 수 있게 합니다.
-
🌐[Network] 네트워크, 포트, 도메인 이름, IP, DNS
🌐[Network] 네트워크, 포트, 도메인 이름, IP, DNS.
1️⃣ 네트워크란 무엇인가요?
네트워크(Network) 는 여러 대의 컴퓨터나 장치들이 서로 연결되어 데이터를 주고받는 시스템을 말합니다.
네트워크는 이러한 장치들 간에 정보를 교환하고 자원을 공유하는 것을 가능하게 합니다.
인터넷을 포함한 모든 디지털 통신 환경에서 네트워크는 필수적인 요소이며, 네트워크의 규모나 종류에 따라 다양한 방식으로 구현됩니다.
1. 네트워크의 주요 개념.
1. 장치(노드, Node).
네트워크에 연결된 컴퓨터, 스마트폰, 서버, 라우터 등 각 장치는 “노드”라고 부르며, 이들은 서로 데이터를 주고받습니다.
2. 통신 매체.
네트워크에서 장치들이 데이터를 주고받기 위해 사용하는 물리적 또는 무선 매체입니다.
대표적인 예로는 유선 네트워크와 무선 네트워크가 있습니다.
유선 네트워크.
이더넷 케이블, 광섬유 케이블 등을 통해 데이터가 전송됩니다.
무선 네트워크.
와이파이, 블루투스, 5G와 같은 무선 통신 기술을 통해 데이터를 주고받습니다.
3. 프로토콜.
네트워크에서 통신하기 위한 규약이나 규칙을 말합니다.
TCP/IP(Transmission Control Protocol / Internet Protocol) 가 대표적인 프로토콜로, 인터넷에서 데이터를 주고 받는데 사용됩니다.
4. 네트워크 주소.
각 장치는 네트워크 상에서 고유한 주소(IP 주소)를 가지고 있으며, 이를 통해 데이터를 정확한 대상에게 전송할 수 있습니다.
2. 네트워크의 유형.
1. LAN(Local Area Network, 근거리 통신망)
작은 범위에서 사용되는 네트워크로, 학교, 회사, 가정 내에서 장치들을 연결할 때 사용됩니다.
빠른 속도와 낮은 지연 시간으로 장치들 간에 자원을 쉽게 공유할 수 있습니다.
예: 가정에서 사용되는 와이파이 네트워크, 회사의 내부 네트워크 등.
2. WAN(Wide Area Network, 광역 통신망)
넓은 지리적 범위를 아우르는 네트워크로, 도시, 국가, 전 세계에 걸쳐 여러 LAN을 연결합니다.
대표적인 예로 인터넷이 있으며, 전 세계의 컴퓨터와 장치를 연결합니다.
3. MAN(Metropolitan Area Network, 도시권 통신망)
도시 또는 특정 지역 내에서 여러 LAN을 연결하여 형성된 네트워크입니다.
LAN보다 범위는 넓지만 WAN보다는 좁은 범위를 커버합니다.
도시 내 기업 본사의 여러 지점을 연결하는 경우가 이에 해당합니다.
4. PAN(Personal Area Network, 개인 통신망)
개인 장치들 간의 네트워크로, 주로 블루투스 또는 USB로 연결된 스마트폰, 태블릿, 노트북 등의 장치들이 여기에 속합니다.
3. 네트워크의 역할.
1. 데이터 공유.
네트워크를 통해 파일, 이미지, 문서 등을 서로 다른 장치로 전송하고, 사용자들이 여러 자원을 함께 사용할 수 있습니다.
예: 네트워크 프린터를 통해 여러 컴퓨터에서 한 대의 프린터를 사용할 수 있습니다.
2. 자원 공유.
네트워크를 통해 서버, 프린터, 스토리지와 같은 하드웨어 자원을 여러 사용자나 장치가 공동으로 사용할 수 있습니다.
3. 애플리케이션 지원.
웹 브라우저, 이메일 클라이언트, 클라우드 서비스와 같은 애플리케이션 네트워크를 통해 통신하고 데이터를 주고 받습니다.
4. 네트워크의 구성 요소.
1. 라우터(Router)
네트워크 상에서 데이터를 전달하는 장치로, 여러 네트워크 간의 트래픽을 관리하고 최적의 경로를 찾아 데이터를 전달합니다.
2. 스위치(Switch)
네트워크 내 장치들이 데이터를 주고받을 수 있도록 연결해주는 장치로, 주로 LAN에서 사용됩니다.
3. 방화벽(Firewall)
네트워크 보안을 위해 외부의 불법적인 접근을 차단하고, 네트워크 내부의 데이터를 보호하는 장치입니다.
4. 서버(Server)
네트워크에서 데이터를 제공하거나 처리하는 장치로, 웹 페이지 제공, 데이터 저장, 애플리케이션 실행 등을 담당합니다.
5. 네트워크 프로토콜.
1. TCP/IP
인터넷과 대부분의 네트워크에서 사용되는 핵심 프로토콜로, 데이터를 패킷으로 나누어 전달하고 목적지에서 재조합하는 방식입니다.
2. HTTP/HTTPS
웹 브라우저와 서버 간에 데이터를 주고받는 프로토콜입니다.
HTTP는 SSL/TLS 암호화를 통해 보안을 강화한 버전입니다.
3. FTP
파일 전송 프로토콜로, 네트워크 상에서 파일을 업로드하거나 다운로드하는 데 사용됩니다.
4. DNS
도메인 이름을 IP 주소로 변환하는 시스템으로, 사람이 기억하기 쉬운 도메인 이름을 통해 해당 IP 주소의 서버에 접근할 수 있게 해줍니다.
6. 네트워크의 보안.
네트워크는 외부 공격이나 악의적인 사용자로부터 보호하기 위해 다양한 보안 장치와 소프트웨어를 사용합니다.
네트워크 보안에는 암호화, 인증, 방화벽 설정, 침입 탐지 시스템(IDS) 등 이 포함됩니다.
7. 요약.
네트워크는 여러 컴퓨터나 장치들이 상호 연결되어 데이터를 주고받을 수 있도록 하는 시스템입니다.
네트워크는 장치 간의 데이터 및 자원 공유를 가능하게 하며, LAN, WAN, PAN 등의 다양한 유형으로 구현될 수 있습니다.
인터넷 역시 세계 최대읜 네트워크이며, 네트워크는 우리 일상 생활과 비즈니스 환경에서 필수적인 요소로 자리 잡고 있습니다.
2️⃣ Port란 무엇인가요?
네트워크에서 포트(port) 는 컴퓨터나 네트워크 장치에서 특정한 프로세스나 서비스를 구분하기 위해 사용되는 가상의 논리적 통신 경로입니다.
네트워크 상에서 하나의 장치가 여러 서비스를 동시에 제공할 수 있기 때문에, 포트 번호 는 동일한 IP 주소 내에서 서로 다른 서비스들을 구분하는 중요한 역할을 합니다.
1. 포트의 주요 개념.
1. 포트 번호.
포트는 숫자로 구분되며, 일반적으로 0번부터 65535번까지의 범위를 가집니다.
포트 번호는 통신하는 애플리케이션이나 프로세스를 구별하는 데 사용됩니다.
0번 ~ 1023번 : 잘 알려진 포트(well-known ports) 로, 주요 프로토콜이나 서비스가 이 범위의 포트를 사용합니다.
예시
HTTP(웹) : 포트 80
HTTPS(보안 웹) : 포트 443
FTP(파일 전송) : 포트 21
SMTP(이메일 전송) : 포트 25
1024번 ~ 49151번 : 등록된 포트(registered ports) 로, 특정 애플리케이션이 예약하여 사용하는 포트입니다.
49152번 ~ 65535번 : 동적 포트 / 사설 포트(dynamic or private ports) 로, 임시 연결이나 사용자 정의 애플리케이션에서 사용합니다.
2. 포트의 역할.
네트워크 상에서 클라이언트가 서버에 접속할 때, IP 주소를 통해 서버의 위치를 식별하고, 포트 번호를 통해 해당 서버에서 동작하는 특정 서비스(프로세스)를 구분합니다.
예를 들어, 웹 브라우저가 example.com에 접속할 때, 기본적으로 HTTP 요청을 위해 포트 80을 사용하거나 HTTPS 요청을 위해 포트 443을 사용합니다.
2. 포트의 사용 예시.
클라이언트-서버 통신.
서버는 특정 포트에서 대기 상태(listening)로 클라이언트의 요청을 기다립니다.
예를 들어, 웹 서버는 보통 포트 80(HTTP) 또는 443(HTTPS)에서 요청을 수신합니다.
클라이언트는 서버의 IP 주소와 함께 특정 포트로 요청을 보냅니다.
이때 클라이언트는 임시 포트를 사용하여 서버와의 통신 경로를 설정합니다.
동시 실행 서비스 구분.
동일한 서버에서 여러 서비스가 동작하는 경우, 각각의 서비스는 다른 포트를 통해 통신을 처리합니다.
예를 들어, 한 서버에서 웹 서버가 포트 80을 사용하면서 동시에 데이터베이스 서버는 포트 3306(MySQL)에서 실행될 수 있습니다.
3. 포트 번호를 통한 통신 예시.
웹 브라우저와 웹 서버 간의 통신.
사용자가 웹 브라우저에 http://example.com을 입력하면, 브라우저는 DNS 서버를 통해 example.com의 IP 주소를 확인합니다.
브라우저는 그 IP 주소로 포트 80(HTTP)을 통해 요청을 보냅니다.
웹 서버는 포트 80에서 클라이언트의 요청을 수신하고, 처리 후 응답을 보냅니다.
이때, 클라이언트는 자신의 컴퓨터에서 임의의 동적 포트(예: 50000번대)를 사용하여 통신을 시작합니다.
4. 방화벽과 포트.
네트워크 보안에서는 방화벽(firewall) 이 중요한 역할을 하며, 포트 기반으로 네트워크 트래픽을 제어합니다.
방화벽은 허용된 포트에서만 트래픽을 수신하거나 송신하도록 설정할 수 있습니다.
예를 들어, 웹 서버는 80번과 443번 포트만 열어 두고, 나머지 포트는 차단하여 보안을 강화할 수 있습니다.
5. 요약
포트는 네트워크 상에서 동일한 IP 주소를 사용하는 여러 서비스나 애플리케이션을 구분하기 위한 숫자 기반의 논리적 경로입니다.
포트 번호는 클라이언트와 서버 간의 통신에서 서비스를 식별하고, 각 포트는 특정 애플리케이션이 네트워크 트래픽을 처리할 수 있게 해줍니다.
특정 포트는 표준 서비스에 예약되어 있으며, 네트워크 보안에서 방화벽 등을 통해 포트를 관리하고 보호할 수 있습니다.
3️⃣ 도메인 이름(domain name)이란 무엇인가요?
도메인 이름(domain name)은 인터넷에서 웹사이트나 특정 네트워크 자원을 식별하기 위해 사용되는 고유한 텍스트 기반의 주소입니다.
도메인 이름은 사람이 읽을 수 있는 형태로, IP 주소와 연결되어 있습니다.
실제로 인터넷에서 모든 장치와 서버는 숫자로 된 IP 주소로 통신하지만, 사람이 기억하고 사용하기 편리하도록 도메인 이름을 사용합니다.
1. 도메인 이름의 구성.
도메인 이름은 여러 부분으로 구성되며, 각 부분은 점(.)으로 구분됩니다.
일반적인 도메인 이름의 구성요소.
최상위 도메인(TLD, Top-Level Domain)
도메인의 가장 마지막 부분으로, 주로 .com, .org, .net, .gov 등의 일반적인 TLD 또는 국가 코드 도메인(.kr, .jp, .uk 등)으로 끝납니다.
예: example.com 에서 .com이 TLD 입니다.
두 번째 레벨 도메인(SLD, Second-Level Domain)
TLD 바로 앞에 위치하며, 주로 회사나 단체의 이름 또는 웹사이트의 이름이 들어갑니다.
예: example.com 에서 example이 SLD입니다.
서브도메인
때때로 SLD 앞에 추가되는 부분으로, 주로 특정 하위 섹션이나 서비스를 나타냅니다.
예: blog.example.com에서 blog가 서브 도메인입니다.
따라서, 도메인 이름은 다음과 같은 구조를 가집니다.
서브 도메인.두 번째 레벨 도메인.최상위 도메인
예: www.example.com에서
www는 서브도메인(생략 가능)
example은 두 번째 레벨 도메인
com은 최상위 도메인
2. 도메인 이름의 역할.
1. IP 주소 대체.
도메인 이름은 사람이 읽기 쉽고 기억하기 쉽도록 IP 주소(예: 192.198.1.1)를 대신합니다.
DNS(Domain Name System) 서버는 도메인 이름을 해당 IP 주소로 변환하는 역할을 하여 웹 브라우저가 올바른 서버에 연결되도록 합니다.
2. 식별 및 브랜드.
도메인 이름은 특정 웹사이트나 서비스의 정체성을 나타내며, 회사나 단체, 개인의 온라인 존재를 대표합니다.
예를 들어, google.com은 구글의 웹사이트를 식별하는 데 사용됩니다.
3. 웹 주소(URL).
도메인 이름은 웹 주소(URL)의 중요한 부분을 구성합니다.
URL은 도메인 이름과 더불어 특정 페이지나 리소스를 가리킵니다.
예: https://www.example.com/about에서 www.example.com이 도메인 이름이고, /about은 특정 페이지 경로입니다.
3. 도메인 이름의 등록.
도메인 이름을 소유하려면 도메인 등록 기관을 통해 원하는 도메인을 등록해야 합니다.
등록된 도메인은 일정 기간동안(주로 1년 단위) 사용 가능하며, 이후 갱신해야 합니다.
도메인 이름은 전 세계적으로 고유해야 하므로, 이미 등록된 도메인은 다른 사람이 사용할 수 없습니다.
4. 요약.
도메인 이름은 IP 주소를 대신해 인터넷 상의 리소스를 쉽게 식별하고 접근할 수 있도록 만들어진 텍스트 기반의 주소입니다.
이를 통해 사람들은 기억하기 쉬운 이름을 사용하여 웹사이트에 접근할 수 있고, 도메인 이름은 네트워크 자원의 온라인 정체성을 나타내는 중요한 역할을 합니다.
4️⃣ IP란 무엇인가요?
IP(Internet Protocol)는 인터넷이나 네트워크 상에서 데이터를 주고 받기 위한 규약(프로토콜)입니다.
IP는 네트워크 상에서 장치들이 서로를 식별하고 통신할 수 있도록 하는 주소 체계와 데이터 전송 방식을 정의합니다.
즉, IP는 인터넷 통신의 기본이 되는 프로토콜로, 모든 인터넷 연결 장치는 고유한 IP 주소를 가지고 있으며, 이 주소를 통해 데이터를 주고 받습니다.
1. IP 주소.
IP 주소(Internet Protocol Address) 는 네트워크에 연결된 각 장치(컴퓨터, 스마트폰, 서버 등)를 식별하기 위해 할당된 고유한 숫자입니다.
IP 주소는 컴퓨터 네트워크 상에서 데이터를 송수신할 때 발신자와 수신자의 주소 역할을 합니다.
IPv4 와 IPv6 두 가지 버전이 있습니다.
IPv4
32비트 주소 체계를 사용하여 약 43억 개의 주소를 제공합니다.
IPv4 주소는 보통 4개의 10진수로 표현되며, 예를 들어 “192.168.0.1”과 같은 형태를 띱니다.
IPv6
128비트 주소 체계를 사용하여 훨씬 더 많은 주소를 제공하여, 점점 더 많은 장치가 인터넷에 연결됨에 따라 IPv6가 필요하게 되었습니다.
IPv6 주소는 16진수로 표현되며, 예를 들어”2001:0db8:85a:0000:0000:8a2e:0370:7334” 같은 형태를 가집니다.
2. IP의 기능.
IP는 데이터를 네트워크 상에서 한 장치에서 다른 장치로 전송하는 데 필요한 방법과 경로를 결정합니다.
이 과정은 여러 단계를 거쳐 이루어지며, IP는 각 데이터를 작은 패킷으로 나누어 전달하는 역할을 합니다.
패킷 분할
데이터를 작은 패킷으로 분할하여 전송합니다.
이 패킷들은 각기 다른 경로를 통해 목적지로 전달될 수 있으며, 도착 후 다시 조립되어 원래의 데이터로 복원됩니다.
주소 지정
IP는 발신자와 수신자의 IP 주소를 포함하여 패킷이 어느 위치에서 출발하고 어느 위치로 가야 하는지 명확히 합니다.
라우팅
IP 패킷은 여러 네트워크 장비(라우터 등)를 통해 목적지로 전달됩니다.
IP 프로토콜은 이 과정에서 패킷이 최적의 경로로 이동할 수 있도록 라우팅합니다.
3. IP의 역할.
데이터 전달.
IP는 네트워크 상에서 데이터를 전달하는 가장 기본적인 프로토콜입니다.
이는 웹 페이지 로드, 이메일 송수신, 파일 전송 등 거의 모든 네트워크 작업에서 사용됩니다.
네트워크 계층의 역할.
IP는 OSI(Open System Interconnection) 모델의 네트워크 계층(3계층)에서 작동하며, 데이터를 패킷으로 분할하고 이를 전송할 때 사용되는 주소 체계와 경로 결정 방식을 담당합니다.
무신뢰성.
IP 자체는 “무신뢰성”이 있는 프로토콜입니다.
즉, 데이터를 전송할 때 손실이 발생할 수 있으며, 데이터를 정확히 전달했는지 확인하지 않습니다.
이러한 신뢰성 보장은 TCP(Transmission Control Protocol)와 같은 상위 계층 프로토콜에서 처리됩니다.
4. IP와 TCP.
TCP/IP
IP는 일반적으로 TCP와 함께 사용되며, 이 두 프로토콜을 묶어서 TCP/IP 프로토콜 스택이라고 부릅니다.
TCP는 데이터의 신뢰성을 보장하고, IP는 데이터를 목적지로 전송하는 역할을 합니다.
TCP는 데이터를 손실 없이 정확히 전송했는지 확인하고, 필요한 경우 다시 요청하여 데이터의 신뢰성을 유지합니다.
5. 요약.
IP(Internet Protocol)는 네트워크 상에서 데이터를 전송하기 위한 규약으로, IP 주소를 사용하여 장치를 식별하고 데이터를 전송합니다.
IP는 인터넷 통신의 기본이 되는 중요한 요소로, 패킷을 통해 데이터를 전달하고 이를 최적의 경로로 라우팅하는 역할을 합니다.
5️⃣ DNS.
DNS(Domain Name System) 는 사람이 읽을 수 있는 도메인 이름(예: www.example.com)을 컴퓨터가 이해할 수 있는 IP 주소(예: 192.198.1.1 또는 IPv6 주소)로 변환하는 시스템입니다.
DNS는 인터넷에서 도메인 이름을 기반으로 웹 사이트나 서비스에 접근할 수 있게 하는 핵심 인프라입니다.
1. DNS의 주요 역할.
인터넷 상의 모든 컴퓨터는 서로 통신하기 위해 IP 주소를 사용합니다.
그러나 IP 주소는 사람이 기억하기 어렵기 때문에 도메인 이름을 사용하여 웹 사이트나 서비스를 쉽게 접근할 수 있도록 하는 것이 DNS의 역할입니다.
DNS는 다음과 같은 주요 기능을 수행합니다.
1. 도메인 이름을 IP 주소로 변환
사용자가 웹 브라우저에 도메인 이름을 입력하면, DNS는 해당 도메인 이름에 매핑된 IP 주소를 반환하여 사용자가 방문하려는 서버와 통신할 수 있게 합니다.
예: 사용자가 www.google.com을 입력하면, DNS 서버는 이 도메인에 해당하는 IP 주소를 찾아 브라우저에 전달합니다.
2. 분산형 데이터베이스
DNS는 전 세계에 걸쳐 분산된 데이터베이스 시스템으로 구성되어 있으며, 도메인 이름과 IP 주소 매핑 정보를 효율적으로 관리하고 제공합니다.
2. DNS의 동작 과정.
DNS는 웹 사이트에 접속할 때 자동으로 작동하는 백그라운드 프로세스입니다. 그 과정은 다음과 같습니다.
1. 도메인 이름 입력
사용자가 웹 브라우저에 도메인 이름(예: www.example.com)을 입력합니다.
2. 로컬 DNS 확인
사용자의 컴퓨터는 먼저 로컬 캐시(컴퓨터에 저장된 최근의 DNS 조회 기록) 를 확인하여 해당 도메인 이름의 IP 주소가 저장되어 있는지 확인합니다.
만약 로컬 캐시에 정보가 없다면, 컴퓨터는 설정된 DNS 서버 로 요청을 보냅니다.
3. DNS 서버 요청
사용자의 컴퓨터는 ISP(인터넷 서비스 제공자)에서 제공한 DNS 서버 에 도메인 이름의 IP 주소를 요청합니다.
4. DNS 서버의 재귀적 조회
루트 DNS 서버
도메인 이름이 처음 입력되면, DNS 서버는 루트 DNS 서버에 도메인의 최상위 도메인(TLD, 예: .com)에 대한 정보를 요청합니다.
TLD 서버
루트 서버는 TLD 서버(예: .com 도메인을 관리하는 서버)의 주소를 반환하고, DNS 서버는 해당 TLD 서버에 요청을 보냅니다.
권한 있는 DNS 서버
TLD 서버는 해당 도메인의 권한 있는 DNS 서버(예: example.com에 대한 DNS 서버)의 IP 주소를 반환합니다.
권한 있는 DNS 서버는 최종적으로 해당 도메인의 IP 주소를 DNS 서버에 전달합니다.
5. IP 주소 반환
DNS 서버는 IP 주소를 받아 사용자에게 반환합니다.
그런 다음 브라우저는 이 IP 주소로 해당 서버에 연결하여 웹 페이지를 로드합니다.
6. 캐시 저장
이 과정에서 조회된 IP 주소는 캐시에 저장되어 이후 동일한 도메인에 대한 요청이 있을 때 더 빠르게 처리됩니다.
3. DNS의 주요 구성 요소.
1. DNS 클라이언트
사용자의 컴퓨터나 스마트폰과 같은 장치에서 DNS 요청을 발생시키는 프로그램입니다.
주로 웹 브라우저가 이러한 역할을 수행합니다.
2. DNS 서버
도메인 이름과 IP 주소 매핑 정보를 저장하고 관리하는 서버입니다.
다양한 유형의 DNS 서버가 존재합니다.
재귀 DNS 서버
사용자의 요청을 받아 필요한 정보를 찾아주는 서버입니다.
ISP에서 제공하는 기본 DNS 서버입니다.
권한 있는 DNS 서버(Authoritative DNS Server)
특정 도메인에 대한 최종적인 정보를 제공하는 서버로, 그 도메인의 IP 주소를 관리합니다.
루트 DNS 서버
인터넷의 최상위 DNS 서버로, 도메인 이름의 최상위 도메인(TLD)에 대한 정보를 제공합니다.
3. DNS 레코드
DNS 서버에 저장된 도메인과 관련된 정보입니다.
DNS 레코드는 여러 유형이 있으며, 각각 고유한 목적을 가집니다.
A 레코드
도메인 이름을 IPv4 주소로 매핑합니다.
AAAA 레코드
도메인 이름을 IPv6 주소로 매핑합니다.
CNAME 레코드
하나의 도메인 이름을 다른 도메인 이름에 매핑합니다.
MX 레코드
이메일 전송을 위해 메일 서버의 도메인 이름을 정의합니다.
4. DNS 캐싱.
DNS는 성능을 향상시키기 위해 캐싱을 사용합니다.
캐싱은 DNS 서버나 사용자 장치에 이전에 조회한 DNS 정보를 일정 시간 동안 저장하여, 동일한 요청이 있을 때 더 빠르게 처리할 수 있도록 합니다.
캐시된 정보는 TTL(Time To Live)이라는 제한 시간 동안 유효하며, 이 시간이 지나면 새로운 정보를 조회합니다.
5. DNS의 중요성.
1. 인터넷 사용의 편리성
DNS 덕분에 우리는 복잡한 숫자로 된 IP 주소를 외울 필요 없이, 도메인 이름을 통해 웹 사이트에 접속할 수 있습니다.
2. 네트워크 효율성
DNS는 트래픽을 효율적으로 관리하며, 각 요청을 빠르게 처리할 수 있도록 분산된 시스템으로 구성되어 있습니다.
3. 보안
DNS는 네트워크 바안에서도 중요한 역할을 합니다.
그러나 DNS 요청이 가로채기(예: DNS 스푸핑)에 취약할 수 있어, 이를 방지하기 위해 DNSSEC(DNS Security Extension) 와 같은 보안 기술이 도입되었습니다.
6. 요약.
DNS는 인터넷의 전화번호부와 같은 역할을 하며, 도메인 이름을 IP 주소로 변환하여 사용자가 쉽게 웹 사이트나 서비스를 사용할 수 있게 해줍니다.
DNS는 분산된 시스템으로 동작하며, 여러 DNS 서버들이 협력하여 사용자의 요청을 처리합니다.
이를 통해 인터넷 사용자들은 간편하게 네트워크 자원에 접근할 수 있습니다.
-
🌐[Network] HTTP, API, URL, 쿼리, 바디
🌐[Network] HTTP, API, URL, 쿼리, 바디
1️⃣ HTTP란 무엇인가요?
HTTP(Hypertext Transfer Protocol) 는 WWW(World Wide Web)에서 정보를 주고받기 위한 기본적인 프로토콜입니다.
웹 브라우저와 웹 서버 간의 통신을 가능하게 하는 규약으로, 클라이언트(Client, 사용자의 웹 브라우저)가 서버(Server)에 요청(Request)을 보내고, 서버가 이에 대한 응답(Response)을 보내는 방식으로 동작합니다.
1. HTTP의 주요 특징.
1. 텍스트 기반 프로토콜.
HTTP는 사람이 읽을 수 있는 텍스트 형식으로 요청과 응답을 주고받습니다.
요청 메시지에는 클라이언트가 서버에 요구하는 작업이, 응답 메시지에는 서버가 요청에 대해 처리한 결과가 포함됩니다.
2. 비연결성.
HTTP는 비연결성 프로토콜입니다.
즉, 클라이언트와 서버 간에 요청을 처리할 때만 연결을 맺고, 응답이 완료되면 연결을 끊습니다.
이후 요청이 있을 때마다 새로운 연결을 맺습니다.
이를 통해 자원 사용을 줄일 수 있지만, 지속적인 연결이 필요한 애플리케이션에서는 한계가 있습니다.
3. 무상태성.
HTTP는 상태를 유지하지 않는 프로토콜입니다.
즉, 서버는 클라이언트의 요청을 각각 독립적으로 처리하며, 이전 요청의 상태나 정보를 기억하지 않습니다.
이를 해결하기 위해 쿠키(cookie), 세션(session), JWT(Json Web Token)등을 사용하여 상태 정보를 유지합니다.
4. 포트 번호.
HTTP는 기본적으로 80번 포트 를 사용하며, 보안이 강화된 HTTPS는 443번 포트 를 사용합니다.
2. HTTP의 동작 방식.
HTTP는 클라이언트-서버 구조로 동작하며, 주로 웹 브라우저가 클라이언트 역할을 하고, 웹 서버가 서버 역할을 합니다.
기본적인 요청과 응답 과정은 다음과 같습니다.
1. 클라이언트 요청.
사용자가 웹 브라우저에 http://example.com과 같은 URL을 입력하면, 클라이언트(웹 브라우저)가 서버에 HTTP 요청을 보냅니다.
이 요청은 웹 페이지나 이미지 파일과 같은 자원을 요구하는 내용입니다.
2. 서버 응답.
서버는 클라이언트의 요청을 처리한 후, 요청한 자원(예: HTML 문서)을 HTTP 응답으로 돌려줍니다.
3. 웹 페이지 표시.
클라이언트는 받은 응답을 해석하여 웹 페이지를 렌더링하거나 자원을 표시합니다.
3. HTTP 요청 메시지 구조.
HTTP 요청 메시지는 다음과 같은 구조를 가집니다.
1. 요청 라인(Request Line)
메서드(Method) : 클라이언트가 서버에 요청하는 작업을 나타냅니다.
GET : 서버로부터 데이터를 요청.
POST : 서버에 데이터를 전송.
PUT : 서버에 데이터를 업데이트.
DELETE : 서버에서 데이터를 삭제.
URL : 요청하려는 자원의 위치를 나타냅니다.
HTTP 버전 : 사용 중인 HTTP 프로토콜의 버전 정보입니다.(예: HTTP/1.1)
예: GET /index.html HTTP/1.1
2. 헤더(Header)
요청에 대한 추가 정보를 제공합니다.
예를 들어, User-Agent 헤더는 요청을 보내는 클라이언트 정보를 담고 있으며, Accept 헤더는 클라이언트가 수락할 수 있는 데이터 형식을 지정합니다.
3. 본문(Body)
POST 나 PUT과 같은 메서드를 사용할 때 클라이언트가 서버로 전송할 데이터를 포함합니다.
GET 요청에서는 본문이 없는 경우가 대부분입니다.
4. HTTP 응답 메시지 구조.
1. 상태 라인(Status Line)
HTTP 버전
서버가 사용하는 HTTP 버전입니다.
상태 코드(Status Code)
요청 처리 결과를 나타내는 숫자 코드입니다.
상태 설명(Status Text)
상태 코드에 대한 설명입니다.
예: HTTP/1.1 200 OK
2. 헤더(Header)
응답에 대한 부가 정보를 제공합니다.
예를 들어, Content-Type 헤더는 응답 본문의 데이터 형식을 지정하며, Content-Length는 응답 데이터의 길이를 나타냅니다.
3. 본문(Body)
서버가 클라이언트에게 보내는 실제 데이터가 포함됩니다.
예를 들어, HTML 문서, 이미지, JSON 데이터 등이 본문에 담길 수 있습니다.
5. HTTP 상태 코드.
HTTP 응답에서 상태 코드는 클라이언트가 보낸 요청의 처리 결과를 나타냅니다. 주요 상태 코드는 다음과 같습니다.
1xx (정보) : 요청이 수신되어 처리 중입을 나타냅니다.
2xx (성공) : 요청이 성공적으로 처리되었음을 나타냅니다.
200 OK : 요청이 성공적으로 처리되었음.
3xx (리다이렉션) : 요청한 자원이 영구적으로 다른 위치로 이동했음을 나타냅니다.
301 Moved Permanently : 요청한 자원이 영구적으로 다른 위치로 이동함.
302 Found : 요청한 자원이 일시적으로 다른 위치로 이동함.
4xx(클라이언트 오류) : 클라이언트의 요청에 오류가 있음을 나타냅니다.
400 Bad Request : 잘못된 요청.
404 Not Found : 요청한 자원이 존재하지 않음.
5xx(서버 오류) : 서버에서 요청을 처리하는 중에 오류가 발생했음을 나타냅니다.
500 Internal Server Error : 서버에서 발생한 일반적인 오류.
503 Service Unavailable : 서버가 현재 요청을 처리할 수 없음.
6. HTTP의 한계와 HTTPS
HTTP는 기본적으로 암호화되지 않은 프로토콜 입니다.
따라서, 데이터가 중간에 가로채기(스니핑) 당할 수 있으며, 민감한 정보가 보호되지 않습니다.
이를 해결하기 위해 HTTPS(Hypertext Transfer Protocol Secure) 가 도입되었습니다.
HTTPS는 HTTP에 SSL/TLS 암호화 계층 을 추가하여 데이터를 안전하게 주고받을 수 있도록 합니다.
이를 통해 웹 사이트와 사용자 간의 통신이 보호됩니다.
7. 요약.
HTTP는 웹에서 클라이언트(주로 웹 브라우저)와 서버 간에 데이터를 주고받기 위한 프로토콜로, 요청(Request)-응답(Response) 구조로 동작하며 텍스트 기반의 메시지를 주고받습니다.
비연결성과 무상태성을 가지며, 상태 코드와 헤더를 통해 요청 및 응답에 대한 정보를 제공하여 웹 상에서의 통신을 지원합니다.
HTTPS는 HTTP의 보안 강화를 위해 도입된 버전입니다.
2️⃣ API(Application Programming Interface)
API(Application Programming Interface)는 응용 프로그램 간에 상호작용할 수 있도록 정의된 규칙과 도구의 모음입니다.
즉, API는 소프트웨어 애플리케이션이 서로 통신하고 데이터를 주고받기 위한 인터페이스를 제공합니다.
API를 사용하면 한 프로그램이 다른 프로그램의 기능을 활용하거나 데이터를 가져올 수 있게 됩니다.
1. API의 주요 개념.
1. 인터페이스.
API는 두 소프트웨어 간에 중개 역할을 하여, 서로 다른 시스템이나 애플리케이션이 일정한 규칙 에 따라 데이터를 교환할 수 있게 해줍니다.
이를 통해 각 시스템이 상호작용하면서도 독립성을 유지할 수 있습니다.
2. 표준화된 규칙.
API는 개발자들이 특정 기능을 쉽게 사용할 수 있도록 표준화된 방식 으로 제공됩니다.
예를 들어, 웹 API는 HTTP 요청을 통해 데이터를 전송하거나 받는 규칙을 따릅니다.
3. 추상화.
API는 내부 구현 방식을 숨기고, 외부에서는 단순한 인터페이스만 제공하여 복잡한 작업을 쉽게 수행할 수 있도록 합니다.
예를 들어, Google Maps API를 사용하면 복잡한 지도 데이터 처리 과정을 몰라도 간단한 명령을 통해 지도 정보를 활용할 수 있습니다.
2. API의 유형.
1. 웹 API
REST API(Representational State Transfer API)
주로 HTTP 프로토콜을 통해 데이터를 교환하는 웹 API입니다. RESTful API는 URL을 통해 자원(Resource)을 식별하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 데이터를 처리합니다.
SOAP API(Simple Object Access Protocol)
XML 기반의 프로토콜을 사용하여 데이터 전송을 처리하는 웹 API입니다.
REST API보다 복잡하지만, 더 엄격한 표준을 따릅니다.
2. 라이브러리 API
개발자가 특정 라이브러리를 사용할 때 제공되는 함수와 명령어를 의미합니다.
예를 들어, Python의 math 라이브러리는 수학 관련 기능을 제공하는 API입니다.
3. 운영 체제 API
운영 체제가 제공하는 기능을 애플리케이션이 사용할 수 있도록 인터페이스를 제공합니다.
예를 들어, Windows API는 파일 시스템 접근, 그래픽 처리, 네트워크 기능 등을 제공합니다.
4. 하드웨어 API
하드웨어 장치(예: 프린터, 그래픽 카드)와 소프트웨어 간의 상호작용을 위한 API입니다.
이를 통해 소프트웨어는 하드웨어의 기능을 직접 조작할 수 있습니다.
3. API의 구성 요소.
1. 요청(Request)
클라이언트가 서버에 데이터를 요청하는 과정입니다.
일반적으로 웹 API에서는 HTTP 요청을 사용하며, 요청에는 다음이 포함됩니다.
URL : 자원의 위치를 지정합니다.
HTTP 메서드 : 클라이언트가 서버에 수행하고자 하는 작업을 나타냅니다.
GET : 데이터를 가져옵니다.
POST : 새로운 데이터를 생성합니다.
PUT : 기존 데이터를 수정합니다.
DELETE : 데이터를 삭제합니다.
헤더(Header) : 요청에 대한 추가 정보를 담고 있으며, 인증 정보나 데이터 형식을 정의합니다.
본문(Body) : 주로 POST 나 PUT 요청에서 서버로 전송할 데이터를 포함합니다.
2. 응답(Response)
서버가 클라이언트의 요청에 대해 반환하는 정보입니다.
응답에는 다음이 포함됩니다.
상태 코드 : 요청이 성공했는지, 오류가 발생했는지를 나타내는 코드입니다.
200 OK : 요청 성공.
404 Not Found : 요청한 자원을 찾을 수 없음.
500 Internal Server Error : 서버 내부 오류.
3. 본문(Body)
서버가 반환하는 실제 데이터로, 보통 JSON, XML, HTML 형식으로 제공됩니다.
4. API의 예시.
1. 웹 API 예시.
Google Maps API
개발자는 Google Maps API를 사용하여 웹 사이트나 앱에 지도를 삽입하고, 위치 기반 데이터를 검색할 수 있습니다.
사용자는 지도 데이터를 직접 관리하지 않아도 Google의 서버에서 제공하는 서비스를 활용할 수 있습니다.
Twitter API
Twitter API는 트위터 데이터(트윗, 사용자 정보 등)에 접근할 수 있는 기능을 제공합니다.
이를 통해 개발자는 트위터와 관련된 애플리케이션이나 분석 도구를 만들 수 있습니다.
라이브러리 API 예시
Java Standard Library
Java 프로그래밍 언어에서 기본적으로 제공하는 함수 및 메서드 모음입니다.
예를 들어, java.util.List API를 통해 리스트 관련 기능을 쉽게 사용할 수 있습니다.
5. API의 장점.
1. 재사용성.
API를 사용하면 기존 시스템의 기능을 재사용할 수 있어, 동일한 기능을 처음부터 개발하지 않아도 됩니다.
이를 통해 개발 효율성이 높아집니다.
2. 확장성.
API는 서로 다른 애플리케이션이 상호작용할 수 있도록 하여, 확장성과 유연성을 제공합니다.
예를 들어, 다양한 앱이 Facebook API를 사용해 소셜 기능을 통합할 수 있습니다.
3. 유지보수.
API는 인터페이스를 제공하는 측(서버, 서비스 제공자)과 이를 사용하는 측(클라이언트)이 독립적으로 유지보수할 수 있게 해줍니다.
즉, API의 구현 세부 사항이 변경되더라도 클라이언트는 동일한 방식으로 API를 호출할 수 있습니다.
4. 보안.
API는 데이터나 서비스에 대한 접근을 제한할 수 있는 보안 메커니즘을 제공합니다.
API 키, OAuth 등의 인증 방식이 이를 지원합니다.
6. API의 보안.
API는 보안 문제를 해결하기 위해 인증(Authentication) 및 권한 부여(Authorization)를 필요로 합니다.
주요 보안 방법은 다음과 같습니다.
API 키
클라이언트가 서버에 요청할 때 사용하는 고유 키로, API 요청이 올바른 애플리케이션에서 왔는지 확인합니다.
OAuth
사용자 인증을 위한 프로토콜로, 사용자가 애플리케이션이 자신의 자원에 접근할 수 있도록 승인하는 시스템입니다.
HTTPS
API 통신 시 암호화를 적용하여 데이터가 안전하게 전송되도록 보장합니다.
7. 요약.
API는 소프트웨어 간의 상호작용을 위한 인터페이스로, 애플리케이션이 서로 데이터를 주고받고 기능을 사용할 수 있게 합니다.
웹, 라이브러리, 운영 체제 등 다양한 API가 있으며, 개발자가 복잡한 기능을 단순화하고 시스템 간의 통합을 쉽게 구현할 수 있도록 돕습니다.
API는 재사용성, 확장성, 보안성 측면에서 중요한 역할을 합니다.
3️⃣ URL(Uniform Resource Locator)
URL(Uniform Resource Locator) 은 인터넷 상에서 특정 자원의 위치를 나타내는 주소입니다.
웹 브라우저는 URL을 사용하여 사용자가 요청한 웹 페이지나 리소스에 접근합니다.
쉽게 말해, URL은 인터넷 상에서 자원이 어디에 위치해 있는지를 나타내는 “웹 주소” 입니다.
1. URL의 구성 요소.
URL은 여러 구성 요소로 이루어져 있으며, 각각의 부분은 자원에 접근하기 위한 중요한 정보를 제공합니다.
일반적인 URL 형식은 다음과 같습니다.
프로토콜://사용자 정보@호스트:포트/경로?쿼리#프래그먼트
1. 프로토콜(Scheme)
클라이언트가 자원에 접근할 때 사용할 통신 방식을 나타냅니다.
예: http, https, ftp 등
예: https://www.example.com에서 https는 HTTPS 프로토콜을 사용해 데이터를 주고받는다는 것을 의미합니다.
2. 호스트(Host)
자원이 위치한 서버의 도메인 이름 또는 IP 주소입니다.
예: www.example.com, 198.168.1.1
예: https://www.example.com에서 www.example.com은 서버의 도메인 이름입니다.
3. 포트 번호(Port) (선택 사항)
서버에서 사용할 특정 네트워크 포트를 지정합니다.
기본적으로 HTTP는 포트 80, HTTPS는 포트 443을 사용합니다.
포트를 명시하지 않으면 기본 포트가 사용됩니다.
예: https://www.example.com:8080에서 8080은 포트 번호입니다.
4. 경로(Path)
서버 내에서 특정 자원의 위치를 나타냅니다.
파일 시스템 경로와 유사하게 자원(웹 페이지, 이미지, 파일 등)의 경로를 지정합니다.
예: https://www.example.com/about 에서 /about은 example.com 서버 내의 about 페이지를 나타냅니다.
5. 쿼리 문자열(Query String)(선택 사항)
추가적인 매개변수(parameters)를 서버에 전달하기 위해 사용됩니다.
주로 URL 끝에 ? 뒤에 위치하며, 여러 개의 매개변수는 &로 구분됩니다.
예: https://www.example.com/search?q=example&lang=en에서 q=example과 lang=en은 검색어와 언어를 나타내는 쿼리 매개변수입니다.
6. 프래그먼트(Fragment)(선택 사항)
페이지 내 특정 위치를 나타냅니다.
# 기호 뒤에 위치하며, 브라우저가 해당 위치로 스크롤하도록 지시합니다.
예: https://www.example.com/docs#section2 에서 #section2는 페이지 내 특정 섹션으로 이동하기 위한 프래그먼트입니다.
2. URL 예시.
다음은 URL의 실제 예시입니다.
https://www.example.com:8080/docs/tutorial.html?name=test#section1
이 URL을 분석하면 다음과 같습니다.
프로토콜 : https(보안된 HTTP 연결)
호스트 : www.example.com (서버의 도메인 이름)
포트 : 8080 (서버가 사용하는 포트 번호)
경로 : /docs/tutorial.html (서버 내 자원의 경로)
쿼리 문자열 : ?name=test (추가 매개변수 name이 test라는 값을 가짐)
프래그먼트 : #section1 (문서 내 특정 색션으로 이동)
3. URL의 역할.
1. 웹 자원 식별
URL은 전 세계적으로 고유한 자원을 식별하여, 사용자가 원하는 웹 페이지나 리소스에 접근할 수 있게 해줍니다.
이는 텍스트 문서, 이미지, 동영상, API 엔드포인트 등 다양한 형태의 자원일 수 있습니다.
2. 데이터 전송
URL은 데이터를 서버로 전송하는 데에도 사용됩니다.
특히 쿼리 문자열을 통해 웹 애플리케이션이 사용자 입력 데이터를 서버로 전송할 수 있습니다.
예를 들어, 검색 엔진에서 검색어를 입력하면 URL에 쿼리 문자열로 서버에 전송됩니다.
3. 네트워크 리소스 연결
URL은 단순한 웹 페이지뿐만 아니라, FTP 서버, 메일 서버, 데이터베이스 등의 네트워크 자원과도 연결될 수 있습니다.
4. URL과 URI의 차이.
URI(Uniform Resource Identifier) 는 URL을 포함하는 더 넓은 개념으로, 자원을 식별할 수 있는 문자열을 말합니다.
URI는 두 가지로 구분됩니다.
URL : 자원의 위치를 나타내는 식별자.
URN(Uniform Resource Name) : 자원의 이름만을 나타내는 식별자.
예: ISBN 번호(urn:isbn:041450523)
URL은 자원의 위치(주소)를 나타내는 URI의 한 형태입니다.
5. URL의 중요성.
1. 웹 탐색.
웹 브라우저에서 URL을 입력함으로써 원하는 웹 페이지에 직접 접근할 수 있습니다.
또한 하이퍼링크로 URL을 연결해 사용자는 쉽게 웹 페이지 간을 이동할 수 있습니다.
2. API 호출.
URL은 웹 API 호출 시 중요한 역할을 합니다.
API는 URL을 통해 특정 자원에 접근하고, 데이터를 주고받는 방식으로 동작합니다.
RESTful API에서는 URL이 자원을 식별하고 작업을 수행하는 중요한 요소입니다.
3. 검색 엔진 최적화(SEO).
URL 구조는 검색 엔진에서 웹 페이지를 크롤링하고 인덱싱하는 데 중요한 요소입니다.
잘 구성된 URL은 검색 엔진이 페이지 내용을 이해하는 데 도움을 줍니다.
6. 요약.
URL은 인터넷에서 자원의 위치를 나타내는 주소로, 프로토콜, 도메인 이름, 경로, 쿼리 문자열, 프래그먼트 등 여러 요소로 구성됩니다.
URL을 통해 사용자는 웹 자원에 접근하고 데이터를 주고받을 수 있으며, 이는 웹 브라우징, API 호출, 데이터 전송 등에 핵심적인 역할을 합니다.
4️⃣ 쿼리(Query)
쿼리(Query) 는 클라이언트가 서버에 데이터를 전달할 떄 URL의 일부 로 포함되어 서버로 전송되는 데이터를 의미합니다.
주로 GET 요청에 사용되며, URL 끝에 ? 기호를 사용하여 쿼리 문자열을 시작하고, 하나 이상의 매개변수(파라미터)를 & 기호로 구분하여 서버에 전달합니다.
1. 쿼리의 주요 개념.
1. GET 요청에서의 쿼리 사용.
GET 요청은 서버에 데이터를 전달할 때 URL에 쿼리 문자열을 포함하여 전송합니다.
쿼리는 URL의 경로 뒤에 붙으며, ? 로 시작한 후 매개변수(key-value)를 =로 연결합니다.
여러 매개변수가 있을 경우 &로 구분합니다.
쿼리는 주로 검색 조건, 필터링 정보, 페이지 번호, 정렬 순서 등 을 서버에 전달할 때 사용됩니다.
https://www.example.com/search?q=shoes&color=red&size=10
예를 들어, 위와 같은 URL을 살펴봅시다.
q=shoes : q라는 매개변수에 shoes라는 검색어를 전달합니다.
color=red : color 라는 매개변수에 red 라는 값을 전달합니다.
size=10 : size 라는 매개변수에 10 이라는 값을 전달합니다.
2. 쿼리의 구조.
?로 시작하여 쿼리 문자열이 시작됩니다.
key=value 형태로 매개변수와 그 값을 표현합니다.
여러 개의 매개변수를 사용할 경우 &로 구분합니다.
기본적인 쿼리 형식은 아래와 같습니다.
https://www.example.com/resource?key1=value1&key2=value2&key3=value3
3. 서버에서의 처리.
서버는 클라이언트가 전달한 쿼리 문자열을 파싱하여 각각의 매개변수 값을 추출합니다.
추출된 값들은 서버에서 요청을 처리하는 데 사용되며, 예를 들어 검색어, 필터링 옵션, 페이지 번호 등을 기반으로 클라이언트가 원하는 결과를 반환합니다.
4. 데이터의 제한.
GET 요청은 데이터의 크기 제한이 있을 수 있습니다.
브라우저나 서버는 보통 약 2048자 정도의 URL 길이를 허용하므로, 쿼리로 전송할 수 있는 데이터는 상대적으로 적습니다.
민감한 데이터(비밀번호, 개인정보 등)는 쿼리 문자열로 전송하지 않는 것이 좋습니다.
쿼리는 URL에 노출되며, 브라우저 기록이나 서버 로그에 저장될 수 있기 때문입니다.
이러한 데이터를 전송하려면 POST 요청을 사용하는 것이 일반적입니다.
2. 쿼리의 사용 예시.
예시 1: 검색.
https://www.example.com/search?query=laptop&category=electronics&sort=price
이 쿼리는 “laptop”이라는 검색어로 전자 제품 카테고리 내에서 가격순으로 정렬된 결과를 요청하는 예입니다.
query : laptop(검색 키워드)
category : electronics(카테고리)
sort : price(가격순 정렬)
예시 2: 필터링 및 페이징.
https://www.example.com/products?category=shoes&brand=nike&size=9&page=2
여기서는 신발 카테고리에서 Nike 브랜드의 사이즈 9인 제품을 두 번째 페이지에서 요청하는 상황입니다.
category : shoes(제품 카테고리)
brand : nike (브랜드 필터)
size : 9 (사이즈 필터)
page : 2 (페이지 번호)
3. 쿼리의 장점.
URL을 통해 간편하게 데이터 전송.
쿼리 문자열을 통해 클라이언트는 쉽게 서버에 데이터를 전달할 수 있습니다.
직접 링크로 공유 가능.
쿼리 문자열을 포함한 URL은 바로 공유할 수 있으며, 사용자가 동일한 URL을 통해 동일한 요청을 재현할 수 있습니다.
예를 들어, 사용자가 필터링 옵션이 적용된 검색 결과 페이지의 URL을 다른 사용자와 공유할 수 있습니다.
검색 엔진 최적화(SEO).
검색 엔진이 쿼리를 통해 특정한 페이지 내용을 이해하고 색인할 수 있습니다.
4. 쿼리와 POST 요청의 차이점.
GET 요청 에서의 쿼리 문자열은 URL에 노출되며, 브라우저 히스토리나 서버 로그에 저장될 수 있습니다.
이 때문에 민감한 정보를 전송할 때는 적합하지 않습니다.
POST 요청 에서는 데이터를 본문(body)에 담아 전송하므로, URL에 노출되지 않습니다.
큰 양의 데이터를 전송하거나 보안이 중요한 정보를 전송할 때는 POST 요청을 사용하는 것이 더 안전합니다.
5. 요약.
쿼리는 클라이언트가 서버에 데이터를 전달할 때 GET 요청의 URL에 매개변수로 포함되어 전송되는 데이터를 의미합니다.
쿼리 문자열은 key=value 형태로 전달되며, 여러 매개변수는 &로 구분됩니다.
검색어, 필터 조건, 페이지 번호 등을 서버로 전송할 때 주로 사용되며 URL에 노출되는 만큼 민감한 정보 전송에는 적합하지 않습니다.
5️⃣ 바디(Body)
바디(Body) 는 클라이언트가 서버로 POST, PUT, PATCH 와 같은 HTTP 요청을 보낼 때, 데이터를 담아 서버로 전송하는 부분 입니다.
특히, 큰 양의 데이터나 보안이 중요한 데이터를 전송할 때 바디를 사용합니다.
바디는 URL에 노출되지 않고 요청 메시지의 본문에 포함되므로, 데이터 전송에 있어 중요한 역할을 합니다.
1. 바디를 사용하는 주요 HTTP 메서드.
1. POST
서버에 새로운 데이터를 생성하기 위한 요청을 보낼 때 사용합니다.
요청 바디에 전송할 데이터를 포함하여 서버로 보냅니다.
예: 사용자 등록, 파일 업로드 등.
2. PUT
서버에 기존 데이터를 수정할 때 사용합니다.
요청 바디에 수정할 데이터를 포함하여 서버로 보냅니다.
예: 기존 사용자의 정보 업데이트.
3. PATCH
서버의 일부 데이터를 수정할 때 사용됩니다.
전체 데이터가 아닌, 수정할 부분만을 바디에 포함하여 보냅니다.
4. DELETE
일부 경우에는 서버에 삭제할 자원에 대한 추가 정보를 바디에 담아 보낼 수 있습니다.
하지만 대부분의 DELETE 요청은 바디 없이 실행되기도 합니다.
2. 바디를 사용하는 이유.
1. 대용량 데이터 전송.
GET 요청에서 사용되는 쿼리 문자열은 데이터 크기에 제한이 있습니다.
반면, 바디를 사용하는 POST나 PUT 요청은 큰 데이터를 안전하게 전송할 수 있습니다.
예를 들어, 대용량 파일이나 이미지 등을 전송할 때 바디를 사용합니다.
2. 보안.
바디에 포함된 데이터는 URL에 노출되지 않으며, 브라우저의 주소 창이나 서버 로그에 기록되지 않습니다.
따라서, 비밀 번호, 개인정보, 결제 정보 등 민감한 데이터를 전송할 때 바디를 사용하는 것이 적절합니다.
3. 구조화된 데이터 전송.
JSON, XML, HTML과 같은 구조화된 데이터를 쉽게 전송할 수 있습니다.
바디는 복잡한 데이터 구조를 담아서 서버로 전달할 수 있는 유연한 방법을 제공합니다.
3. 요청 바디의 형식(Content-Type)
클라이언트가 서버로 데이터를 전송할 때, 요청 바디의 데이터 형식은 Content-Type 헤더로 지정됩니다.
일반적으로 사용되는 데이터 형식은 다음과 같습니다.
1. application/json
JSON(JavaScript Object Notation) 형식으로 데이터를 전송합니다.
RESTful API에서 가장 많이 사용되는 형식입니다.
{
"username": "example_user",
"password": "example_password"
}
2. application/x-www-form-urlencoded
HTML 폼에서 전송되는 기본 형식으로, 키-값 쌍으로 URL 인코딩 방식으로 전송합니다.
데이터는 URL 쿼리 문자열과 유사한 형식으로 바디에 전송됩니다.
username=example_user&password=example_password
3. multipart/form-data
파일 업로드와 같이 다양한 형식의 데이터를 함께 전송할 때 사용됩니다.
각 파일이나 데이터 항목을 별도의 파트로 구분하여 전송할 수 있습니다.
특히 이미지, 문서와 같은 파일을 전송할 때 많이 사용됩니다.
Content-Type: multipart/form-data; boundary=------------------------boundary
--------------------------boundary
Content-Disposition: form-data; name="username"
example_user
--------------------------boundary
Content-Disposition: form-data; name="file"; filename="example.png"
Content-Type: image/png
(파일 데이터)
--------------------------boundary--
4. text/plain
단순 텍스트 데이터를 전송할 때 사용됩니다.
예를 들어, 간단한 메시지를 전송하거나 테스트용으로 사용할 수 있습니다.
4. 요청 바디 사용 예시.
1. POST 요청 예시 (JSON 데이터 전송)
클라이언트가 서버로 사용자 등록 요청을 보낼 때, JSON 형식으로 데이터를 전송할 수 있습니다.
POST /register HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"username": "new_user",
"email": "user@example.com",
"password": "user_password"
}
Content-Type
요청 바디가 JSON 형식임을 서버에 알립니다.
바디
클라이언트가 전송하려는 데이터가 JSON 형식으로 포함됩니다.
2. PUT 요청 예시 (폼 데이터 전송)
사용자의 정보를 수정할 때, 폼 데이터 형식으로 데이터를 전송할 수 있습니다.
PUT /update-profile HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
username=updated_user&email=updated@example.com
Content-Type
application/x-www-form-urlencoded 는 키-값 쌍의 폼 데이터를 전송하는 형식입니다.
바디
수정된 사용자 정보를 키-값 쌍으로 포함하고 있습니다.
5. 바디의 보안.
바디를 사용하여 전송되는 데이터는 URL에 노출되지 않지만, 여전히 네트워크를 통해 전송되는 동안 보안이 필요합니다.
이를 위해 HTTPS를 사용하여 통신을 암호화하는 것이 일반적입니다.
HTTPS를 사용하면 바디에 포함된 데이터가 중간에서 가로채이거나 변조되지 않도록 보호할 수 있습니다.
6. 요약.
바디는 클라이언트가 서버로 데이터를 전송할 때 요청 메시지의 본문에 포함되는 부분입니다.
주로 POST, PUT, PATCH와 같은 요청에서 사용되며, 대용량 데이터나 민감한 정보를 안전하게 전송하는 데 적합합니다.
바디에는 JSON, 폼 데이터, 파일 등 다양한 형식의 데이터를 포함할 수 있으며, URL에 노출되지 않아 보안 측면에서 중요한 역할을 합니다.
-
🌐[Network] 라우팅 기능 - 라우팅 시스템
🌐[Network] 라우팅 기능 - 라우팅 시스템.
네트워크 양단에 연결된 호스트들이 전송하는 데이터는 전송 경로 중간에 위치한 라우팅 시스템을 거칩니다.
라우팅 시스템은 데이터를 최종 목적지까지 올바른 경로로 중개하는 교환(Switching) 기능을 제공합니다.
네트워크의 발전이 전화망에서 시작된 까닭에 데이터의 중개 기능을 의미하는 일부 용어에 교환이라는 표현이 굳어지게 되었습니다.
위 그림은 데이터 통신망에서 제공하는 다양한 라우팅 시스템의 종류를 설명합니다.
연결형 서비스를 제공하는 회선 교환 시스템은 아날로그 환경의 음성 전화 서비스를 통해 발전했으며, 고정 대역폭의 전송률을 지원하므로 네트워크의 구조가 상대적으로 단순합니다.
반면에 비연결형 서비스를 제공하는 패킷 교환 시스템은 디지털 환경의 컴퓨터 네트워크를 통해 발전했으며, 가변 대역의 전송률을 지원해 네트워크 구조가 복잡합니다.
이외에도 프레임 릴레이 방식이 있는데, 이는 전송 속도를 향상시키는 기술입니다.
회선 교환(Circuit Switching) 시스템은 고정 대역으로 할당된 연결을 설정하여 데이터 전송을 시작합니다.
따라서 회선에 할당된 고정 크기의 안정적인 전송률로 데이터를 전송할 수 있으며, 연결이 유지되는 동안에는 다른 연결에서 이 대역을 사용할 수 없습니다.
데이터의 전송 경로가 연결 설정 과정에서 확정되므로 라우팅 등의 작업이 상대적으로 쉽습니다.
대표적인 회선 교환 방식인 전화망에서 음성 전송은 안정적인 속도로 일정하게 상대방에세 전달될 수 있지만, 전송 대역이 낭비된다는 단점이 있습니다.
회선 교환 시스템에서는 하나의 연결에 대하여 전송되는 모든 데이터가 동일한 경로로 라우팅됩니다.
패킷 교환(Packet Switching) 시스템은 컴퓨터 네트워크 환경에서 주로 이용합니다.
데이터를 미리 패킷 단위로 나누어 전송하므로 패킷을 기준으로 라우팅이 이루어집니다.
패킷 교환 시스템은 데이터 전송을 위한 전용 대역을 따로 할당하지 않기 때문에 가변 크기의 전송률을 지원합니다.
패킷 교환에는 모든 패킷의 경로를 일정하게 유지시키는 가상 회선(Virtual Circuit) 방식과 패킷들이 각각의 경로로 전송되는 데이터그램(Datagram) 방식이 있습니다.
인터넷을 사용할 때 네트워크의 부하 정도에 따라 전송 속도가 일정하지 않은 이유는 고정적인 전송 대역이 확보되지 않기 때문입니다.
따라서 네트워크의 사용량이 많아지면 전송 속도가 느려집니다.
1️⃣ 라우팅 시스템.
전송 선로를 이용해 데이터를 전송할 때는 전용 회선을 이용하거나 교환 회선을 이용할 수 있습니다.
전용 회선 방식에서는 송신 호스트와 수신 호스트가 전용으로 할당된 통신 선로로 데이터를 전송하지만, 교환 회선 방식에서는 전송 선로 하나를 다수의 호스트가 공유합니다.
일반적으로 전화 서비스와 같은 아날로그 환경의 공중 전화망은 교환 회선 방식을 사용합니다.
위 그림은 교환 회선 방식을 이용하여 네트워크를 구성한 예입니다.
교환 회선 방식을 이용해 데이터를 주고받으려면 중간에 위치한 교환 시스템의 중개가 필요합니다.
그림에서 뭉게구름으로 표현된 네트워크 안에 있는 교환기와 전송 선로들은 바깥에 있는 호스트들이 데이터를 송수신하기 위해 공유하는 자원입니다.
전송 선로는 광케이블 기술 등의 발전으로 물리적인 전송 대역 용량에 비례하여 논리적인 다수의 연결 회선을 지원합니다.
호스트 a에서 호스트 f로 데이터를 보내려면 먼저 연결 설정을 통해 전송 경로를 결정해야 합니다.
외형상 가장 합리적인 경로는 교환기 1 -> 교환기 3 -> 교환기 5 입니다.
만약 교환기 1과 3 사이에 트래픽이 많은 경우라면 교환기 1 -> 교환기 2 -> 교환기 3 -> 교환기 5가 대안이 될 수도 있습니다.
어떤 경로가 더 나을지는 전송 시점의 네트워크 혼잡도 등 여러 요인에 따라 달라집니다.
특정 전송 선로에 데이터가 집중되지 않으면서 효율적인 경로를 선택할 수 있도록 하는 것이 교환기의 중요한 역할입니다.
교환 회선을 이용하는 방식은 데이터의 전송 경로와 관련하여 크게 두 가지로 구분됩니다.
하나는 위 그림의 (a)처럼 데이터를 전송하기 전에 통신 양단 사이에 고정된 연결 경로를 설정하는 회선 교환 방식아고, 다른 하나는 (b)처럼 미리 연결을 설정하지 않고, 데이터를 패킷 단위로 나누어 전송하는 패킷 교환 방식입니다.
이외에 메시지 교환이라는 중간 형태도 있습니다.
(b)의 큰 사각형은 뭉개구름 그림의 교환기에 해당하며, 디지털 통신 환경을 지원하는 인터넷은 패킷 교환 방식의 네트워크에 해당합니다.
1. 회선 교환.
회선 교환(Circuit Switching) 방식은 위 그림의 (a)처럼 통신하고자 하는 호스트가 데이터를 전송하기 전에 연결 경로를 미리 설정하는 방식입니다.
연결 설정 과정에서 송수신 호스트 간의 경로가 결정되기 때문에 모든 데이터가 같은 경로로 전달됩니다.
회선 교환 방식에서는 고정 대역의 논리적인 전송 선로를 전용으로 할당받으므로, 안정적인 데이터 전송률을 지원합니다.
회선 교환 방식에서는 데이터를 패킷 단위로 나누어 전송하지 않기 때문에 패킷이라는 용어를 사용하지 않습니다.
2. 메시지 교환.
메시지 교환(Message Switching)방식은 데이터를 전송하기 전에 경로를 설정하지 않고, 대신 전송하는 메시지의 헤더마다 목적지 주소를 표시하는 방식입니다.
중간의 교환 시스템은 이전 교환 시스템에서 보낸 전체 메시지가 도착할 때까지 받은 메시지를 일시적으로 버퍼에 저장합니다.
이후 모든 메시지가 도착하면 다음 교환 시스템으로 전달하는 방식을 사용하므로 데이터 전송이 교환기 단위로 이어집니다.
따라서 메시지 교환 방식은 송신 호스트가 전송하는 전체 데이터가 하나의 단위로 교환 처리된다고 볼 수 있습니다.
3. 패킷 교환.
위 그림의 (b)와 같은 패킷 교환(Packet Switching) 방식은 회선 교환과 메시지 교환의 장점을 모두 이용합니다.
송신 호스트는 전송할 데이터를 패킷(Packet)이라는 일정 크기로 나누어 전송하며, 원칙적으로 송수신 호스트 사이의 연결이 존재하지 않으므로 각 패킷은 독립적인 라우팅 과정을 거쳐 수신 호스트에 도착합니다.
다만, 패킷 교환 방식에서도 회선 교환 방식과 같은 논리적인 연결 설정 개념을 도입한 가상 회선 방식이 존재합니다.
인터넷에서 사용하는 패킷 교환 시스템의 장점은 전송 대역의 효율적 이용, 호스트의 무제한 수용, 패킷에 우선순위 부여라는 세 가지로 요약할 수 있습니다.
1. 전손 대역의 효율적 이용
여러 호스트에서 전송한 패킷들이 동적인 방식으로 전송 대역을 공유하기 때문에 전송 선로의 이용 효율을 극대화할 수 있습니다.
이를 반대의 관점으로도 설명할 수 있습니다.
즉, 회선 교환 시스템에서는 호스트 간 연결 시 전송 대역을 전용으로 할당하기 때문에 해당 호스트들이 데이터를 전송하지 않더라도 다른 호스트는 이 전송 대역을 이용할 수 없습니다.
결과적으로 회선 교환 시스템은 전송 선로 이용 면에서 비효율적입니다.
2. 호스트의 무제한 수용
회선 교환 방식에서는 개별 연결 요청에 대해 고정 대역을 할당하므로 전송 대역이 부족하면 새로운 연결 설정 요청을 수용할 수 없습니다.
즉, 모든 회선 연결에 할당된 대역의 합이 전체 네트워크의 전송 용량을 초과할 수 없습니다.
그러나 패킷 교환 방식에서는 전송 대역이 부족해 연결 설정 요청을 수용하지 못하는 경우란 없습니다.
임의의 연결 요청에 고정 대역을 할당하지 않으므로 이론상 호스트를 무한히 수용할 수 있습니다.
전송 대역을 사용하는 호스트의 수가 늘면 네트워크 혼잡도가 높아져 패킷의 전송 지연이 심화될 뿐입니다.
3. 패킷에 우선순위 부여
패킷 교환 방식을 이용하면 데이터의 전송 작업이 패킷 단위로 이루어져 패킷에 우선순위를 부여하기 편리합니다.
즉, 특정 호스트가 전송하는 패킷들을 먼저 전송할 패킷과 나중에 전송해도 되는 패킷으로 구분하여 선택적으로 우선순위를 부여할 수 있습니다.
패킷 교환 방식에도 단점은 있습니다.
패킷을 전송하는 과정에서 회선 교환 방식에 비해 더 많은 지연이 발생합니다.
예를 들어, 전송 패킷을 라우터 내부 버퍼에 보관하는 과정에서 지연이 생기고, 기타 여러 종류의 대기 큐를 거치는 과정에서 가변 지연이 생길 수 있습니다.
또한 각각의 전송 패킷이 독립적인 경로로 전달되므로, 패킷마다 전송에 걸리는 시간이 일정하지 않을 수 있습니다.
패킷별로 지연되는 정도를 나타내는 지연 분포의 형태도 가변적일 수밖에 없는데, 이런 가변적인 전송 지연의 분포를 지터(Jiter)라 합니다.
지터 분포는 멀티미티어 데이터와 같이 실시간 처리되는 응용 환경에서 중요합니다.
교환기에서 패킷 경로를 선택하는 방식은 두 가지입니다.
호스트 사이의 전송 경로를 미리 고정하는 정적 경로(Static Routing)와 네트워크 혼잡도를 비롯한 주변 상황에 따라 전송 경로를 지속적으로 조정하는 동적 경로(Dynamic Routing)가 있습니다.
-
🌐[Network] 인터넷 모델과 요약.
🌐[Network] 인터넷 모델과 요약.
인터넷은 데이터의 중개 기능을 담당하는 네트워크 계층으로 IP(Internet Protocol) 프로토콜을 사용하는 네트워크입니다.
따라서 인터넷에 연결하고자 하는 호스트는 반드시 IP 프로토콜을 지원해야 하며, 전송 계층은 TCP(Transmission Control Protocol)나 UDP(User Datagram Protocol)를 사용합니다.
현재 인터넷에서 주로 사용하는 IP 프로토콜은 버전 4(IPv4)입니다.
1️⃣ 구현 환경.
인터넷에 연결된 호스트들의 네트워크 구현 모델에서는 아래 그림과 같이 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현합니다.
즉, 인터넷 환경에서 사용하는 TCP/IP와 하위 계층의 기능을 담당하는 LAN 카드 드라이버 루틴(Driver Routine)은 운영체제 영역에 속합니다.
TCP/IP를 이용하려면 소켓 기능이 필요하며, 사용자 공간에서 네트워크 응용 기능을 지원하는 프로그램을 작성해야 합니다.
예를 들어, 스마트폰에서 실행되는 네트워크 관련 앱들이 네트워크 프로세스에 해당됩니다.
1. 시스템 공간.
TCP와 UDP 프로토콜은 시스템 운영체제인 커널(Kernel) 내부에 구현되므로 일반 사용자가 이 기능을 직접 이용할 수는 없습니다.
대신 소켓(Socket) 인터페이스라는 전송 계층의 프리미티브를 이용해야 하는데, 소켓은 운영체제에서 시스템 콜 기능으로 구현되므로 사용자 프로그램에서 이를 함수 호출 방식으로 사용합니다.
TCP는 연결형 서비스를 제공하고, UDP는 비연결형 서비스를 제공합니다.
인터넷에서 네트워크 계층은 IP(Internet Protocol)로 구현되며 전송 패킷의 올바른 경로 선택 기능을 제공합니다.
네트워크 프로세스를 실행하는 호스트 사이에는 다수의 라우터가 존재하며, 이 라우터들은 IP 프로토콜을 이용하여 패킷 중개 기능을 수행합니다.
인터넷은 라우터들의 집합이며, 스마트폰을 포함한 일반 호스트들은 인터넷의 끝단에 연결되는 종단 장치에 해당합니다.
네트워크 계층 아래의 계층들은 LAN 카드와 LAN 카드를 구동하는 드라이버 루틴에 의해 구현됩니다.
2. 사용자 공간.
세션 계층부터 응용 계층까지의 기능은 사용자 응용 프로그램으로 구현됩니다.
프로그래밍 환경에서 전송 계층의 기능을 제공하는 소켓 시스템 콜을 호출해 TCP와 UDP 기능을 사용할 수 있습니다.
소켓 시스템은 유닉스(Unix), 리눅스(Linux), 윈도우즈(Windows) 운영체제 등 인터넷에 접곳 가능한 모든 호스트에서 제공합니다.
프로그램에서 소켓을 사용할 때는 소켓마다 부여되는 고유 주소인 포트 번호를 관리해야 합니다.
IP 주소는 호스트를 구분하는 주소 역할을 하지만, 포트 번호는 특정 호스트에서 실행되는 네트워크 프로세스를 구분하는 주소입니다.
일반 네트워크 프로세스는 포트 하나를 할당해 사용하므로 포트 번호와 네트워크 프로세스가 일대일로 대응됩니다.
응용 환경에 따라서는 포트 번호를 여러 개 할당할 수도 있습니다.
응용 네트워크 프로그램을 설계할 때는 포트 할당에 주의해야 하지만, 일반 사용자는 프로그램 하나에 포트 하나를 사용한다고 가정해도 큰 문제가 없습니다.
인터넷 응용 프로세스의 고유 주소는 IP 주소와 포트 번호의 조합으로 완성됩니다.
상위 계층은 위 그림처럼 사용자 프로그램 공간에서 구현됩니다.
네트워크 응용 프로그램으로는 전통적인 텔넷(Telnet), FTP, 웹 브라우저 등을 포함하여 스마트폰과 일반 PC에서 실행되는 수많은 앱이 있는데, 모두 TCP와 UDP를 사용해 네트워크에 연결합니다.
2️⃣ 프로토콜.
인터넷에서 데이터 전송은 계층 4의 TCP와 UDP 프로토콜, 계층 3의 IP 프로토콜에 의해 이루어집니다.
인터넷 모델에서는 사용자 데이터의 전송이 TCP, UDP, IP 프로토콜에 의해 이루어지지만, 이들이 올바르게 동작하려면 더 많은 제어용 프로토콜이 필요합니다.
특히, 주소 문제를 해결하기 위한 ARP/RARP 프로토콜과 오류 문제를 해결하기 위한 ICMP 프로토콜은 인터넷 모델의 동작에서 매우 중요한 역할을 합니다.
1. 프로토콜 계층 구조.
아래의 그림은 TCP/IP를 사용하는 인터넷 환경에서 관련 프로토콜들이 계층 구조를 설명합니다.
맨 위의 응용 프로세스는 TCP와 UDP를 사용해 데이터 송수신 기능을 수행하지만, 특별한 환경에서 네트워크 계층의 IP 프로토콜을 직접 사용하기도 합니다.
ICMP와 ARP/RARP는 사용자 데이터를 전송하지 않기 때문에 특정 계층으로 설명하기 애매하지만, 일반적으로 네트워크 계층으로 분류합니다.
ICMP와 ARP/RARP가 전송하는 제어용 데이터들은 같은 계층에 속하는 IP 프로토콜의 도움을 받는다는 점이 특별합니다.
그림에 표시하지 않았지만 인터넷의 제어용 프로토콜은 그 종류가 매우 다양합니다.
네트워크 계층의 IP는 사용자 데이터를 전송하는 프로토콜입니다.
IP의 동작 과정에서 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 ICMP(Internet Control Message Protocol)를 사용합니다.
ICMP는 IP 프로토콜과 같은 계층으로 간주할 수 있지만, ICMP에서 발생하는 ICMP 메시지는 IP 패킷에 캡슐화되어 전송됩니다.
2. ARP와 RARP
인터넷 모델에서 사용하는 주소는 데이터 링크 계층의 MAC 주소, 네트워크 계층의 IP 주소, 전송 계층의 포트 번호입니다.
인터넷에서 통신하기 위해서는 송신 호스트가 자신의 세 가지 주소뿐만 아니라, 수신 호스트의 세 가지 주소도 모두 알아야 합니다.
편지를 보내기 위해서는 자신의 집 주소와 수신자의 집 주소를 모두 알아야 하는 것과 같습니다.
먼저, 포트 번호는 사용자 프로그램 환경에서 사용되므로, 번호 할당과 관리가 다른 계층 프로토콜의 동작에 크게 영향을 미치지 않습니다.
IP 주소와 MAC 주소는 프로토콜의 동작 특성상 몇 가지 고려할 사항이 있습니다.
예를 들어, 계층 2 프로토콜을 이용해 데이터를 전송하려면 수신 호스트의 MAC 주소가 필요합니다.
일반적으로 송신 호스트는 자신의 IP 주소와 MAC 주소는 쉽게 얻을 수 있습니다.
즉, 자신의 IP 주소는 호스트의 네트워크 설정 과정에서 하드디스크에 저장되며, MAC 주소는 LAN 카드 내에 기록되어 있습니다.
그렇지만 수신 호스트의 주소를 얻으려면 몇 단계의 처리 과정이 필요합니다.
먼저, 수신 호스트의 IP 주소는 응용 프로그램의 사용자로부터 입력된 호스트 이름을 IP 주소로 변환하여 얻을 수 있습니다.
하지만 수신 호스트의 MAC 주소 정보는 어디에서도 얻을 수 없습니다.
따라서 사용자로부터 입력된 수신 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능이 필요한데 ARP(Address Resolution Protocol)가 이 기능을 담당합니다.
호스트의 IP 주소는 컴퓨터 설정 작업의 초기화 과정에서 특정 파일에 보관됩니다.
그러나 파일 시스템이 존재하지 않는 특수 목적의 시스템은 LAN 카드에 내장된 자신의 MAC 주소는 알지만, 자신의 IP 주소는 모르는 경우가 있습니다.
이 문제를 해결하기 위하여 MAC 주소를 IP 주소로 변환하는 RARP(Reverse Address Resolution Protocol)가 필요합니다.
3. ICMP
데이터 전송 프로토콜인 IP가 동작하는 과정에서는 전송 오류가 발생할 수 있습니다.
오류가 발생하면 반드시 송신자에게 회신해 복구 작업을 하게 해야 하는데, 이 작업은 ICMP(Internet Control Message Protocol)가 담당합니다.
ICMP 프로토콜은 오류 메시지를 전송하기 위한 별도의 헤더 구조를 가지며, IP 패킷에 캡슐화되어 전송되지만 IP와 같은 계층으로 취급됩니다.
ARP, RARP, ICMP의 특징을 요약하여 설명하면 아래 표와 같습니다.
프로토콜
특징
ARP
인터넷에서 통신하려면 자신의 로컬 IP 주소와 MAC 주소, 수신 호스트의 IP 주소와 MAC 주소가 필요합니다. ARP(Address Resolution Protocol)는 수신 호스트의 주소 변환 기능을 제공하는데, 사용자가 입력한 원격 IP 주소를 이용해 원격 MAC 주소를 제공하는 프로토콜입니다.
RARP
RARP(Reverse Address Resolution Protocol)는 로컬 호스트의 주소 변환 기능을 제공하는데, LAN 카드에 보관된 MAC 주소를 이용해 자신의 IP 주소를 얻어내는 프로토콜입니다. 일반 컴퓨터 시스템은 로컬 호스트의 IP 주소가 파일 시스템에 보관되므로 RARP를 사용하지 않지만, 파일 시스템이 존재하는 시스템에서는 RARP를 반드시 사용해야 합니다.
ICMP
사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메세지가 생성됩니다. ICMP(Internet Control Message Protocol)는 이 오류 메시지를 송신 호스트에 전송하는 기능을 담당하는 프로토콜입니다.
3️⃣ 요약.
1. 모듈화
일반적으로 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나뉘어 설계합니다.
시스템을 기능별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽습니다.
또한 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처할 수 있습니다.
2. 계층 구조.
분할된 모듈들은 협력 관계를 유지하면서 유기적으로 동작합니다.
네트워크에서는 독립적인 고유 기능을 수행하는 모듈들이 상하 계층 구조로 연결되어 동작합니다.
계층 구조에서는 상위 계층이 하위 계층에 특정 서비스를 요청하는 방식으로 동작합니다.
요청을 받은 하위 계층은 해당 서비스를 실행하여 그 결과를 상위 계층에 돌려줍니다.
3. 주소의 표현.
여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하려면 상대방을 구분할 수 있는 방법이 필요합니다.
시스템을 구분하여 지칭하기 위해서 이름을 부여하는 것을 주소 체계라 합니다.
일반적으로 호스트에 주소를 하나씩 부여하지만, 다수의 호스트를 묶어 그룹 주소로 표기하지고 합니다.
일대다 통신의 대표적인 표기 방법에는 네트워크에 연결된 모든 호스트에 데이터를 전송할 수 있는 브로드캐스팅과 특정 사용자를 그룹으로 묶어서 지칭하는 멀티캐스팅이 있습니다.
4. 오류 제어.
네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있습니다.
정송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분식 오류가 있습니다.
오류가 발생하는 1차 원인은 물리 계층의 전송 매체에 의한 물리적인 오류입니다.
데이터가 변형되거나 분실되는 오류를 해결하려면 먼저 오류가 발생한 사실을 인지해야 합니다.
네트워크에서 전송 오류를 해결하는 방법은 송신 호스트가 원래 데이터를 재정손하는 것입니다.
5. 흐름 제어.
전송 매체에서 물리적인 오류가 없었는데도 데이터를 분실하는 경우가 있는데, 이는 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생하기도 합니다.
수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있습니다.
이 문제를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요합니다.
6. 서비스 프리미티브.
프로토콜은 계층 구조로 이루어져 있고, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작합니다.
이러한 서비스는 프리미티브 형태로 구현되며, 연결형 서비스에서 자주 사용하는 프리미티브의 종류에는 CONNECT, DATA, DISCONNECT가 있습니다.
통신 프로토콜에서 서비스 프리미티브를 올바르게 수행하려면 각 프리미티브가 Request, Indication, Response, Confirm이라는 네 가지 기능을 포함하도록 설계해야 합니다.
클라이언트가 서버에 전달하는 요청은 Request와 Indication으로 구현되고 서버의 응답은 Response와 Confirm으로 구현됩니다.
7. OSI 7계층 모델.
네트워크에 연결된 컴퓨터들이 데이터를 주고받으려면 서로 연동할 수 있게 표준화된 인터페이스를 지원해야 합니다.
국제 표준화 기구인 ISO가 확립한 OSI 7계층 모델은 개방화된 데이터 통신 환경에 적합한 계층적 구현 모델의 표준입니다.
연결된 두 호스트가 각각 7개 계층으로 구성된 모듈을 수행함으로써 데이터 송수신이 가능합니다.
전송 데이터는 송신 호스트의 응용 계층에서 시작해 하위 계층으로 순차적으로 전달되어, 최종적으로 물리 계층에서 수신 호스트에 전달됩니다.
수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내줍니다.
8. 인터넷 모델.
인터넷은 데이터의 중개 기능을 담당하는 네트워크 계층으로 IP 프로토콜을 사용하는 네트워크입니다.
인터넷에 연결된 컴퓨터의 네트워크 구현 모델에서는 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현합니다.
TCP와 UDP는 시스템 운영체제인 커널 내부에 구현되므로, 소켓 인터페이스라는 전송 계층의 프리미티브를 사용자 프로그램에서 호출하는 방식으로 사용합니다.
세션 계층부터 응용 계층까지의 기능은 사용자 프로그램으로 구현됩니다.
9. ARP/ RARP
인터넷 모델에서 사용하는 주소는 데이터 링크 계층의 MAC 주소, 네트워크 계층의 IP 주소, 전송 계층의 포트 번호입니다.
계층 2 프로토콜을 이용해 데이터를 전송하려면 수신 호스트의 MAC 주소가 필요합니다.
일반적으로 송신 호스트는 자신의 IP 주소와 MAC 주소는 쉽게 얻을 수 있지만, 수신 호스트의 MAC 주소를 얻으려면 몇 단계의 처리 과정이 필요합니다.
사용자로부터 입력된 수신 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능이 필요한데, ARP가 이 기능을 담당합니다.
파일 시스템이 없는 호스트는 LAN 카드에 내장된 자신의 MAC 주소는 알지만 파일 시스템이 존재하지 않으므로 자신의 IP 주소를 알 수 없습니다.
이 문제를 해결하기 위하여 MAC 주소를 IP 주소로 변환하는 RARP가 필요합니다.
10. ICMP
데이터 전송 프로토콜인 IP가 동작하는 과정에서는 전송 오류가 발생할 수 있습니다.
오류가 발생하면 반드시 송신 호스트에 회신하여 복구 작업을 할 수 있게 해야 하는데, 이 작업은 ICMP가 담당합니다.
ICMP 프로토콜은 오류 메시지를 전송하기 위한 별도의 헤더 구조를 가지며, IP 패킷에 캡슐화되어 전송되지만 IP 프로토콜과 같은 계층으로 취급됩니다.
-
🌐[Network] OSI 7계층 모델 - 계층별 기능
🌐[Network] OSI 7계층 모델 - 계층별 기능.
1️⃣ 계층별 기능.
OSI 7계층 모델의 모든 계층이 중요하지만, 특히 전송 계층이 중요합니다.
전송 계층은 통신 양단에 있는 전송 연결의 주체(프로세스) 사이에 종단 연결을 제공합니다.
호스트에서 실행되는 프로세스와 프로세스 사이에 연결을 설정하여 데이터를 주고받을 수 있게 해주는 것이 전송 계층입니다.
전화 시스템을 예로 들면, 통화자 사이에 통화 연결을 설정하는 것이 바로 전송 계층입니다.
전송 계층의 하위에 있는 물리 계층, 데이터 링크 계층, 네트워크 계층은 전송 계층의 연결을 설정하고 지원하는 역할을 수행합니다.
상위에 있는 세션 계층, 표현 계층 응용 계층은 전송 계층의 연결을 어떻게 활용할지에 대하여 다룹니다.
따라서 OSI 7계층 모델은 전송 계층을 기준으로 두 부분으로 나뉜다고 볼 수 있습니다.
실제로 인터넷 모델인 TCP/IP 프로토콜은 운영체제 내부에 계층 4까지의 기능을 구현하고, 상위 계층의 기능은 사용자 프로그램으로 구현합니다.
1️⃣ 물리 계층.
OSI 7계층 모델의 맨 밑에 위치하는 물리 계층(Physical Layer)은 전송 매체의 물리적 인터페이스에 관한 사항을 기술합니다.
즉, 전송 매체에서는 개별 정보의 비트(Bit) 교환 문제를 다룹니다.
물리 계층은 하드웨어 시스템으로 구현되고, 계층 2이상의 프로토콜들은 소프트웨어적으로 구현됩니다.
물리 계층에서 다루는 전송 매체의 특성에는 데이터의 전송 속도, 송수신 호스트 사이의 클록 동기화 방법, 물리적 연결 형태 등이 있습니다.
2️⃣ 데이터 링크 계층.
데이터 링크 계층(Data Link Layer)은 물리 계층을 통해 전송되는 데이터의 물리적 전송 오류를 해결합니다.
결과적으로 상위의 네트워크 계층에 신뢰성 있는 패킷 전송을 보장해주어 물리적 전송 오류에 대한 부담을 없애줍니다.
데이터 링크 계층은 갈림길에서 전송 경로를 선택할 수 없으므로 두 호스트가 일대일로 직접 연결된 환경에서만 데이터 전송을 지원합니다.
데이터 링크 계층을 이용해 전송되는 데이터를 프레임(Frame)이라 부릅니다.
프레임 헤더에 표시되는 송수신 호스 정보에는 LAN 카드에 내장된 송수신 호스트의 MAC 주소가 기록됩니다.
데이터 링크 계층은 다른 상위 계층처럼 송신 호스트와 수신 호스트 사이의 전송 속도 차이를 고려한 흐름 제어 기능도 지원할 수 있습니다.
3️⃣ 네트워크 계층.
네트워크 계층(Network Layer)은 송신 호스트가 전송한 데이터가 어떤 경로를 통해 수신 호스트에 전달되는지를 결정하는 라우팅 문제를 처리합니다.
전달 경로 선택은 미리 정해지는 정적인(static) 방식과 네트워크의 현재 부하 상태에 따라 결정되는 동적인(Dynamic) 방식으로 구분합니다.
네트워크 계층에서는 전송 데이터 패킷(Packet)이라 부르며, 중개 과정에서 경로 선택의 기준이 되는 호스트 주소가 필요합니다.
인터넷에서는 IP 프로토콜이 네트워크 계층의 기능을 수행하므로 호스트의 IP 주소가 경로 선택에 중요한 기준이 됩니다.
인터넷에 연결된 호스트는 네트워크 계층의 주소와 데이터 링크 계층의 주소를 모두 가집니다.
컴퓨터 네트워크를 이용해 전송되는 패킷이 지나치게 많으면 네트워크의 전송 속도가 떨어집니다.
네트워크의 전송 속도가 감소하면 프로토콜 동작에 많은 영향을 미칠 수 있는데, 네트워크 트래픽이 과도하게 증가하는 문제를 조절하는 혼잡 제어(Congestion Control) 기능도 네트워크 계층에서 담당합니다.
4️⃣ 전송 계층.
전송 계층(Transport Layer)은 송신 프로세스와 수신 프로세스를 직접 연결하는 단대단(End-to-End) 통신 기능을 제공합니다.
전송 계층 아래에 있는 하위 계층은 호스트와 호스트 사이의 데이터 전송 과정에서 발생하는 문제들만 반영합니다.
반면 전송 계층은 호스트 내부에서 논리적으로 구축되는 연결 주체인 프로세스 사이의 통신 문제를 다룹니다.
전송 계층에서는 전송 오류율, 전송 속도 등과 같은 일반 사용자의 서비스 요구 유형에 대한 고려와 흐름 제어 기능도 제공합니다.
5️⃣ 세션 계층.
세션 계층(Session Layer)의 기능은 전송 계층과 거의 유사합니다.
그러나 사용자에게 원격 파일 전송이나 원격 로그인 등과 같은 상위적 연결 개념인 세션 기능을 제공한다는 점이 다릅니다.
특히 전송 계층의 연결이 일시적으로 끊어 졌을 때 이를 복구하여 세션이 유지될 수 있도록 합니다.
세션 계층에서는 송수신 호스트 사이의 대화 제어를 비롯해 상호 배타적인 동작을 제어하기 위한 토큰 제어, 일시적인 전송 장애를 해결하기 위한 동기(Synchronization) 기능 등을 제공합니다.
6️⃣ 표현 계층.
계층 5까지는 주로 데이터의 전송에 관한 내용을 다루지만 표현 계층(Presentation Layer)은 데이터의 의미(Sementic)와 표현 방법(Syntax)을 처리합니다.
즉, 통신 양단에서 서로 이해할 수 있는 표준 방식으로 데이터를 코딩(Coding)하는 문제를 다룹니다.
호스트의 데이터 표현 방법이 서로 다르면 상대방의 데이터를 이해할 수 있도록 적절하게 변환하는 과정이 필요합니다.
인터넷상에서 개인 정보의 유통과 상거래가 활발해지면서 보안의 중요성이 강조되고 있는데, 데이터를 암호화하는 기술도 표현 계층에서 다룹니다.
또한 영상 정보 같은 대용량 데이터의 크기를 줄여주는 압축도 표현 계층의 주요 기능입니다.
7️⃣ 응용 계층.
최상위의 응용 계층(Application Layer)에서는 다양하게 존재하는 응용 환경에서 필요한 기능을 다룹니다.
응용 환경은 매우 다양해 범위가 방대하지만, 초기 인터넷에서는 FTP, 텔넷, 전자 메일 서비스가 보급되었습니다.
FTP(File Transfer Protocol)는 파일 공유 서비스이며, 이 기능이 발전되어 지금은 클라우드 서비스가 보편적으로 사용되고 있습니다.
네트워크 파일을 이용할 때는 파일을 공유할 뿐 아니라 허가된 사용자가 적절한 접근 권한에 따라 사용할 수 있게 해야 합니다.
텔넷(Telnet)이 제공하는 가상 터미널, 전자 메일 등도 대표적인 초기 인터넷 서비스였습니다.
FTP와 Telnet은 최근 일반 사용자들 사이에서는 많이 사용되지 않고 있습니다.
그에 비하여 메일 서비스는 현재까지도 가장 많이 사용되는 인터넷 서비스 중 하나입니다.
현재의 인터넷 환경을 보면 스마트폰의 보급과 인공지능 기술의 발전으로 응용 계층의 범위가 폭넓게 확산되는 추세입니다.
-
🌐[Network] OSI 7계층 모델 - OSI 7계층 모델
🌐[Network] OSI 7계층 모델 - OSI 7계층 모델.
네트워크에 연결된 컴퓨터들이 데이터를 주고받으려면 서로 연동할 수 있게 표준화된 인터페이스를 지원해야 합니다.
일반적으로 컴퓨터 네트워크에서는 계층 구조로 모듈화된 프로토콜 스택(Protocol Stack)을 사용합니다.
국제 표준화 기구인 ISO가 확립한 OSI(Open System Interconnection) 7계층 모델은 개방화된 Open 데이터 통신 환경에 적합한 계층적 구현 모델의 표준입니다.
1️⃣ OSI 7계층 모델.
위 그림은 ISO(International Standard Organization)에서 제시한 OSI 7계층 모델(OSI 7 Layer Model)입니다.
연결된 두 호스트가 각각 7개 계층으로 구성된 모듈을 수행함으로써 데이터 송수신이 가능합니다.
전송 데이터는 송신 호스트의 응용 계층에서 시작해 하위 계층으로 순차적으로 전달되어, 최종적으로 물리 계층에서 수신 호스트에 전달됩니다.
수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내줍니다.
데이터가 하위 계층으로 내려갈 때는 각 계층의 프로토콜에서 정의한 헤더 정보가 추가됩니다.
물리 계층을 제외한 모든 계층에서 헤더 정보가 추가되고, 물리 계층은 단순히 데이터 링크 계층에서 수신한 데이터를 수신 호스트의 물리 계층에 전달합니다.
데이터를 수신하는 호스트에서는 반대로 상위 계층으로 올라가며 순차적으로 헤더 정보를 제거하고 해석하면서 프로토콜 기능을 수행합니다.
위 그림에 표시하지는 않았지만, 송신 호스트와 수신 호스트 사이에는 다수의 라우터 등이 존재하여 중개 기능을 합니다.
용어 정의.
임의의 호스트에서 실행되는 계층 n 모듈은 상태 호스트의 n 모듈과 논리적으로 통신하는데, 이들이 사용하는 규칙을 계층 n 프로토콜(Protocol)이라고 합니다.
프로토콜의 역할은 프로토콜에서 정의된 기능을 수행하면서 필요한 정보를 서로 교환하는 것입니다.
프로토콜 기능을 원활하게 수행하려면 주소 표현 방법, 오류 제어, 흐름 제어 등의 기능이 설계와 구현 과정에서 반영되어야 합니다.
동일 계층에 위치한 통신 양단은 같은 프로토콜을 사용하여 통신하기 때문에 동료 프로세스(Peer Process)라 합니다.
한 호스트에서 상하로 이웃하는 계층에 위치한 모듈 사이에는 인터페이스(Interface)가 정의되어 둘 사이의 접근 방법을 제한합니다.
상위 계층에서는 하위 계층의 인터페이스를 통해 하위 계층의 서비스(Service)를 이용할 수 있습니다.
송신 호스트에서 데이터를 전달할 때는 동료 프로세스에 직접 전달하는 것이 아니라, 하위 계층을 통하여 간접적으로 서비스를 요청합니다.
이 요청은 최하위에 있는 물리 계층까지 반복됩니다.
수신 호스트에서는 반대로 상위 계층으로 데이터가 전달되면서 프로토콜 기능이 동작합니다.
각 계층의 동료 프로세스가 직접 통신하는 형태를 보이지만, 실제로는 항상 물리 계층을 통해 데이터가 전송되는 것입니다.
헤더 정보.
프로토콜 스택의 맨 위에 위치한 일반 사용자는 전송 데이터가 있으면 이를 응용 계층에 보내 전송을 요청합니다.
응용 계층에서는 데이터에 자신의 프로토콜에서 정의한 헤더 정보를 추가해 표현 계층에 보냅니다.
표현 계층도 표현 계층에서 사용하는 프로토콜의 헤더 정보를 추가해 하위 계층으로 보냅니다.
이러한 일련의 과정은 물리 계층에서 데이터가 물리적으로 전송될 때까지 반복됩니다.
물리 계층에서는 수신 호스트에 데이터를 물리적으로 전송하고, 이를 수신한 호스트에서는 송신 절차와 반대 방향으로 헤더를 제거하는 과정이 반복됩니다.
즉, 계층별로 해당 계층의 헤더 정보를 해석하여 적절히 처리한 후에 상위 계층으로 올려줍니다.
따라서 송신 호스트에서 계층별로 추가된 헤더 정보가 수신 호스트에서 해석 및 삭제되어 최상위 수신사는 원래의 전송 데이터만 받습니다.
이때 각 계층의 프로토콜은 정해진 기능을 수행하여 데이터 송신 과정에서 발생하는 문제점을 해결해줍니다.
헤더 정보는 프로토콜마다 다르게 정의되며, 앞에서 설명한 주소, 오류 제어, 흐름 제어를 위한 정보들을 포함합니다.
프로토콜을 이해한다는 말은 프로토콜의 헤더 정보를 이해한다는 의미로 읽을 수 있을 정도로 헤더는 중요한 정보를 담고 있습니다.
특히, 인터넷의 기본 프로토콜인 TCP, UDP, IP의 헤더는 인터넷을 이해하는 데 많은 도움을 줍니다.
중개 기능.
위 그림에서 헤더 설명을 제외하고 중개 기능 설명을 추가하면 아래 그림이 됩니다.
그림과 같이 송신 호스트에서 수신 호스트로 데이터를 전달하려면 중개 역할을 수행하는 중개 노드를 거쳐야합니다.
중개 시스템은 데이터가 목적지까지 올바르게 전달되도록 경로 배정 기능을 수행합니다.
중개 시스템에서는 경로 배정 기능을 수행하는 네트워크 계층의 프로토콜이 동작하는데, 이와 같은 배정 기능을 라우팅(Routing)이라 합니다.
중개 노드인 라우터(Router)는 자신에게 도착한 데이터의 헤더 정보를 해석해서 적절한 경로를 선택해야 하며, 다음 라우터로 보내기 전에 헤더 정보를 수정하는 작업도 진행합니다.
라우터 좌우에 위치한 네트워크는 종류가 다를 수도 있습니다.
네트워크가 다르면 물리적인 특성뿐 아니라, 하위 계층의 헤더 정보도 다를 수 있습니다.
따라서 헤더 정보의 값을 해석하여 변환하는 작업은 라우터의 주요 기능에 해당합니다.
-
🌐[Network] 네트워크 개념 - 서비스 프리미티브
🌐[Network] 네트워크 개념 - 서비스 프리미티브.
1️⃣ 서비스 프리미티브.
프로토콜은 계층 구조로 이루어져 있고, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작합니다.
이러한 서비스는 다음에 살펴볼 프리미티브(Primitive) 형태로 구현됩니다.
계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있습니다.
연결형 서비스.
연결형(Connection-oriented) 서비스를 이용하는 절차는 크게 3단계 입니다.
먼저 데이터 전달 경로를 설정하는 연결 설정 단계가 필요합니다.
이 단계가 성공적으로 수행되어 연결이 설정되어야 다음 단계인 데이터 전송이 가능합니다.
모든 데이터의 전송이 완료되어 데이터 전송 단계를 끝내려면 연결을 끊는 연결 해제 단계가 필요합니다.
연결형 서비스의 동작 원리는 전화 시스템을 이용한 통화 절차와 매우 유사합니다.
비연결형 서비스.
비연결형(Connectionless) 서비스는 우편 시스템의 동작 원리와 비슷합니다.
연결을 설정하고 해제하는 단계가 필요 없습니다.
즉, 전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송하면 됩니다.
데이터는 독립적인 경로 선택 과정에 의해 전달되므로 도착하는 순서가 보낸 순서와 일치하지 않을 수 있습니다.
하위 계층이 상위 계층에 제공하는 서비스는 프리미티브(Primitive) 형태로 구현됩니다.
따라서 프리미티브는 하위 계층을 사용하는 방법을 정형화한 것입니다.
연결형 서비스에서 추상화될 수 있는 기본 서비스 프리미티브의 종류에는 아래의 표처럼 CONNECT, DATA, DISCONNECT가 있습니다.
프리미티브
용도
CONNECT
연결 설정
DATA
데이터 전송
DISCONNECT
연결 해제
통신 프로토콜에서 프리미티브를 올바르게 수행하려면 각 프리미티브가 아래의 표의 네 가지 기능을 포함하도록 설계해야 합니다.
표에서는 설명의 편리함을 위하여 클라이언트와 서버라는 용어를 사용했으며, 아래 그림에서는 왼쪽 호스트를 클라이언트, 오른쪽 호스트를 서버로 가정했습니다.
클라이언트에서 서버로 전달되는 요청은 Request와 Indication으로 구현되고, 서버의 응답은 Response와 Confirm으로 구현됩니다.
기능
설명
Request
클라이언트가 서버에 서비스를 요청함
Indication
서버에 서비스 요청이 도착했음을 통지함
Response
서버가 클라이언트에 서비스 응답을 회신함
Confirm
클라이언트에 응답이 도착했음을 통지함
아래 그림은 클라이언트와 서버 사이에서 서비스 프리미티브가 처리되는 원리를 설명하고 있습니다.
클라이언트의 상위 계층이 하위 계층에 Request를 요청하면 이 요청은 하위 계층 아래에 있는 차하위 계층의 도움을 받아 서버의 하위 계층에 전달됩니다.
그러면 이 요청은 서버의 상위 계층에 Indication 형태로 전달되어 서버가 클라이언트 요청을 인지합니다.
서버에서는 해당 프리미티브를 올바르게 수신하였음을 클라이언트에 통보하기 위하여 Response를 응답으로 보내고, 반대의 과정을 거쳐서 클라이언트에 Confirm 형태로 도착합니다.
이와 같은 4단계 절차를 통해 하나의 서비스 프리미티브가 처리됩니다.
위의 그림의 4단계 절차를 전화 시스템의 연결 설정인 CONNECT에 적용하여 설명하면 다음과 같습니다.
전화 거는 사람을 클라이언트, 전화 받는 사람을 서버로 가정하면, 통신 회사의 전화망은 클라이언트와 서버 기능을 모두 수행하는 하위 계층이 됩니다.
발신자가 전화번호를 누르면(Request) 전화망은 이 전화번호에 해당하는 전화기의 위치를 찾아 수신자의 전화벨(Indication)이 울리게 합니다.
수신자가 전화를 받기 위해 통화 버튼을 누르면(Request) 전화망은 이 사실을 바로 인지할 수 있습니다.
수신자가 통화 버튼을 누름과 동시에 발신자 전화기의 발신음이 끊기면서(Confirm) 통화 연결 상태가 되었음을 확인할 수 있습니다.
2️⃣ 네 가지 서비스 프리미티비의 기능.
네 가지 서비스 프리미티브의 기능을 요약하여 설명하면 다음과 같습니다.
여기서 상위 계층과 사위 계층을 프로토콜이라는 용어로 설명합니다.
Request
Request는 클라이언트가 서버에 프리미티브의 기능을 수행하도록 요청하는 것입니다.
클라이언트에서는 상위 프로토콜이 하위 프로토콜에 요청을 전달하고, 이 요청이 가장 아래의 물리 계층을 통하여 서버에 전달됩니다.
연결 설정 요청(CONNECT.Request), 데이터 전송 요청(DATA.Request), 연결 해제 요청(DISCONNECT.Request) 등이 있습니다.
Indication
물리 계층을 통하여 Request 요청을 수신한 서버는 이 요청을 물리 계층 위에 있는 하위 프로토콜에 전달합니다.
이후, Indication을 사용해서 상위 프로토콜에 프리미티브 요청이 발생했음을 알립니다.
연결 설정, 데이터 전송, 연결 해제에 대해 CONNECT.Indication, DATA.Indication, DISCONNECT.Indication 순으로 사용합니다.
Response
클라이언트로부터 프리미티브를 받은 서버에서는 Response를 이용해 클라이언트에 응답합니다.
응답의 전달 과정은 Request, indication과 반대의 순서로 진행되며, 연결 설정 요청에 대해서는 CONNECT.Reponse를 사용해 연결 허용이나 거부로 응답하고, 데이터는 DATA.Response, 연결 해제는 DISCONNECT.Response로 전달합니다.
Confirm
서버에서 보낸 응답은 Confirm 형태로 클라이언트에 회신됩니다.
연결 설정은 CONNECT.Confirm, 데이터는 DATA.Confirm, 연결 해제는 DISCONNECT.Confirm로 전달됩니다.
-
🌐[Network] 네트워크 개념 - 프로토콜 설계 시 고려 사항
🌐[Network] 네트워크 개념 - 프로토콜 설계 시 고려 사항.
1️⃣ 프로토콜 설계 시 고려 사항.
계층 구조의 통신 프로토콜을 설계할 때는 고려할 요소가 많습니다.
대표적인 것이 네트워크 호스트의 주소 표현 방법, 데이터 전송 과정의 오류 제어, 통신 양단 사이의 전송 속도를 제어하는 흐름 제어입니다.
주소 표현은 스마트폰 번호나 IP 주소와 같이 호스트를 유일하게 구분하는 용도로 사용합니다.
오류 제어는 전송 과정에서 데이터 분실, 데이터 변형 등의 오류가 발생했을 때 데이터를 복구하는 데 사용합니다.
흐름 제어는 송신자가 데이터를 너무 빨리 보내어 수신자가 미처 처리하지 못하는 문제를 해결하기 위한 목적으로 사용합니다.
1️⃣ 주소 표현.
여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하려면 상대방을 구분할 수 있는 방법이 필요합니다.
시스템을 구분하여 지칭하기 위해서 이름을 부여하는 것을 주소(Address) 체계라 합니다.
주소 체계는 시스템의 설계 과정에서 맨 먼저 고려해야 하는 중요한 개념입니다.
예를 들어, 유선 전화 시스템의 주소 표기 방법을 살펴보면 전화번호 체계는 ‘국가 코드 - 지역 코드 -번호’ 형식으로 부여됩니다.
번호 체계가 국가라는 최상위 광역 코드에서 시작해 영역을 점점 축소하는 방식으로 계층 구조에 따라 관리됩니다.
따라서 국가 코드와 지역 코드로 해당 전화기의 지리적 위치를 판단할 수 있습니다.
또 다른 주소 표현의 예로는 주민등록번호가 있습니다.
주민등록번호에는 다양한 정보가 포함되는데, yymmdd-abcdefg 형식에서 앞쪽의 yymmdd는 태어난 해의 연도, 월, 일을 의미합니다
뒤쪽의 a는 성별을 구분하는 용도로 사용되는데, 1이면 남자 2이면 여자를 의미합니다.
Y2K 문제로 인해 2000년 이후 출생자는 3이 남자, 4는 여자를 의미하도록 확장되었습니다.
즉, 1901년과 2001년에 태어난 사람은 yy로 구분하지 못하므로 a 값으로 구분해야 합니다.
주소 체계를 결정할 때는 이와 같은 확장성을 반드시 고려해야 합니다.
보통 호스트마다 주소를 하나씩 부여하지만, 다수의 호스트를 묶어 하나의 그룹 주소로 표기하기도 합니다.
이는 전통적인 통신 환경이면서 현재도 가장 많이 사용하는 일대일(1:1) 통신과 더불어, 화상 회의 등을 지원하기 위한 일대다(1:n) 통신 환경도 필요하기 때문입니다.
일대다 통신의 대표적인 유형으로는 네트워크에 연결된 모든 호스트에 데이터를 전송할 수 있는 브로드캐스팅(Broadcasting) 표기 방법과 특정 사용자를 그룹으로 묶어서 지칭하는 멀티캐스팅(Multicasting) 표기 방법이 있습니다.
예를 들어 카카오톡 앱에서 단체 전송을 하는 기능이나 줌에서 온라인 회의를 진행하는 기능이 멀티 캐스팅 표기 방법에 해당합니다.
2️⃣ 오류 제어.
네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있습니다.
전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있습니다.
전송 오류 문제를 해결하는 오류 제어(Error Control) 기능은 통신 프로토콜의 가장 기본적인 기능에 속합니다.
데이터 변형 오류는 물리 계층의 전송 매체에 의한 물리적인 오류이므로 전송 과정에서 데이터의 내용이 바뀌는 경우입니다.
이를 해결하기 위해서 데이터 링크 계층이 물리적인 정송 오류를 해결합니다.
물리적인 오류가 발생하지 않아도 프로토콜의 수행 과정에서 데이터를 분실하는 논리적인 전송 오류가 발생할 수 있습니다.
네트워크의 오류 제어 기능은 오류의 발생 사실을 인지하는 것이 먼저이고, 이후에 재전송 기능을 이용한 오류 복구 절차가 이어집니다.
위 그림은 송신호스트에서 보낸 데이터가 수신 호스트에 도착했을 때 발생할 수 있는 현상을 세 가지 유형으로 설명합니다.
(a)는 데이터가 오류 없이 도착하는 정상적인 경우이고, (b)는 데이터가 수신 호스트에 도착하지 못하는 데이터 분실 오류이며, (c)는 데이터 내용이 변경되어 도착하는 데이터 변형 오류입니다.
(b)처럼 데이터가 분실되는 원인은 매우 다양합니다.
전송 경로가 잘못되어 데이터가 엉뚱한 방향으로 전달되거나, 상위 계층의 논리적 처리 과정에서 데이터를 분실할 수도 있습니다.
데이터가 변형되거나 분실되는 오류가 발생되어 이를 해결하려면 먼저 오류가 발생한 사실을 인지해야 합니다.
(b)의 경우는 수신 호스트가 자신에게 데이터가 보내졌다는 사실을 인지하는 것이 쉽지 않습니다.
그래서 보통은 송신 호스트에서 타임아웃 등의 기능으로 오류를 감지하는 방법을 사용합니다.
(c)의 데이터 변형 오류는 수신 호스트가 CRC 방식 등의 오류 검출 기법을 이용해 오류를 검출할 수 있습니다.
즉, 데이터 분실 오류는 송신 호스트 주도로 이루어지고, 데이터 변형 오류는 수신 호스트 주도로 이루어집니다.
네트워크에서 전송 오류를 해결하는 일반적인 방법은 송신 호스트가 원래 데이터를 재전송(Retransmission)하는 것입니다.
물리적인 오류 외에도 통신 프로토콜에서 사용하는 알고리즘의 성격에 의해 오류가 발생하기도 합니다.
예를 들어, 송신 호스트가 순차적으로 전송한 데이터의 순서가 뒤바뀌어 도착하는 경우입니다.
수신 호스트에서 도착 순서를 바로잡으려면 데이터의 논리적인 순서를 의미하는 순서 번호 기능이 필요합니다.
3️⃣ 흐름 제어.
전송 매체에서 물리적인 오류가 없었는데도 데이터를 분실하는 경우가 있는데, 이는 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생합니다.
수신 호스트에 데이터가 도착하면 일단 내부 버퍼에 보관했다가 처리합니다.
그런데 내부 버퍼에 보관할 공간을 확보하지 못하면 데이터를 논리적으로 분실하는 결과가 초래됩니다.
일반적으로 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생합니다.
수신 호스트가 버퍼에 저장된 데이터를 미처 처리하지 못한 상태에서 새로운 데이터가 수신되어 일시적으로 저장할 공간이 없기 때문입니다.
이 문제를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어(Flow Control) 기능이 필요합니다.
위 그림은 가장 단순한 형태의 흐름 제어 기법을 보여줍니다.
송신 호스트가 데이터를 전송하려면 반드시 수신 호스트로부터 명시적인 전송 허가를 받아야 합니다.
그림을 보면(a)에서 송신 호스트가 i번째 데이터를 보내고 수신 호스트가 이를 제대로 받습니다.
이후에 송신 호스트가 i+1번째 데이터를 보내려면 수신 호스트의 전송 허가가 필요합니다.
수신 호스트는 데이터를 수신할 여력이 있을 경우에만 (b)와 같이 전송 허가를 보냅니다.
(c)에서 전송 허가를 수신한 후에 송신 호스트가 다음 데이터인 i+1을 전송하고 있습니다.
보통 수신 호스트의 흐름 제어에 의해 데이터 전송이 이루어집니다.
위 그림은 흐름 제어의 이해를 돕기 위한 설명이며, 실제 통신 환경에서는 전송 속도가 너무 느리므로 이 방식이 사용되지 않습니다.
일반적으로 송신 호스트는 속도를 높이기 위하여 동시에 여러 개의 전송 데이터를 송신할 수 있으며, 수신 호스트가 데이터 개수를 통제합니다.
4️⃣ 데이터 전달 방식.
프로토콜 설계 시 고려할 마지막 사항은 데이터 전달 방식입니다.
위 그림의 (c)에서 데이터를 오른쪽이나 왼쪽의 한 방향으로만 전송하는 것을 단방향(Simplex) 방식이라 하고, (a)처럼 양쪽에서 데이터를 동시에 전송하는 것을 전이중(Full Duplex) 방식이라고 합니다.
일반 도로 환경에 비유하자면 일방통행 도로가 단방향 방식이고, 중앙에 노란 실선이 그려진 도로는 전이중 방식입니다.
일반적인 통신 프로토콜들은 모두 전이중 방식을 지원합니다.
이외에도 데이터가 양방향으로 전송되지만, 특정 시점에는 한 방향으로만 전송할 수 있는 반이중(Half Duplex) 방식이 있습니다.
위 그림에서 (b)의 반이중 방식은 양쪽에서 데이터를 동시에 전송할 수 없으므로, 데이터 전송 시점을 제어할 수 있어야 합니다.
데이터 전달 방식에서는 데이터 사이의 전송 우선순위를 설정하는 방법이나 긴급 데이터를 처리하는 방법 등도 고려해야 합니다.
-
🌐[Network] 네트워크 개념 - 프로토콜의 이해
🌐[Network] 네트워크 개념 - 프로토콜의 이해
Preview
데이터 통신의 개념과 프로토콜의 동작 원리를 이해하는 데 스마트폰은 많은 도움을 줍니다.
스마트폰으로 전화를 거는 사람(송신자)과 받는 사람(수신자)은 서로 합의하여 통화 연결을 설정합니다
데이터 전송 단계인 통화 과정에서는 묵시적인 규칙에 따라 대화를 주고받는 일련의 절차가 진행됩니다.
스마트폰은 양쪽이 동시에 말할 수 있는 양방향 통신기능을 지원하지만, 실제로 두 사람이 동시에 말하는 경우는 거의 없고, 느낌이나 말의 내용 등에 따라 번갈아가며 대화합니다.
상대방이 한 말을 이해하지 못했거나 제대로 듣지 못한 경우에는 다시 묻는 방식을 통하여 오류를 바로 잡기도 합니다.
이와 같은 대화 과정의 절차나 대화 내용을 올바르게 이해하는 과정이 모두 프로토콜의 기능에 포함됩니다.
네트워크에서 데이터 전송 원리도 이와 비슷합니다.
통신 프로토콜에서 중심적으로 다루는 내용은 주소 개념을 포함하여 데이터 전송 오류에 관한 오류 복구 기능, 전송 속도 조절에 관한 흐름 제어 기능, 데이터의 전달 경로에 관한 라우팅 기능입니다.
스마트폰을 사용한 대화 과정에서 사람들이 무의식적으로 행하는 통화 기법이 통신 프로토콜의 설계 과정에 그대로 반영되어 있습니다.
그러나 통화 과정은 간단해 보여도 이를 통신 프로토콜로 작성하는 일은 생각보다 쉽지 않습니다.
인터넷의 동작 원리를 이해하려면 계층 구조로 설계된 OSI 7계층 모델에 대한 할습이 선행되어야 합니다.
특히, 모듈화 설계 개념의 원리와 상하 계층의 역할 분담에 대한 학습을 통하여 계층별 프로토콜의 역할을 이해해야 합니다.
인터넷에서 사용되는 데이터 전송 프로토콜인 TCP, UDP, IP 프로토콜은 계층 구조 모델의 원리에 따라 설계되었으며, 기타 제어 프로토콜의 동작도 계층 구조의 원리에 따라 이루어집니다.
1️⃣ 프로토콜의 이해
네트워크에 연결된 시스템이 통신하려면 정해진 규칙에 따라 순차적으로 데이터를 주고 받아야 하는데, 이러한 일련의 규칙을 “프로토콜(Protocol)” 이라 합니다.
프로토콜의 동작 과정은 전송 오류 여부, 데이터 전달 경로, 전송 속도 등 다양한 외부 요인의 영향을 받습니다.
따라서 적절한 대응 방안을 마련해 효율적으로 관리해야 하는데, 프로토콜의 설계 과정은 모듈(Module)화를 통하여 이루어집니다.
이렇게 함으로써 시스템의 복잡성을 단순화하고, 사용자에게 더 편리하고 간편한 통신 기능을 제공할 수 있습니다.
1️⃣ 계층적 모듈 구조
일반적으로 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나누어 설계합니다.
각각의 모듈은 독립적으로 동작하면서도 상호 유기적으로 통합될 수 있어야 합니다.
그러므로 모듈과 모듈을 서로 연동해 동작시키는 적절한 인터페이스가 필요합니다.
모듈화
컴퓨터를 하드웨어 측면에서 보면 CPU, 메모리, 하드디스크, LAN 카드 등과 같은 작은 부품들이 모여 하나의 시스템을 구성합니다.
복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽습니다.
또한 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처할 수 있습니다.
소프트웨어 측명에서 보면, 일반 프로그래밍 언어에서는 함수의 개념을 사용해 전체 프로그램을 모듈화할 수 있습니다.
함수별로 특정 기능을 독립적으로 수행하도록 함으로써, 각 함수가 개별적으로 설계되고 구현된다는 장점이 있습니다.
함수 사이의 인터페이스는 함수의 매개변수에 의해서만 이루어지므로 전체 시스템을 이해하기가 훨씬 쉽습니다.
즉, 함수의 역할이 매개변수로 추상화되므로 내부 구조를 이해하지 않고도 함수들을 이해할 수 있고, 이들의 모임인 전체 시스템도 쉽게 이해할 수 있습니다.
위 그림은 시스템 모듈화의 장점을 보여줍니다.
(a)처럼 전체 시스템을 기능에 따라 세 부분으로 나누어 설계할 수 있는데, 이때 각 모듈은 정해진 인터페이스에 맞게 유기적으로 연결되어야 합니다.
B 모듈은 A 모듈과 곡선 모양의 인터페이스로 연결되고, C 모듈과는 톱니 모양의 인터페이스로 연결됩니다.
A와 C 모듈은 직접 연결되는 인터페이스가 없으며, B 모듈을 통해 간접적인 관계를 유지합니다.
위 그림의 시스템을 모듈화하지 않았다면 한 부분만 고장나도 전체 시스템을 교체해야 합니다.
반면 모듈화하여 설계하면 B 모듈에 대하여 (a)의 버전 1을 (b)의 버전 2로 교체하면 됩니다.
그림에서 설명한 것과 같이 B 모듈의 동작에 오류가 확인되었거나 기능이 개선된 경우 A 모듈이나 B 모듈과 관계없이 B 모듈만 수정하는 방식입니다.
이때 모듈 내부의 처리 과정은 임의로 개선할 수 있으나, A와 C 모듈 간 인터페이스는 동일하게 유지해야 전체 시스템 동작에 영향을 주지 않습니다.
계층 구조
분할된 모듈들은 협력 관계를 유지하면서 유기적으로 동작합니다.
모듈 구조는 서로 동등한 위치에서 서비스를 주고받을 수도 있고 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조를 이루기도 합니다.
네트워크에서는 독립적인 고유 기능을 수행하는 모듈들이 상하 계층 구조로 연결되어 동작합니다.
계층 구조에서는 위 그림에서처럼 상위 계층이 하위 계층에 특정 서비스를 요청하는 방식으로 동작합니다(1).
요청을 받은 하위 계층은 해당 서비스를 실행하여 그 결과를 상위 계층에 돌려줍니다(2).
하위 계층의 실행 결과는 상위 계층에 결과 값을 직접 전달하는 방식이 될 수도 있고, 주변 환경 값을 변경하는 부수 효과(Side Effect) 방식일 수도 있습니다.
자동차의 경우를 예로 들어봅시다.
운전자가 자동차의 속도를 줄이려면 브레이크를 밟아야 하고 브레이크를 누르는 정도에 따라 속도가 줄어듭니다.
이 구조에서 운전자는 상위 계층에 해당되며, 자동차 내부에서 속도를 줄이는 기능은 하위 계층의 모듈이 됩니다.
운전자와 감속 모듈 사이에는 브레이크라는 인터페이스가 존재합니다.
브레이크 인터페이스가 정의되면 상위 계층의 운전자가 바뀌거나 하위 계층의 자동차가 바뀌어도 둘 사이의 서비스 개념을 유지할 수 있습니다.
네트워크에서 통신하는 시스템들은 계층 구조로 모듈화된 기능이 각각 동작하며, 둘 사이의 같은 계층끼리 데이터를 전달합니다.
이때 데이터를 전달하는 규칙을 프로토콜이라 합니다.
모듈화된 계층 구조 프로토콜에는 다양한 장점이 있지만, 대표적인 장점 몇 가지를 정리하면 다음과 같습니다.
복잡하고 큰 시스템을 기능별로 작게 분류해서 간단하고 작은 시스템으로 재구성할 수 있습니다.
따라서 전체 시스템을 이해하기 쉽고, 시스템을 설계하고 구현하기도 편리합니다.
상하 계층에 인접한 모듈 사이의 인터페이스를 포함하여 분할된 모듈이 연동할 수 있는 표준 인터페이스를 제공합니다.
모듈 인터페이스는 가능하면 단순하게 구현하여 모듈들이 최대한 독립적으로 동작하도록 해야합니다.
모듈의 독립성은 전체 시스템의 구조를 단순하게 만들어줍니다.
전송 매체 양단에 있는 호스트가 수행하는 프로토콜들은 좌우 대칭 구조입니다.
대칭 구조에서는 통신 양단에 위치하는 동일 계층 사이의 프로토콜을 단순화할 수 있습니다.
각 계층의 기능 오류를 수정하거나 향상시켜야 하는 경우에 전체 시스템을 재작성하지 않고 해당 계층의 모듈만 교체하면 됩니다.
즉, 상하 혹은 좌우 계층 간의 인터페이스를 유지하면 특정 계층의 내부 변경이 다른 모듈의 동작에 영향을 미치지 않습니다.
-
🌐[Network] 네트워크 기초 - Summary
🌐[Network] 네트워크 기초 - Summary.
1️⃣ 네트워크 기초 용어.
“네트워크” 는 전송 매체를 매개로 데이터를 교환하는 시스템의 모음입니다.
시스템과 전송 매체의 연결 지점에 대한 규격이 “인터페이스” 입니다.
시스템이 데이터를 교환할 때는 통신 규칙인 “프로토콜” 이 필요합니다.
“인터페이스” 와 “프로토콜” 은 서로 다른 시스템을 상호 연동해 동작시키기 위함이므로 반드시 “연동 형식의 통일” 이 필요하고, 이를 “표준화” 라 합니다.
“인터넷” 은 “IP” 라는 네트워크 프로토콜이 핵심적인 역할을 하는 “네트워크 집합체” 입니다.
2️⃣ 프로토콜.
상호 연동되는 시스템이 데이터를 교환할 때 사용하는 표준화된 규칙을 “프로토콜” 이라 합니다.
일반적으로 “프로토콜” 은 “동등한 위치에 있는 시스템 사이의 규칙이라는 측면이 강조” 되어 인터페이스와 구분 됩니다.
즉, 7계층 모델에서 프로토콜은 같은 계층 사이의 관계를 다루기 때문에 각각의 계층마다 서로 다른 프로토콜이 존재합니다.
일반적으로 프로토콜은 주고받은 데이터의 형식과 그 과정에서 발생하는 일련의 절차적 순서를 규정하고 있습니다.
3️⃣ 클라이언트와 서버.
“클라이언트와 서버” 의 개념은 “인터넷 서비스를 기준” 으로 “구분” 됩니다.
그 차이가 “서비스 단위” 로 이루어지므로 “임의의 호스트가 클라이언트나 서버로 고정”되지는 않습니다.
서비스를 제공하면 서버가 되고 이 서비스를 이용하면 클라이언트가 되므로 특정 서비스를 기준으로 상대적인 관점에서 클라이언트와 서버를 사용합니다.
다양한 서비스 제공을 목적으로 하는 특화된 호스트인 경우는 호스트 자체를 서버라 부르기도 합니다.
서버는 클라이언트보다 먼저 실행 상태가 되어 클라이언트의 요청에 대기해야 합니다.
4️⃣ OSI 7계층 모델.
다수의 시스템을 서로 연결해서 통신하려면 선행적으로 전체 시스템 구조를 표준화해야 합니다.
국제 표준화 단체인 ISO에서는 OSI 7계층 모델을 제안하여, 네트워크에 연결된 시스템이 갖추어야 할 기본 구조와 기능을 정의하고 있습니다.
응용 계층
표현 계층
세션 계층
전송 계층
네트워크 계층
데이터 링크 계층
물리 계층
이런 계층적인 구조로 기능을 세분화하였습니다.
일반 사용자는 응용 계층을 통해 데이터 전송을 요청하며, 이 요청은 물리 계층까지 순차적으로 전달되어 상대 호스트에 전송됩니다.
전송된 데이터는 물리 계층에서 순차적으로 응용 계층까지 전달됩니다.
5️⃣ 인터네트워킹.
네트워크와 네트워크의 연결을 인터네트워킹이라고 합니다.
인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이 라 부릅니다.
게이트웨이 는 기능에 따라 종류가 다양하지만
리피터
브리지
라우터
등등..
가장 일반적인 구분 방식입니다.
리피터는 물리 계층의 기능을 지원하며, 브리지는 리피터 기능에 데이터 링크 계층의 기능이 추가된 것으로 물리 계층에서 발생한 오류를 해결해줍니다.
라우터는 물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원하므로 경로 선택 기능이 존재합니다.
6️⃣ 데이터 단위.
네트워크 프로토콜을 사용해 데이터를 교환할 때는 먼저 데이터를 특정 형태로 규격화하는 작업이 필요합니다.
이와 같은 한 단위의 규격으로 묶인 전송 데이터를 데이터 단위라 하며, 계층에 상관없이 호칭할 때는 통칭하여 PDU라 부릅니다.
특별히 네트워크 계층에서는 패킷, 데이터 링크 계층에서는 프레임이라는 용어가 중요하게 사용됩니다.
7️⃣ 주소의 표현.
주소의 개념은 단순히 서로를 구분한다는 고유의 목적을 넘어 주소가 가리키는 대상의 특징을 표현할 수 있습니다.
사람들은 문자로 된 이름에 익숙하지만, 0과 1로 디지털화된 환경에서는 구분자를 숫자로 된 주소로 표현할 수밖에 없습니다.
숫자로 된 주소 표현 방식은 일반 사용자에게 불편하므로 외우기 쉬운 문자 형식의 이름을 추가로 사용합니다.
인터넷에서 일반 사용자는 문자로 된 이름을 사용하고, 인터넷 내부는 숫자로 된 주소를 사용하므로 둘 사이의 변환 기능이 필요합니다.
주소에서 구분자는 유일성, 확장성, 편리성, 정보의 함축이라는 네 가지 특징을 갖습니다.
8️⃣ IP 주소.
IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소 체계입니다.
임의의 호스트를 인터넷에 연결하려면 반드시 IP 주소를 할당받아야 합니다.
IP 주소는 32비트의 이진 숫자로 구성되는데, 보통 8비트씩 네 부분으로 나누어 십진수로 표현합니다.
IP 주소는 유일성을 보장하기 위해서 국제 표준화 기구가 전체 주소를 관리하고 할당하기 때문에 중복 주소의 사용을 원천적으로 차단합니다.
IP 주소는 임의로 할당되는 것이 아니라, 특정 규칙에 따라 인접한 주소들을 그룹으로 묶어 관리합니다.
따라서 IP 주소는 네트워크 계층에서 경로를 선택할 때 중요한 기준이 됩니다.
9️⃣ DNS 서비스
인터넷에서 호스트와 연결하려면 해당 호스트의 IP 주소를 알아야합니다.
그런데 숫자로 된 IP 주소는 기억하기 힘들어서 의미 파악이 쉬운 문자로 된 호스트 이름을 사용하는 것이 일반적입니다.
따라서 가장 먼저 수행할 작업은 DNS라는 이름과 주소 변환 기능을 이용해서 IP 주소를 얻는 것입니다.
DNS는 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템입니다.
호스트 주소와 이름 정보는 네임 서버라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이 필요한 클라이언트는 네임 서버에 요청해서 IP 주소를 얻습니다.
1️⃣0️⃣ 다양한 주소의 종류
네트워크에서 사용하는 주소는 이를 사용하는 환경에 따라 다양합니다.
OSI 7계층 모델의 각 계층에서도 목적에 따라 여러 형탱의 주소가 사용됩니다.
MAC 주소는 계층 2의 MAC 계층에서 사용하며, 일반적으로 LAN 카드에 내장되어 있습니다.
물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해서 호스트를 구분합니다.
IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜에서 사용되며, IP 패킷이 지나가는 경로를 결정하는 라우팅의 기준이 됩니다.
포트 주소는 전송 계층에서 사용하며, 호스트에서 실행되는 프로세스를 구분해줍니다.
메일 주소는 응용 계층의 메일 시스템에서 사용자를 구분하려고 사용합니다.
-
🌐[Network] 주소 정보의 관리
🌐[Network] 주소 정보의 관리.
일반 사용자가 호스트를 지칭할 때 사용하는 호스트 이름을 도메인 이름(Domain Name)이라 하며, 인터넷에서는 www.korea.co.kr과 같은 도메인 이름을 IP 주소로 변환하는 작업이 필요합니다.
초기 인터넷에서는 아주 간단한 방법으로 호스트 이름과 IP 주소를 변환하였으나, 지금은 DNS라는 분산 데이터베이스 시스템을 사용해서 보다 체계적인 방법으로 관리하고 있습니다.
1️⃣ 호스트 파일.
호스트 이름과 IP 주소를 변환하는 간단한 방법은 특정 파일(예: UNIX 시스템의 /etc/hosts)에 호스트 이름과 IP 주소의 조합을 기록하여 관리하는 것입니다.
네트워크 응용 프로그램에서는 사용자가 입력한 호스트 이름을 이 파일에서 검색하여 일대일로 대응된 IP 주소 정보를 쉽게 얻을 수 있습니다.
호스트 파일은 한 줄에 하나의 호스트 정보가 기록되며, 일반 텍스트 문서 형식으로 보관됩니다.
즉, 아래의 그림을 예로 들면 호스트 이름이 white.korea.co.kr인 시스템의 IP 주소는 211.223.201.27입니다.
네트워크 관리자는 관리 대상이 되는 모든 호스트의 이름, 주소 정보를 주기적으로 갱신하고, 이 정보를 네트워크에 연결된 모든 호스트가 복사하도록 함으로써 정보의 일관성을 유지해야 합니다.
위 그림은 네트워크 관리자가 white.korea.co.kr 에서 호스트 정보를 갱신할 때 갱신된 정보를 다른 4개의 호스트가 복사하여 저장하는 모습을 보여줍니다.
소스트 파일을 갱신하고 복사하는 작업은 보통 시스템 관리자가 수작업으로 했었습니다.
호스트가 추가되거나 삭제되면 먼저 네트워크 관리자의 호스트에서 갱신 작업이 이루어집니다
그런데 인터넷이 처음 보급되던 시기에는 호스트 파일 갱신이 생각보다 자주 발생하지 않았기 때문에 호스트 파일을 복사하는 작업도 흔하지 않았습니다.
또한 시스템 관리자가 잦은 변경을 원하지 않아서 급하지 않은 갱신은 부분적으로 늦추기도 했습니다.
하지만 지금은 DNS 서비스가 보편적으로 사용되고 있어 이처럼 호스트 파일로 관리하는 방식은 보조적으로만 사용되고 있습니다.
2️⃣ DNS
호스트 파일로 주소와 이름 정보를 관리하는 것은 간단하지만 대부분 수동으로 작업해야 한다는 단점이 있습니다.
인터넷이 확산되면서 호스트 수가 증가할수록 네트워크 관리자가 호스트 파일을 갱신하고 복사하는 작업에 많은 시간과 노력을 들여야 합니다.
특히 지금과 같이 전 세계 컴퓨터가 연결된 네트워크 환경에서는 호스트 파일로 주소와 이름을 변환하는 작업이 사실상 불가능하다고 볼 수 있습니다.
DNS(Domain Name System)는 이러한 문제점을 해결하기 위하여 고안된 것으로, 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템입니다.
호스트 주소와 이름 정보는 네임 서버(Name Server)라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이 필요한 클라이언트 네입 서버에서 요청해서 IP 주소를 얻습니다.
네트워크가 커지면 네임 서버에 보관되는 정보의 양도 자연스럽게 많아집니다.
DNS는 하나의 집중화된 네임 서버가 전체 호스트의 정보를 관리하지 않고, 여러 네임 서버에 분산하여 관리하도록 설계되었습니다.
계층 구조로 연결된 네임 서버는 자신이 관리하는 영역에 위치한 호스트 정보만 관리하며, 정보를 상호 교환하는 협력 관계를 통해서 전체 호스트 정보를 일관성 있게 유지합니다.
3️⃣ 기타 주소
네트워크에서 사용하는 주소는 이를 사용하는 환경에 따라 다양합니다.
OSI 7계층 모델의 각 계층에서도 목적에 따라 여러 형태의 주소가 사용됩니다.
인터넷에서 일반 사용자가 접할 수 있는 대표적인 주소들.
MAC 주소
MAC 주소는 계층 2의 MAC(Medium Access Protocol) 계층에서 사용하며, 일반적으로 LAN 카드에 내장되어 있습니다.
물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해서 호스트를 구분합니다.
따라서 네트워크 계층이 하위의 데이터 링크 계층에 데이터 전송을 요청하면 먼저 IP 주소를 MAC 주소로 변환하는 작업이 이루어지고, 이후 MAC 계층이 상대방 MAC 계층에 데이터를 전송할 수 있습니다.
IP 주소
IP 주소는 인터넷에서 네트워크 계층의 기능을 수행하는 IP 프로토콜에서 사용되며, 송신자 IP 주소와 수신자 IP 주소로 구분됩니다.
수신자 IP 주소는 IP 패킷이 지나가는 경로를 결정하는 라우팅의 기준이 됩니다.
포트 주소
포트 주소(Port Address)는 전송 계층에서 사용하며, 호스트에서 실행되는 프로세스를 구분해줍니다.
인터넷에서 연결의 완성은 호스트와 호스트 사이가 아닌, 네트워크 응용 프로세스와 네트워크 응용 프로세스 사이입니다.
예를 들어, 내 스마트폰의 메신저 앱과 상대방 스마트폰의 메신저 앱 사이의 연결이 필요하다.
이때, 하나의 IP 주소를 갖는 스마트폰에서 실행되는 여러 네트워크 응용 앱들을 구분하는 주소가 포트 주소입니다.
인터넷의 전송 계층 프로토콜인 TCP와 UDP가 독립적으로 포트 주소를 관리하며, 포트 번호 또는 소켓 주소라는 용어를 사용하기도 합니다.
메일 주소
메일 주소는 응용 계층의 메일 시스템에서 사용자를 구분하려고 사용합니다.
kobe@korea.co.kr 처럼 사용자 이름과 호스트 이름을 @ 문자로 구분해 표기합니다.
-
🌐[Network] 주소와 이름
🌐[Network] 주소와 이름.
시스템을 지칭하는 구분자는 내부에서 처리되는 숫자 기반의 주소(Address)와 함께 사용자의 이해와 편리성을 도모하는 문자로 된 이름(Name)을 제공해야 합니다.
일반 사용자는 내부 주소를 몰라도 이름만으로 시스템에 접근할 수 있어야 하며, 이름과 주소를 연결하는 방법은 시스템 내부적으로 처리되어야 합니다.
네트워크의 규모가 크지 않아서 관리하는 시스템의 개수가 적은 경우에는 간단한 형식의 주소와 이름을 사용할 수 있으므로 이를 관리하는 시스템도 크게 복잡하지 않습니다.
그러나 관리 대상이 많아지면 주소와 이름의 공간이 커지고, 이를 관리하는 시스템의 기능도 복잡해집니다.
네트워크에는 여러 종류의 주소와 이름이 존재합니다.
이는 각 계층의 기능을 담당하는 프로토콜마다 주소를 독립적으로 관리하기 때문입니다.
예를 들어, IP 프로토콜은 호스트를 구분하기 위하여 IP 주소를 사용하며, 데이터 링크 계층에서는 LAN 카드별로 MAC 주소를 따로 부여합니다.
전송 계층을 수행하는 TCP에서는 호스트에서 수행되는 네트워크 프로세스마다 별도의 포트(Port) 주소를 할당하고 관리합니다.
1️⃣ IP 주소
IP 주소(IP Address)는 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소 체계입니다.
임의의 호스트를 인터넷에 연결하려면 반드시 IP 주소를 할당 받아야 합니다.
IP 주소는 32비트의 이진 숫자로 구성되는데, 보통 8비트씩 네 부분으로 나누어 십진수로 표현합니다.
위 그림은 32비트의 이진수 11010011 11011111 11001001 00011110은 인터넷에서 사용하는 실제 IP 주소입니다.
일반 사용자는 이진수에 익숙하지 않고, 그 길이도 길어서 외우기 쉽지 않습니다.
따라서 이를 4개의 십진수로 변환한 후 각각을 점(.)으로 구분한 211.223.201.30으로 표기합니다.
이와 같은 숫자로 된 주소조차 외우기 어려우므로 문자로된 www.korea.co.kr 등의 도메인 이름을 사용합니다.
IP 주소는 유일성을 보장하기 위해서 국제 표준화 기구가 전체 주소를 관리하고 할당하기 때문에 중복 주소의 사용을 원천적으로 차단합니다.
IP 프로토콜이 처음 개발될 당시에는 현재처럼 폭넓게 활용되리라 예측하지 못했습니다.
따라서 IP 주소로 표현할 수 있는 최대 주소 공간의 크기를 32비트로 제한함으로써 확장성에 많은 문제점이 야기되고 있습니다.
이를 해결하기 위하여 새로운 프로토콜인 IPv6(Internet Protocol Version 6)에서는 주소 표현 공간을 128비트로 확장했습니다.
그리고 현재의 IP 프로토콜은 IPv6과 구분하기 위해 IPv4로 표현합니다.
IP 주소는 임의로 할당되는 것이 아니라, 특정 규칙에 따라 인접한 주소들을 그룹으로 묶어 관리합니다.
따라서 IP 주소는 네트워크 계층에서 경로를 선택할 때 중요한 기준이 됩니다.
위 그림에서 네트워크 1에는 IP 주소가 211.223.201로 시작하는 호스트들이 있고, 네트워크 2에는 211.223.202로 시작하는 호스트들이 있습니다.
왼쪽의 인터넷에서 임의의 호스트가 보낸 패킷이 중간의 라우터에 도착한 경우 이 패킷의 목적지 주소가 211.223.201.30 이라면 당연히 네트워크 1로 중개해야 합니다.
이처럼 인터넷에서 IP 주소는 패킷의 경로를 결정하는 데 중요한 역할을 합니다.
그림에 설명된 원리에 의하여, 인터넷에서 네트워크 계층 기능을 수행하는 IP 프로토콜이 전송 패킷의 경로를 결정합니다.
2️⃣ 호스트 이름
인터넷에서 특정 호스트와 연결하려면 반드시 해당 호스트의 IP 주소를 알아야 하고, 인터넷 내부의 네트워크 계층은 호스트를 IP 주소로 구분합니다.
그런데 일반 사용자는 숫자로 된 IP 주소를 기억하기 힘듭니다.
그래서 사용자들은 의미 파악이 쉬운 문자로 된 호스트 이름을 사용하는 것이 일반적입니다.
위 그림은 일반 사용자가 문자로 된 호스트 이름을 사용하였을 때 IP 주소로 변환되는 과정을 보여줍니다.
맨 밑에 있는 네트워크 계층의 IP 프로토콜은 호스트를 구분하는 용도로 IP 주소만 사용합니다.
그에 비해 일반 사용자는 IP 주소보다는 문자로 된 호스트 이름을 사용하기 때문에 중간 계층에서 이를 변환하는 기능을 수행해야 합니다.
일반적으로 FTP, 텔넷과 같은 네트워크 응용 프로그램은 실행 과정에서 사용자로부터 호스트 이름을 명령어 인수로 입력받습니다.
따라서 가장 먼저 수행할 작업은 DNS(Domain Name System)라는 이름과 주소 변환 기능을 이용해서 IP 주소를 얻는 것입니다.
이후 변환된 IP 주소의 호스트에 연결 설정이나 전송 데이터가 포함된 패킷을 전송합니다.
DNS 서비스는 호스트 이름을 , , , 라는 네 계층 구조로 나누고, 이들을 점(.)으로 구분해서 표기합니다.
예를 들어, www.korea.co.kr과 같은 호스트 이름은 대한민국(kr)에 있는 일반 회사(co) 중에서 korea라는 이름의 회사에 소속된 www라는 호스트를 의미합니다.
<호스트>.<단체 이름>.<단체 종류>.<국가 도메인>
은 가 위치한 국가의 이름을 두 글자의 약자로 표시합니다.
아래의 표처럼 나라마다 고유한 <국가 도메인이 존재합니다.
는 기관의 성격에 따라 부여하며, 사용 예는 아래의 표와 같습니다.
은 보통 단체를 상징하는 이름을 사용합니다.
예를 들어, 회사는 회사명을, 학교는 학교 이름을 사용합니다.
마지막으로 는 소속 단체의 네트워크 관리자가 내부 규칙에 따라 개별 호스테에 부여한 이름을 사용합니다.
-
🌐[Network] 주소의 표현
🌐[Network] 주소의 표현.
시스템을 설계할 때는 기능이나 목적과 함께 고유의 구분자(Identifier)를 부여하는 방법에 대해서도 우선하여 고려해야 합니다.
일반적으로 주소의 개념은 단순히 서로를 구분한다는 고유 목적을 넘어서 주소가 가리키는 대상의 특징을 표현할 수 있습니다.
사람들은 문자로 된 이름에 익숙하지만, 0과 1로 디지털화된 환경에서는 구분자를 숫자로 된 주소로 표현할 수밖에 없습니다.
디지털 환경에서 숫자로 된 주소 표현 방식은 일반 사용자에게 불편하므로 보통은 외우기 쉬운 문자 형식의 이름을 추가로 사용합니다.
주소와 이름은 일대일(1:1) 관계가 이루어지며, 이들은 연결하는 기능이 필요합니다.
인터넷에서 일반 사용자는 문자로 된 이름을 사용하고, 인터넷 내부는 숫자로 된 주소를 사용하므로 둘 사이의 변환 기능이 필요합니다.
대상을 유일하게 구별하는 구분자는 일반적으로 다음의 네 가지 특징이 있습니다.
1️⃣ 유일성
구분자의 가장 중요한 역할은 대상을 서로 구분하여 지칭하는 것입니다.
따라서 서로 다른 대상이 같은 구분자를 갖지 않는 유일성을 보장해야 합니다.
그러나 이론적으로 완전한 확장성을 전제로 하는 유일성을 보장하기는 불가능합니다.
예를 들어, 주민 번호에서 앞쪽 여섯 글자인 생년월일은 100년 이내에 출생한 사람들만 구분할 수 있습니다.
현재는 방편적으로 바로 뒤의 남녀 구분 자리(1900년대 출생자는 1,2를 사용하고, 2000년대 출생자는 3,4를 사용함)를 활용하여 제한적인 확장성을 확보하고 있을 뿐 입니다.
2️⃣ 확장성
시스템은 시간이 흐르면서 이용자가 증가하는 보편화 과정이 진행되므로 자연스럽게 규모가 확장됩니다.
따라서 사용하는 구분자의 양도 증가합니다.
시스템의 최대 수용 규모를 예측하여 구분자의 최대 한계를 올바르게 설정하지 않으면, 표현할 수 있는 공간의 크기가 제한되어 시스템의 확장성도 제한받게 됩니다.
합리적인 기준을 설정하여 확장의 정도를 예측하고, 또한 그 이후에 대한 고려도 함께 이루어져야 합니다.
처음 인터넷을 설계했을 때 지금과 같은 규모로 인터넷을 이용하리라고는 예측하지 못했습니다.
그 결과 인터넷 구분자인 IP 주소의 고갈 문제에 직면해 있습니다.
3️⃣ 편리성
시스템 설계 과정에서 부여되는 구분자는 시스템의 내부 처리 구조를 효율적으로 운용할 수 있도록 해주어야 합니다.
컴퓨터 시스템은 내부적으로 숫자에 기반해 처리되기 때문에 구분자의 체계도 숫자 위주입니다.
또한 배치, 검색 등을 원활하게 수행하기 위해 보통 일반인이 의미를 이해할 수 없는 형식을 갖습니다.
이처럼 시스템 내부 동작에 종속된 구분자의 주소 체계는 사용자가 쉽게 이해하기 어려우므로 문자로 된 이름을 추가로 부여합니다.
따라서 숫자로 된 주소와 문자로 된 이름을 모두 가지므로 이를 매핑(Mapping)하는 기능이 필요합니다.
4️⃣ 정보의 함축
구분자는 응용 환경에 필요한 다양한 정보를 포함하는 경우가 많습니다.
예를 들어, 주민 번호는 생년월일, 성별 등을 알 수 있는 숫자로 구성되어 있습니다.
집 주소도 광역시부터 시작해 지역을 소규모로 분할하는 구조로 되어 있어 집의 지리적인 위치를 쉽게 가늠할 수 있습니다.
이처럼 분자는 응용 환경에 적절히 대응할 수 있는 부가 정보를 포함해야 합니다.
-
-
🌐[Network] 인터네트워킹
🌐[Network] 인터네트워킹
네트워크와 네트워크의 연결을 인터네트워킹(Internetworking)이라 하며, 연결되는 네트워크 수가 증가할수록 복잡도가 커집니다.
인터넷은 IP 프로토콜을 지원하는 전 세계의 모든 네트워크가 반복 구조로 연결된 시스템을 의미하며, 라우터라는 중개 장비를 사용해서 네트워크들을 연결합니다.
1️⃣ 네트워크의 연결
위 그림처럼 서로 독립적으로 운영되는 2개 이상의 네트워크가 연동되어 정보를 교환하려면, 이를 적절히 연결하여 데이터를 중개할 수 있는 인터네트워킹 시스템이 필요합니다.
여기에서 네트워크가 연동된다는 의미는 물리적인 연결뿐 아니라, 데이터 중개에 필요한 상위의 네트워크 프로토콜들이 지원됨을 뜻합니다.
인터넷에서 인터네트워킹 시스템의 주요 기능은 전송 데이터의 경로 선택과 관계가 있습니다.
예를 들어 위 그림의 네트워크 1에서 유입된 데이터를 네트워크 2와 네트워크 3의 누구에게 보낼 것인가를 선택해야 합니다.
이 기능은 7계층 모델에서 네트워크 계층에 포함되므로 인터네트워킹 시스템은 네트워크 계층을 포함한 하위 3개 계층의 기능을 수행합니다.
그림의 예는 일반 도로로 비유하자면 삼거리의 경우와 유사하며, 여기서 자동차 내비게이션 기능이 인터네트워킹 시스템의 주요 기능에 해당합니다.
인터넷의 내부 구조는 이와 같은 인터네트워킹 시스템들이 복잡하게 연결되어 상호 유기적인 협조 체제로 동작합니다.
인터네트워킹 시스템에 연결된 네트워크들은 물리적으로 같은 종류일 필요가 없으며, 상위 계층 프로토콜들이 지원하는 논리적 기능도 다를 수 있습니다.
하지만 인터네트워킹 시스템은 연결된 모든 네트워크에 대하여 물리적이고 논리적인 인터페이스를 모두 지원해야 합니다.
즉, 위 그림에서 인터네트워킹 시스템은 네트워크 1, 네트워크 2, 네트워크 3과 개별적으로 연동할 수 있어야 합니다.
또한 이 과정에서 데이터 표현 방식을 포함해 양쪽 네트워크의 프로토콜이 서로 일치하지 않으면 필요한 변환 작업을 수행해야 합니다.
이러한 방식으로 인터네트워킹 시스템은 둘 이상의 네트워크를 유기적으로 연동할 수 있습니다.
2️⃣ 게이트웨이
인터네트워킹 시스템은 용어 자체로 의미를 쉽게 설명하고 이해시키기 위한 개념적인 명칭이며, 인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이(Gateway)라 부릅니다.
게이트웨이의 종류는 다양하지만, 일반적으로 지원할 수 있는 기능의 한계에 따라 리피터, 브리지, 라우터 등으로 나뉩니다.
1️⃣ 리피터(Repeater)
리피터(Repeater)는 물리 계층의 기능을 지원합니다.
물리적 신호는 전송 거리가 멀수록 감쇄되기 때문에 중간에 이를 보완해주어야 합니다.
예를 들어, 사람의 목소리는 멀리 전달될수록 세기가 약해져서 점점 알아들을 수 없게 됩니다.
이와 같이 네트워크에서도 무선 신호 혹은 유선의 전기적 신호도 거리가 멀어질수록 신호의 크기가 약해집니다.
따라서 리피터는 한쪽에서 입력된 신호를 물리적으로 단순히 증폭하여 다른 쪽으로 중개하는 역할을 합니다.
2️⃣ 브리스(Bridge)
리피터는 단순히 신호를 증폭하는 역할을 하며, 전송과정에서 발생하는 물리적인 오류 문제는 다루지 않습니다.
이를 보완한 브리지(Bridge)는 리피터 기능에 데이터 링크 계틍의 기능이 추가 된 것으로 물리 계층에서 발생한 오류를 해결해줍니다.
예를 들어, 가정에서 사용하는 무선 공유기는 유무선 기능을 모두 지원하는 브리지의 예입니다.
3️⃣ 라우터(Router)
라우터(Router)는 물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원합니다.
네트워크 계층은 경로 선택 기능을 제공해야 하므로 임의의 네트워크에서 들어온 데이터를 어느 네트워크로 전달할지 판단할 수 있어야 합니다.
이를 위하여 라우터는 자신과 연결된 네트워크와 호스트들의 정보를 유지,관리함으로써 특정 경로가 이용 가능한지 여부와 다수의 경로 중에서 어느 경로가 빠른 데이터 전송을 지원하는지 판단할 수 있어야 합니다.
네트워크와 호스트에 대한 정보는 일반적으로 라우팅 테이블(Routing Table)에 보관됩니다.
-
-
🌐[Network] 프로토콜과 인터페이스(Protocol and Interface)
🌐[Network] 프로토콜과 인터페이스(Protocol and Interface)
1️⃣ 프로토콜과 인터페이스(Protocol and Interface).
네트워크 사용자가 통신한다는 것은 데이터를 서로 주고받는다는 것을 의미합니다.
최종 사용자가 데이터를 보내고 받으려면 양쪽 호스트에서 실행되는 OSI 7계층의 모듈이 유기적으로 연동되어야 합니다.
즉, 호스트끼리 통신하는 과정에서는 각 계층의 모듈이 상대 호스트의 동일 계층과 개별적으로 논리적 통신을 수행해야 합니다.
예를 들어, 통신 양단의 한쪽 호스트의 계층 n 모듈은 상대 호스트의 계층 n 모듈과 통신합니다.
이와 같이 각각의 계층은 정해진 방식과 절차에 따라 상대 계층과 통신하는데, “이 과정에서 필요한 규칙을 프로토콜(Protocol)” 이라고 합니다.
“상하위의 계층 간에는 인터페이스(Interface)” 라는 규칙이 존재하고, “하위 계층이 상위 계층에 제공하는 인터페이스를 특별히 서비스(Service)” 라 부릅니다.
위 그림은 계층 n과 계층 n-1의 2개 모듈로 구성된 계층 모델에서 서로 다른 두 호스트의 통신을 지원하기 위한 모듈 간의 관계를 프로토콜, 서비스, 데이터 전송의 관점에서 설명합니다.
한 호스트를 기준으로 데이터 전송은 위아래 양방향으로 모두 가능하며, 두 호스트 사이에서는 좌우 양방향으로 모두 가능합니다.
다만, 좌우 간의 물리적인 데이터 전송은 반드시 가장 아래의 물리 계층을 통하여 이루어집니다.
호스트 1과 호스트 2의 계층 n 프로토콜이 서로 통신하려면 계층 n-1 프로토콜의 서비스가 필요합니다.
즉, 호스트 1의 계층 n이 호스트 2의 계층 n에 데이터를 전송하는 과정은 하위의 계층 n-1을 통해 이루어집니다.
먼저, 호스트 1의 계층 n-1에 전송할 데이터를 주어 호스트 2에 전송하도록 부탁합니다.
그러면 호스트 1의 계층 n-1은 다시 하위 계층의 도움을 받아 호스트 2의 계층 n-1에 데이터를 보냅니다.
마지막으로 호스트 2의 계층 n-1이 수신한 데이터를 계층 n에 올려줌으로써 계층 n 사이의 통신이 완료됩니다.
이 원리는 ISO 7계층 모델에서 7개 계층에 모두 적용되며, 상대 호스트에 물리적으로 데이터를 전송하는 것은 맨 아래의 물리 계층입니다.
물리 계층 위에 있는 계층 프로토콜들은 각자의 정해진 기능을 수행하면서 논리적인 통신을 하는 것입니다.
-
🌐[Network] 네트워크 세그먼트(Network Segment).
🌐 네트워크 세그먼트(Network Segment).
1️⃣ 세그먼트(Segment).
네트워크 세그먼트(Network Segment)를 알아보기 전에 세그먼트(Segment)가 어떤 뜻을 가지고 있는지 궁금했습니다.
TTA 정보통신용어사전에서는 다음과 같이 세그먼트를 정의하고 있었습니다.
서로 구분되는 기억 장치 의 연속된 한 영역.
어떤 프로그램이 너무 커서 한 번에 주기억 장치 에 올라올 수 없이 갈아넣기 기법을 사용하여 쪼개었을 때, 나뉜 각 부분을 가리키는 말.
세그먼테이션 방식의 가상 기억 장치 에서 사용되는 것으로, 페이징에서 페이지와 비슷하나 길이가 가변이고 기억 장치 의 어느 곳에서도 자리할 수 있는 기억 장소 영역을 가리키는 말.
한 세그먼트는 프로그램의 논리적인 한 구성 단위를 저장한다.
계층 모형의 데이터베이스 에서 여러 항목이 모여 레코드에 해당하는 단위.
2️⃣ 네트워크 세그먼트(Network Segment).
네트워크 세그먼트(Network Segment)는 네트워크 내에서 논리적 또는 물리적으로 분리된 하나의 부분 또는 구역을 의미합니다.
네트워크를 여러 세그먼트로 나누는 것은 네트워크의 성능을 최적화하고, 보안을 강화하며, 트래픽 관리를 효율적으로 ㅎ기 위한 일반적인 방법입니다.
1️⃣ 네트워크 세그먼트의 주요 개념.
1. 물리적 세그먼트
물리적 네트워크 세그먼트는 실제 네트워크 장비(스위치, 라우터 등)와 물리적 케이블을 통해 분리된 네트워크 구역입니다.
예를 들어, 한 사무실 내에서 여러 층에 있는 네트워크가 각기 다른 물리적 스위치에 연결되어 있다면, 이들 층은 물리적으로 서로 다른 네트워크 세그먼트로 간주될 수 있습니다.
2. 논리적 세그먼트
논리적 네트워크 세그먼트는 물리적 인프라와 무관하게 네트워크를 논리적으로 나누는 것을 의미합니다.
이는 주로 VLAN(가상 로컬 영역 네트워크) 이나 서브넷(Subnet) 을 사용하여 이루어집니다.
예를 들어, 동일한 물리적 네트워크 내에서 서로 다른 부서의 컴퓨터를 논리적으로 분리하여 독립된 네트워크 세그먼트로 만들 수 있습니다.
2️⃣ 네트워크 세그먼트의 주요 목적.
1. 보안 강화
네트워크 세그먼트는 네트워크를 여러 개의 작은 구역으로 나누어, 각 구역의 트래픽을 독립적으로 관리하고 보호할 수 있습니다.
이를 통해 민감한 데이터를 처리하는 부서나 서버를 외부와 분리하여 보안을 강화할 수 있습니다.
2. 성능 최적화
네트워크를 세그먼트로 나누면 네트워크의 트래픽이 특정 구역 내에서만 흐르게 하여, 트래픽 혼잡을 줄이고 전체 네트워크의 성능을 향상시킬 수 있습니다.
예를 들어, 대용량 파일 전송이 필요한 부서의 네트워크 세그먼트를 다른 부서와 분리함으로써, 다른 부서의 네트워크 성능에 영향을 주지 않도록 할 수 있습니다.
3. 트래픽 관리
네트워크 세그먼트를 통해 트래픽을 효과적으로 관리하고, 특정 세그먼트의 트래픽을 제거할 수 있습니다.
네트워크 관리자는 각 세그먼트에 대해 별도의 라우팅 규칙, 방화벽 규칙 등을 적용할 수 있습니다.
4. 내결함성 향상
네트워크가 세그먼트로 분리되어 있으면, 한 세그먼트에서 발생한 문제가 다른 세그먼트로 확산되지 않도록 방지할 수 있습니다.
예를 들어, 한 세그먼트에서 발생한 네트워크 장애가 전체 네트워크에 영향을 미치지 않게 할 수 있습니다.
3️⃣ 예시: 서브넷을 이용한 네트워크 세그먼트.
서브넷은 네트워크 세그먼트의 한 유형입니다.
예를 들어, ‘10.0.0.0/16’ IP 주소 블록을 가진 VPC에서 ‘10.0.1.0/24’ 와 ‘10.0.2.0/24’ 라는 두 개의 서브넷을 생성할 수 있습니다.
이 두 서브넷은 동일한 VPC 내에서 서로 독립된 네트워크 세그먼트를 구성합니다.
이로 인해 한 서브넷에서 발생한 네트워크 트래픽은 기본적으로 다른 서브넷에 영향을 미치지 않습니다.
✏️ 요약
요약하자면, 네트워크 세그먼트는 네트워크를 보다 안전하고 효율적으로 운영하기 위해 분리된 네트워크 구역을 의미하며, 물리적 또는 논리적으로 구성될 수 있습니다.
-
-
🌐[Network] OSI 7계층 모델.
🌐[Network] OSI 7계층 모델.
다수의 시스템을 서로 연결해서 통신하려면 선행적으로 전체 시스템 구조를 표준화해야 합니다.
국제 표준화 단체인 ISO(International Standard Organization)에서는 OSI(Open Systems Interconnection) 7계층 모델을 제안하여, 네트워크에 연결된 시스템이 갖추어야 할 기본 구조와 기능을 상세히 정의하고 있습니다.
1️⃣ 계층 구조.
OSI 7계층 모델(OSI 7 Layer Model)에 따르면, 네트워크에 연결된 호스트들은 위 그림과 같이 7개 계층으로 모듈화된 전송 기능을 갖추어야 합니다.
일반 사용자는 OSI 7계층 맨 위에 있는 응용 계층을 통해 데이터의 송수신을 요청하며, 이 요청은 하위 계층에 순차적으로 전달되어 맨 아래에 있는 물리 계층을 통해 상대 호스트에 전송됩니다.
그리고 요청이 각 계층으로 하달되는 과정에서 송수신 호스트 사이의 라우터들이 중개 기능을 수행합니다.
일반적으로 라우터는 하위 3개 계층의 기능만 수행합니다.
데이터를 수신하는 호스트에서는 송신 호스트와는 반대 방향으로 처리가 이루어집니다.
즉, 물리 계층으로 들어온 데이터는 순차적인 상향 전달 과정을 거쳐 응용 계층으로 올라갑니다.
수신 호스트에서 처리가 완료된 결과를 회신할 때는 반대 과정을 순차적으로 밟아서 송신 호스트로 되돌아갑니다.
데이터를 송수신하는 최종 주체는 송수신 호스트 양쪽에 위치한 응용 계층이며, 하부 계층인 표현 계층은 응용 계층을 지원하기 위한 고유 기능을 수행합니다.
이와 같은 계층 구조의 원리는 모든 상하 계층에 대하여 상대적으로 적용되며, 각각의 계층들은 데이터 전송에 필요한 기능들을 나누어 처리합니다.
1️⃣ 계층별 기능.
OSI 7계층 모델의 각 계층은 독립적인 고유 기능을 수행하며, 하위 계층이 바로 위 계층에서 서비스를 제공하는 형식으로 동작합니다.
1️⃣ 물리 계층(Physical Layer).
네트워크에서 호스트들이 데이터를 전송하려면 반드시 물리적인 전송 매체로 연결되어 있어야 합니다.
물리 계층(Physical Layer)은 호스트를 전송 매체와 연결하기 위한 인터페이스 규칙과 전송 매체의 특성을 다루며, 크게 유선 매체와 무선 매체로 구분됩니다.
2️⃣ 데이터 링크 계층(Data Link Layer).
물리 계층으로 데이터를 전송하는 과정에서는 잡음(Noise)등과 같은 여러 외부 요인에 의하여 물리적인 오류가 발생할 수 있습니다.
데이터 링크 계층(Data Link Layer)은 물리 계층의 오류에 관한 오류 제어(Error Control) 기능을 수행하며, 이를 위해서는 오류의 발생 사실을 인지하는 기능과 오류 복구 기능이 필요합니다.
물리 계층은 물리적 전송 오류를 감지(Sense)하는 기능을 제공해 상위 계층인 데이터 링크 계층에서 오류를 인지할 수 있도록 해줍니다.
그렇지 않은 경우는 데이터 링크 계층 스스로 별도의 기능을 수행하여 오류를 인지해야 합니다.
대표적인 물리적 오류로는 데이터가 도착하지 못하는 데이터 분실과 내용이 깨져서 도착하는 데이터 변형이 있습니다.
일반적으로 컴퓨터 네트워크에서 오류 복구는 송신자가 원래의 데이터를 재전송(Retransmission)하는 방식으로 처리합니다.
3️⃣ 네트워크 계층(Network Layer)
송신 호스트가 전송한 데이터가 수신 호스트까지 안전하게 도착하려면 여러 개의 중개 시스템인 라우터(Router)를 거쳐야 합니다.
이 과정에서 데이터가 올바른 경로를 선택할 수 있도록 지원하는 계층이 네트워크 계층(Network Layer)입니다.
기본적으로 네트워크 내부 구조는 라우터들로 구성되고, 네트워크 바깥쪽에 연결되는 송수신 호스트 사이의 데이터 중개 기능을 수행합니다.
데이터 중개 과정에서 오류가 발생할 수 있으므로 네트워크 계층에도 오류 제어 기능이 필요합니다.
네트워크 부하가 증가하면 특정 지역에 혼잡(Congestion)이 발생할 수 있는데, 혼잡 제어(Congestion Control)도 데이터의 전송 경로와 관계되므로 네트워크 계층이 담당합니다.
4️⃣ 전송 계층(Transport Layer)
컴퓨터 네트워크에서 데이터를 교환하는 최종 주체는 호스트가 아니고, 호스트 내부에서 실행되는 응용 네트워크 프로세스입니다.
네트워크 계층은 송수신 호스트 사이의 전송을 지원하지만, 응용 프로세스까지 전달하는 기능은 없습니다.
전송 계층(Transport Layer)은 송신 프로세스와 수신 프로세스 간의 연결(Connection) 기능을 제공하기 때문에 프로세스 사이의 안전한 데이터 전송을 지원합니다.
전송 계층은 데이터가 전송되는 최종적인 경로상의 양 끝단 사이의 연결이 완성되는 계층입니다.
일반적으로 계층 4까지의 기능은 운영체제에서 시스템 콜(System Call) 형태로 상위 계층에 제공하며, 계층 5~7의 기능은 응용 프로그램으로 작성됩니다.
5️⃣ 세션 계층(Session Layer)
세션 계층(Session Layer)은 전송 계층에서 제공하는 연결의 개념과 유사한 세션 연결을 지원하지만, 이보다는 더 상위의 논리적 연결입니다.
즉, 응용 환경에서 사용자 간 대화(Dialog) 개념의 연결로 사용되기 때문에 전송 계층의 연결과 구분됩니다.
예를 즐어, 인터넷에서 파일 송수신 중에 연결이 끊기면 이는 전송 계층의 연결이 종료된 것입니다.
이후 전송 계층의 연결을 다시 설정하여 이전에 데이터 송수신이 멈춘 지점부터 이어서 전송하는 기능을 세션 계층이 지원합니다.
6️⃣ 표현 계층(Presentation Layer)
표현 계층(Presentation Layer)은 전송되는 데이터의 의미(Semantic)를 잃지 않도록 올바르게 표현(Syntax)하는 방법을 다룹니다.
즉, 정보를 교환하는 호스트들이 표준화된 방법으로 데이터를 인식할 수 있게 해줍니다.
또한, 데이터의 표현이라는 본래의 기능에 더해, 현재의 표현 계층은 압축과 암호화라는 기능도 중요하게 다루고 있습니다.
동영상과 같은 대용량의 멀티미디어 데이터를 압축(Compression)하면 전송 데이터의 양을 줄일 수 있습니다.
암호화는 네트워크 보안 기능의 하나이며, 외부의 침입자로부터 데이터를 안전하게 보호하는 기술입니다.
인터넷을 통한 개인 정보의 처리와 금융 상거래가 증가하면서 인터넷 보안의 중요성이 커지고 있습니다.
7️⃣ 응용 계층(Application Layer)
응용 계층(Application Layer)은 일반 사용자를 위한 다양한 네트워크 응용 서비스를 지원합니다.
단순히 정보 검색을 지원하던 시대를 지나서 오늘날 인터넷 환경은 인공지능과 결합하는 추세로 발전되고 있습니다.
그에 따라 특정 분야에 한정되지 않고, 사회 전반의 모든 영역으로 네트워크 서비스는 발전하고 있습니다.
-
🌐[Network] 시스템 기초 용어.
🌐[Network] 시스템 기초 용어.
위 그림과 같이 네트워크는 외형적으로 시스템과 전송 매체의 조합으로 구성됩니다.
데이터 통신을 위한 전송 매체는 전송 대역, 전송 속도, 전송 오류율과 같은 물리적인 특성이 주 관심사이므로 논리적인 기능은 비교적 단순합니다.
시스템은 전송 매체를 이용해 다양한 연동 형태로 구성할 수 있으므로 개념의 폭이 넓고 복잡합니다.
1️⃣ 시스템의 구분.
네트워크를 구성하는 시스템이 반드시 일반 컴퓨터처럼 복잡한 기능을 수행해야 하는 것은 아니지만, 데이터 전송 기능을 포함하여 일정 정도의 컴퓨팅 기능을 보유합니다.
네트워크 시스템은 수행 기능에 따라 다음과 같이 다양한 명칭으로 부를 수 있습니다.
노드, 라우터, 호스트, 클라이언트, 서버
1️⃣ 노드(Node)
노드(Node)는 컴퓨터 이론 분야에서 특정 시스템을 가리키는 가장 일반적인 용어로 사용됩니다.
인터넷에서도 상호 연결된 시스템을 표현할 수 있는 가장 포괄적 의미로 사용되므로 데이터를 주고받을 수 있는 모든 시스템을 통칭합니다.
노드는 인터넷 내부를 구성하는 라우터와 인터넷 바깥쪽에 연결되어 데이터를 주고받는 호스트로 구분됩니다.
2️⃣ 라우터(Router)
라우터(Router)는 인터넷 내부를 구성하며, 기본으로 데이터 전송 기능을 포함합니다.
라우터의 주요 역할은 데이터 중개 기능이며, 인터넷 바깥쪽에 연결된 호스트들 사이의 데이터 전송이 인터넷 내부에서 최적의 경로를 통하여 이루어지도록 합니다.
3️⃣ 호스트(Host)
호스트(Host)는 인터넷 바깥쪽에 연결되어 일반 사용자들의 네트워크 접속 창구 역할을 합니다.
일반적인 컴퓨팅 기능을 갖춘 호스트는 네트워크 응용 프로그램을 실행할 수 있고, 사용자는 이 프로그램을 이용하여 다양한 인터넷 서비스를 제공받습니다.
호스트는 로스트 사이에 제공되는 서비스를 기준으로 클라이언트와 서버로 나눌 수 있습니다.
4️⃣ 클라이언트(Client)와 서버(Server)
클라이언트(Client)는 임의의 인터넷 서비스를 이용하는 응용 프로그램이고, 서버(Server)는 서비스를 제공하는 응용 프로그램입니다.
클라이언트와 서버의 개념은 서비스 단위로 이루어지므로 임의의 호스트가 클라이언트나 서버로 고정되지 않습니다.
이용하는 서비스의 종류에 따라서 클라이언트가 될 수도 있고, 서버가 될 수도 있습니다.
그러므로 특정 서비스를 기준으로 상대적인 관점에서 클라이언트와 서버라는 용어를 사용합니다.
일반적으로 응용 프로그램 혹은 서비스 단위가 아닌 호스트 단위로도 클라이언트와 서버를 사용하기도 합니다.
즉, 다양한 서비스를 제공하는 목적으로 특화된 호스트의 경우 호스트 자체를 서버라 부르기도 합니다.
서버는 클라이언트보다 먼저 실행 상태가 되어 클라이언트의 요청에 대기해야 합니다.
그리고 영원히 종료하지 않으면서 클라이언트의 요청이 있을 때마다 서비스를 반복해서 제공합니다.
2️⃣ 클라이언트(Client)와 서버(Server)
위 그림은 임의의 응용 서비스를 기준으로 클라이언트와 서버의 상대적인 관계를 설명합니다.
FTP(File Transfer Protocol)는 원격 호스트끼리 파일 송수신 기능을 제공하는 서비스이고, 텔넷(Telnet)은 원격 호스트에 로그인하는 서비스를 제공합니다.
호스트 2는 FTP 서비스를 제공하고, 호스트 3은 텔넷 서비스를 제공합니다.
먼저, FTP 서비스를 살펴보면 호스트 1은 호스트 2에 FTP 서비스를 요청합니다.
따라서 FTP 서비스를 기준으로 하면 호스트 1이 클라이언트가 되고, 호스트 2는 서버가 됩니다.
반면, 텔넷 서비스는 호스트 2가 호스트 3에 서비스를 요청합니다.
텔넷 서비스를 기준으로 하면 호스트 2가 클라이언트이고, 호스트 3은 서버입니다.
따라서 호스트 2는 사용하는 응용 서비스의 종류에 따라 클라이언트가 되기도 하고 서버가 되기도 합니다.
결론적으로 클라이언트와 서버라는 용어는 서비스 이용의 상대적 위치에 따라 결정됨을 알 수 있습니다.
서버의 명칭을 특정 호스트에 전용으로 부여해서 사용할 수도 있습니다.
특히 다양한 서비스 기능을 제공하는 대형 시스템을 서버로 설정해 다수의 클라이언트가 접속해서 서비스를 이용하도록 할 수 있습니다.
그러나 기능적인 관점에서는 위 그림에서처럼 호스트에서 실행되는 응용 서비스별로 구분하는 것이 더 정확합니다.
인터넷에서 네트워크 서비스의 기능은 대부분 응용 프로그램으로 구현되므로 보통 클라이언트 프로세스, 서버 프로세스라는 호칭이 더 자연스러울 수 있습니다.
-
🌐[Network] 네트워크 기초 용어.
🌐[Network] 네트워크 기초 용어.
이미 수많은 사람이 익숙하게 사용하고 있는 인터넷(Internet)은 연구소, 기업, 학교 등의 소규모 조직에서 사용하기 시작한 작은 단위의 네트워크(Network)들을 서로 연결하면서 발전하였습니다.
그 과정에서 자연스럽게 연결 방식의 표준화를 요구하게 되었고, 오늘날 전 세계로 확산되어 거대한 인터넷으로 성장하였습니다.
네트워크를 이해하려면 시스템, 인터페이스, 전송 매체, 프로토콜, 네트워크, 인터넷과 같은 용어를 먼저 이해해야 합니다.
네트워크(Network)는 하드웨어적인 전송 매체(Transmission Media)를 매개로 서로 연결되어 데이터를 교환하는 시스템(System)의 모음이며, 시스템과 전송 매체의 연결 지점에 대한 규격이 인터페이스(Interface)입니다.
시스템이 데이터를 교환할 때는 소프트웨어적으로 동작하는 통신 규칙인 프로토콜(Protocol)이 필요합니다.
인터페이스와 프로토콜은 서로 다른 시스템을 상호 연동해 동작시키기 위함이니 반드시 연동 형식의 통일이 필요하고, 이를 표준화(Standardization)라 합니다.
위 그림은 여러 시스템이 전송 매체로 연결되어 네트워크를 구성한 예입니다.
시스템은 반드시 일반 컴퓨터일 필요는 없으며, 보통 컴퓨팅 기능을 보유한 네트워크 장비들을 의미합니다.
그림과 같은 네트워크의 가장 바깥쪽에 스마트폰을 포함한 일반 사용자들의 컴퓨터가 연결되어 데이터 교환 작업을 수행합니다.
시스템들은 물리적으로 공유하는 전송 매체에 의하여 서로 연결되지만, 시스템이 전송 매체를 통해 데이터를 교환하려면 반드시 표준화된 프로토콜을 사용해야 합니다.
우리가 알고 있는 인터넷은 IP(Internet Protocol)라는 네트워크 프로토콜이 핵심적인 역할을 하는 네트워크의 집합체입니다.
여기서 IP는 프로토콜의 의미가 포함된 약자이지만 보통 IP 프로토콜이라 부릅니다.
1️⃣ 시스템(System)
내부 규칙에 따라 자율적으로 동작하는 대상을 가리킵니다.
자동차, 커피 자판기, 컴퓨터, 마이크로프로세서, 하드디스크 등과 같은 물리적인 대상뿐 아니라, 신호등으로 교통을 제어하는 운영 시스템, Mac OS 등의 운영체제, 프로그램의 실행 상태를 의미하는 프로세스와 같은 소프트웨어적인 대상들도 시스템입니다.
🤩 TIP: 네트워크 환경에서 동작하는 임의의 시스템은 다른 시스템과 데이터를 교환하는 기능이 필수적입니다.
시스템의 동작에 필요한 외부 입력이 있을 수 있으며, 내부 정보와 외부 입력의 조합에 따른 출력(시스템 실행의 결과물)이 있을 수 있습니다.
한편, 작은 시스템이 여러 개 모여 더 큰 시스템을 구성할 수 있으므로 크기를 기준으로 시스템을 나누지는 않습니다.
우리가 알고 있는 인터넷은 수많은 소규모 네트워크들이 서로 연동되는 반복적인 과정을 거쳐서 형성된 거대 연합체의 네트워크를 의미합니다.
2️⃣ 인터페이스(Interface)
시스템과 시스템을 연결하기 위한 표준화된 접촉 지점을 의미하며, 하드웨어적인 관점과 소프트웨어적인 관점이 모두 존재합니다.
하드웨어적인 예로서, 컴퓨터 본체와 키보드를 연결하여 제대로 동작하게 하려면 키보드의 잭을 본체의 정해진 위치에 꽂아야 합니다.
이렇게 하려면 상호 간의 데이터 교환을 위한 RS-232C, USB 등과 같은 논리적인 규격뿐만 아니라, 잭의 크기와 모양 같은 물리적인 규격도 표준화되어야 합니다.
소프트웨어적인 예로서, 프로그래밍 언어에서 함수 설계자는 함수 이름과 매개변수를 표준화하여 정의해야 하고, 함수 사용자는 이 정의에 맞게 함수 이름과 인수를 지정하여 사용할 수 있습니다.
인터페이스를 논리적인 상하 구조의 개념으로 이해할 필요는 없지만, 양방향으로 데이터를 주고 받는 경우와 한쪽에서 다른 쪽의 단방향으로 데이터를 보내는 경우로 나눌 수 있습니다.
3️⃣ 전송 매체(Transmission Media)
시스템끼리 정해진 인터페이스를 연동해 데이터를 전달하려면 물리적인 전송 수단인 전송 매체(Transmission Media)가 반드시 있어야 합니다.
전송 매체는 사람의 눈으로 볼 수 있는 동축 케이블을 포함하여 소리를 전파하는 공기, 무선 신호 등 다양하게 존재합니다.
인터페이스는 시스템 간의 물리적인 연동을 위한 논리적인 규격이고 인터페이스로 정해진 규격은 전송 매체를 통해 물리적으로 구현되며, 시스템끼리 데이터 전송을 가능하게 합니다.
4️⃣ 프로토콜(Protocol)
논리적으로 상호 연동되는 시스템이 전송 매체를 통해 데이터를 교환할 때는 표준화된 대화 규칙을 따르는데, 이 규칙을 프로토콜(Protocol)이라 합니다.
일반적으로 프로토콜은 상하 관계가 아닌 동등한 위치에 있는 시스템 사이의 규칙이라는 측면이 강조되어 인터페이스와 구분이 됩니다.
인터페이스는 위 그림과 같이 두 시스템이 연동하기 위한 특정한 접촉 지점(Access Point)을 의미하는 경우가 많지만, 프로토콜과 비교하여 인용될 때는 상하 개념이 적용됩니다.
즉, 네트워크의 계층 모델 구조에서 인터페이스는 상하 계층 사이의 관계를 다루고, 프로토콜은 동등 계층 사이의 관계를 다룹니다.
일반적으로 프로토콜은 주고받는 데이터의 형식과 그 과정에서 발생하는 일련의 절차적 순서에 무게를 둡니다.
5️⃣ 네트워크(Network)
통신용 전송 매체로 연결된 여러 시스템이 프로토콜을 사용하여 데이터를 주고받을 때, 이들을 하나의 단위로 통칭하여 네트워크(Network)라 부릅니다.
일반적인 컴퓨터 네트워크에서는 물리적인 전송 매체로 연결된 컴퓨터들이 동일한 프로토콜을 이용해 서로 데이터를 주고 받습니다.
소규모 네트워크가 모여 더 큰 네트워크를 구성할 수 있는데, 네트워크끼리는 라우터(Router)라는 중개 장비를 사용해서 연결합니다.
6️⃣ 인터넷(Internet)
전 세계의 모든 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크입니다.
인터넷에서 사용되는 시스템, 인터페이스, 전송 매체, 프로토콜들은 그 종류가 매우 복잡하고 다양하지만, 데이터 전달 기능에 한해서는 공통으로 IP(Internet Protocol) 프로토콜을 사용합니다.
즉, ISO의 OSI 7계층 모델에서 계층 3인 네트워크 계층의 기능을 IP 프로토콜이 수행하며 인터넷이라는 용어의 IP의 첫 단어인 Internet에서 유래했습니다.
7️⃣ 표준화(Standardization)
서로 다른 시스템이 상호 연동해 동작하려면 표준화(Standardization)라는 연동 형식의 통일이 필요합니다.
예를 들어, 프린트 용지를 생각해봅시다.
일반적으로 프린터와 프린트 용지를 만드는 회사는 다릅니다.
하지만 사전에 A4 규격이라는 통일된 틀을 만들어두었기 때문에 서로 다른 회사에서 생산한 프린터와 프린트 용지를 자유롭게 사용할 수 있습니다.
현대 산업사회가 눈부시게 성장한 배경에는 증기기관의 개발에 따른 에너지 동력원의 발전이 있었습니다.
지금은 인간의 노동력이라는 한계를 넘어 인공지능으로 대표되는 새로운 차원의 사회 발전 단계인 4차 산업혁명이 진행되고 있습니다.
그러나 이와 다른 관점에서 더 근원적인 발전 배경을 살펴보면, 표준화 원리를 바탕으로 한 레고의 조합 개념이 산업 전반에 존재해왔기 때문임을 알 수 있습니다.
-
-
🌐[Network] CIDR이란?
🌐[Network] CIDR이란?
CIDR(Classless Inter-Domain Routing) 은 IP 주소와 관련된 라우팅 방법을 정의하는 표기법입니다.
CIDR 표기법은 IPv4 주소를 네트워크와 호스트 부분으로 나누고, 네트워크의 크기(서브넷 크기)를 정의하는 데 사용됩니다.
CIDR 표기법은 다음과 같은 형식으로 표현됩니다.
192.168.0.0/24
이 표기법은 두 부분으로 나뉩니다.
IP 주소 부분 : 192.168.0.0
서브넷 마스크 부분: /24
여기서 /24 는 서브넷 마스크의 길이를 나타내며, 이는 네트워크 부분의 비트 수를 의미합니다.
즉, 192.168.0.0/24 는 24비트가 네트워크를 정의하고 나머지 8비트(총 32비트 중)가 호스트를 정의하는 서브넷을 나타냅니다.
1️⃣ IPv4 CIDR의 구조.
IPv4 주소는 32비트로 구성되어 있으며, 이를 네 개의 8비트 옥텟으로 표현합니다.
예를 들어 다음과 같습니다.
11000000.10101000.00000000.00000000 (이진)
192.168.0.0 (십진)
CIDR 표기법에서 /24 는 첫 번째 24비트(세 개의 옥텟)가 네트워크 주소를 나타낸다는 것을 의미합니다.
이 경우 192.168.0.0 네트워크에는 192.168.0.1 에서 192.168.0.254 까지의 호스트 주소를 가질 수 있습니다.
2️⃣ IPv4 CIDR의 용도.
서브네팅 : 큰 네트워크를 작은 서브넷으로 나누기 위해 CIDR을 사용합니다.
라우팅 : 인터넷 서비스 제공자(ISP) 및 네트워크 관리자는 CIDR을 사용하여 라우팅 테이블을 관리하고, IP 주소 공간을 효율적으로 사용합니다.
IP 주소 관리 : CIDR은 IP 주소를 할당하고 네트워크를 관리하는 데 사용됩니다.
3️⃣ CIDR 블록의 생성 기준.
CIDR 블록을 생성할 때는 네트워크 크기와 필요한 IP 주소 수를 고려해야 합니다. 일반적인 기준은 다음과 같습니다.
1. 네트워크 크기 계산 :
/24 서브넷은 256개의 IP 주소(호스트)를 제공합니다. 이 중 두개의 주소(네트워크 주소와 브로드캐스트 주소)를 제외하고, 254개의 호스트 IP 주소를 사용할 수 있습니다.
/16 서브넷은 65,536개의 IP 주소를 사용할 수 있습니다.
/32 는 단일 IP 주소를 나타냅니다.
2. 필요한 IP 주소 수에 따라 결정 :
만약 50개의 장치를 연결해야 한다면, /26(64개 IP 주소 제공) 서브넷을 사용할 수 있습니다.
큰 네트워크에는 /16 이나 /12 처럼 더 작은 서브넷 마스크를 사용할 수 있습니다.
3. 보안 및 관리 :
더 작은 서브넷(CIDR 블록)을 사용하면 네트워크 트래픽을 보다 효율적으로 관리하고, 보안을 강화할 수 있습니다.
4️⃣ 예시.
/32 : 단일 IP 주소. 예: 192.168.0.1/32
/24 : 256개의 IP 주소 제공, 주로 작은 네트워크에서 사용. 예: 192.168.0.0/24
/16 : 65,536개의 IP 주소 제공, 더 큰 네트워크에 사용. 예: 192.168.0.0/16
/8 : 16,777,216개의 IP 주소 제공, 매우 큰 네트워크에서 사용. 예: 10.0.0.0/8
5️⃣ 결론.
CIDR 표기법은 IP 주소와 서브넷 마스크를 결합한 표준입니다.
네트워크의 크기와 IP 주소와 필요 수를 기준으로 CIDR 블록을 생성합니다.
CIDR을 사용하면 네트워크를 보다 효율적으로 관리하고 라우팅 테이블을 최적화할 수 있습니다.
🙋♂️ CIDR 블록을 설계할 때, 사용하려는 네트워크 규모와 IP 주소 요구 사항을 염두에 두고, 적절한 서브넷 마스크 길이를 선택하는 것이 중요합니다.
Touch background to close