Intro::
네트워크 기본에 대한 정리본 입니다.
OSI 7 계층
네트워킹에 대한 표준을 7계층으로 나눈것
OSI 7 계층은 개념적인 지침서이고 실제로는 TCP/IP 프로토콜이 네트워킹에 사용된다고 생각하면 된다.
•
응용 계층 Application Layer
◦
HTTP, FTP, SMTP, DNS 등 사용자 서비스 제공
◦
응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행합니다.
•
표현 계층 Presentation Layer
◦
데이터 인코딩, 암호화, 압축(TLS/SSL)
◦
데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화합니다.
•
세션 계층 Session Layer
◦
세션 제어, 인증, 체크포인트(RPC)
◦
TCP/IP 세션을 만들고 없애는 책임을 지는 계층
•
전송 계층 Transport Layer
◦
TCP, UDP
◦
통신을 활성화하기 위한 계층, 포트를 열어서 응용 프로그램들이 전송을 할 수 있게 한다.
•
네트워크 계층 Network Layer
◦
IP (패킷 라우팅), ICMP, ARP
◦
데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
◦
라우팅, 흐름제어, 세그멘테이션, 오류 제어, 인터네트워킹 등을 수행한다.
•
데이터 링크 계층 DataLink Layer
◦
이더넷, wi-fi 등 프레임 전송 및 오류 검출
◦
물리계층을 통해 송신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
•
물리 계층 Physical Layer
◦
전기,광학 신호로 비트 전송
◦
데이터 전달
TCP
신뢰성 높은 프로토콜
•
연결 지향(Connection‐oriented)
◦
TCP는 데이터를 주고받기 전에 반드시 서로 “손을 맞잡듯” 연결을 먼저 맺습니다. 이를 “3단계 연결 설정(three‐way handshake)”이라고 부르는데, 예를 들어 친구와 전화를 걸 때 “여보세요?” 하고 먼저 확인한 뒤 통화를 시작하는 것과 비슷합니다.
◦
연결이 맺어진 뒤에는 양쪽이 순서대로 데이터를 주고받을 준비가 된 상태가 됩니다.
•
신뢰성(Reliability)
◦
TCP는 보낸 데이터가 상대방에게 도착했는지 확인하고, 만약 데이터가 누락되거나 순서가 뒤바뀌면 재전송하여 정확하게 전달합니다.
◦
예를 들어, 편지를 보내고 받을 때 “이 편지가 잘 도착했나요?” 하고 확인한 뒤, 도착하지 않았으면 다시 보내는 과정과 같습니다.
•
흐름 제어(Flow Control)와 혼잡 제어(Congestion Control)
◦
TCP는 한 번에 너무 많은 데이터를 보내서 상대방이 감당하지 못하면, “잠시만 기다려 주세요” 하고 속도를 줄입니다.
◦
또 네트워크 전체가 붐비면(혼잡하면) 천천히 보내서 다른 사용자에게 피해가 가지 않도록 조절합니다.
•
순서 보장(Ordering Guarantee)
◦
TCP는 여러 조각으로 나누어 보낸 데이터를 원래 보낸 순서대로 다시 조립하여 전달합니다. 예를 들어, 큰 그림 퍼즐을 여러 장으로 나누어 우편으로 보낸 뒤, 받은 쪽에서 순서대로 맞춰서 완전한 그림을 만드는 것과 유사합니다.
3 way handshake
•
연결 요청: 클라이언트 → 서버 : SYN, Seq = x
•
연결 승인 및 동기화 응답: 서버 → 클라이언트: SYN, ACK, Seq = y, Ack = x+1
•
연결 완료 통지: 클라이언트 → 서버: ACK, Seq = x+1, Ack = y+1
•
세 단계의 교환이 완료되면, 양측 모두 서로의 초기 시퀀스 번호를 인지하고 연결 상태가 ‘ESTABLISHED’로 진입하게 됩니다.
4 way handshake
•
연결 종료 요청: 끝내려는 쪽(예: 클라이언트) → 상대편: FIN, Seq = m
•
종료 요청 수락: 상대편(예: 서버) → 끝내려는 쪽: ACK, Ack = m+1
•
(이 시점에서 클라이언트는 송신 끝, 수신 대기 상태)
•
서버 측 종료 요청: 상대편(예: 서버) → 끝내려는 쪽: FIN, Seq = n
•
최종 종료 확인: 끝내려는 쪽(클라이언트) → 상대편: ACK, Ack = n+1
•
네 단계가 완료되면, 양측 모두 연결을 완전히 종료(CLOSED)합니다.
UDP
빠른 프로토콜
•
비연결 지향(Connection‐less)
◦
UDP는 데이터를 보낼 때 미리 “연결”을 만들지 않습니다. 즉, 받는 쪽에게 “지금부터 데이터를 보내겠습니다” 하고 미리 알리지 않습니다.
◦
편지를 보낼 때 우체국에 그냥 “이 편지 주소로 보내 주세요” 하고 바로 보내는 것처럼, 상대가 준비되어 있는지 확인하지 않고 수신을 시도합니다.
•
비신뢰성(Unreliable)
◦
UDP는 보낸 데이터가 제대로 도착했는지 확인하거나, 빠진 부분이 있으면 재전송하지 않습니다. 데이터가 손실되거나 순서가 뒤바뀌어도 바로잡지 않습니다.
◦
이는 전화 통화처럼 대화가 끊겨도 곧바로 다시 연결하지 않고, 중요한 정보가 아니면 그대로 넘어가는 상황에 비유할 수 있습니다.
•
속도와 간단함(Speed and Simplicity)
◦
UDP는 확인 확인(ACK) 과정이 없기 때문에 오버헤드가 적고 전송 속도가 빠릅니다.
◦
실시간으로 목소리를 전달하는 음성 통화나, 동영상을 스트리밍할 때 대기 시간이 짧아야 하므로 UDP를 많이 사용합니다. 예를 들면, 게임 중 실시간 채팅, 라이브 방송 등에 적합합니다.
•
순서 보장 없음(No Ordering Guarantee)
◦
UDP는 데이터 조각이 여러 개면, 각각 보낸 시간이나 순서와 상관없이 도착하는 대로 애플리케이션에 전달합니다. 따라서 중요하지 않은 정보나, 순간적으로 끊겨도 괜찮은 데이터 전송에 적합합니다.
IP
네트워크 상에서 호스트(주로 컴퓨터나 서버 등)를 식별하기 위한 논리적 주소
DNS
도메인 주소를 IP 주소로 변환해주는 시스템
로드밸런서
•
서버의 부하를 분산시켜주는 시스템
Soap
•
XML 기반: 메시지는 반드시 XML 형식
•
WSDL (Web Service Definition Language): 서비스 정의를 위한 XML 형식 문서
•
다양한 프로토콜: HTTP, SMTP, FTP 등에서 동작 가능
•
WS- 표준: WS-Security, WS-ReliableMessaging, WS-Addressing 등 표준 지원
•
계약 지향: 서비스와 클라이언트는 WSDL을 통해 명시적으로 계약을 맺음
•
상태 유지 가능: 상태 정보를 저장하거나 트랜잭션 처리 가능
•
보안: WS-Security를 통한 높은 보안 지원
•
느린 속도: XML 기반 메시지로 인해 상대적으로 성능이 떨어질 수 있음
•
주요 용도: 보안, 트랜잭션, 복잡한 엔터프라이즈 시스템
Rest
•
HTTP 프로토콜: REST는 HTTP 기반으로 동작
•
URI: 자원을 식별하는 URL (예: /users/123)
•
HTTP 메서드: GET, POST, PUT, DELETE 등을 사용하여 CRUD 작업 수행
•
데이터 포맷: JSON (주로 사용), XML (가능)
•
무상태: 각 요청은 독립적이고 서버는 상태를 저장하지 않음
•
경량화: 요청/응답 구조가 간단하여 빠르고 효율적
•
애플리케이션: 웹, 모바일, IoT 등 다양한 플랫폼에서 사용 가능
•
캐싱: HTTP 캐시 기능을 활용하여 성능 최적화 가능
•
주요 용도: 빠르고 단순한 웹 서비스, RESTful API
구분 | SOAP | REST |
메시지 포맷 | XML 전용 | JSON, XML, Plain Text 등 자유롭게 선택 가능 |
상태 관리 | 보통 상태 유지(Stateful) | 무상태(Stateless) 설계 권장 |
표준 확장성 | WS-Security, WS-Reliability 등 풍부 | HTTP 표준과 헤더·URI 활용 |
성능·경량성 | XML 파싱·헤더 오버헤드 발생 | 경량 메시지(JSON) 사용 시 처리 속도 유리 |
오류 처리 | SOAP Fault 구조 | HTTP 상태 코드 활용 |
보안 지원 | 표준 스펙으로 상세 명세 가능 | HTTPS, OAuth2 등 외부 표준 활용 |