학습 일자: 2024-12-03
학습 목표: 네트워크 통신의 기본 구조와 프로토콜 이해
네트워크 통신을 7개의 계층으로 나눈 표준 모델입니다. 각 계층은 독립적인 역할을 수행하며, 하위 계층의 서비스를 이용해 상위 계층에 서비스를 제공합니다. 이를 통해 복잡한 네트워크 통신을 체계적으로 관리하고 문제를 효과적으로 해결할 수 있습니다.
0과 1의 비트를 전기 신호, 빛, 전파로 변환하여 전송합니다.
주요 장비
데이터 단위: 비트(Bit)
같은 네트워크 내에서 MAC 주소를 이용한 기기 간 직접 통신을 담당합니다.
핵심 개념
AA:BB:CC:DD:EE:FF 형식의 네트워크 카드 고유 주소입니다.데이터 단위: 프레임(Frame)
서로 다른 네트워크 간 경로를 탐색하고 데이터를 전달합니다(라우팅).
핵심 개념
192.168.0.1 형식의 논리적 주소입니다.실무 예시
서울에서 부산 서버로 데이터를 전송할 때 여러 라우터를 거쳐 최적 경로를 선택합니다.
데이터 단위: 패킷(Packet)
신뢰성 있는 데이터 전송을 보장합니다(오류 검사, 재전송, 순서 보장).
핵심 프로토콜
데이터 단위: 세그먼트(Segment)
두 기기 간 연결(세션)을 시작, 유지, 종료합니다.
핵심 개념
4계층과의 차이
데이터를 애플리케이션이 이해할 수 있는 형태로 변환합니다.
주요 기능
사용자가 직접 사용하는 네트워크 서비스를 제공합니다.
주요 프로토콜
각 계층은 자신의 역할에만 집중합니다. 하위 계층의 세부 구현을 알 필요가 없습니다.
택배 시스템 비유
한 계층의 수정이 다른 계층에 영향을 주지 않습니다.
계층별 표준 프로토콜을 사용하여 서로 다른 제조사의 장비가 호환됩니다.
각 계층을 거칠 때마다 헤더를 추가합니다.
7계층: [HTTP 요청]
6계층: [암호화 정보][HTTP 요청]
5계층: [세션 정보][암호화 정보][HTTP 요청]
4계층: [TCP 헤더][세션 정보][...]
3계층: [IP 헤더][TCP 헤더][...]
2계층: [이더넷 헤더][IP 헤더][...][트레일러]
1계층: 0101010101... (전기 신호)
각 계층에서 해당 계층의 헤더를 제거하고 상위 계층으로 전달합니다.
증상: "웹사이트가 열리지 않습니다"
진단 방법
1. ping 테스트 실패 → 3계층(네트워크) 문제
2. ping 성공, 웹 실패 → 4계층(방화벽/포트) 또는 7계층(애플리케이션) 문제
3. 특정 사이트만 접속 불가 → DNS(7계층) 문제
| 구분 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 지향 (3-way handshake) | 비연결 |
| 신뢰성 | 보장 (재전송, 순서 보장) | 보장하지 않음 |
| 속도 | 상대적으로 느림 | 빠름 |
| 헤더 크기 | 20바이트 이상 | 8바이트 |
| 사용 사례 | 웹, 이메일, 파일 전송 | 스트리밍, 게임, DNS |
1. 클라이언트 → 서버: SYN (연결을 시작합니다)
2. 서버 → 클라이언트: SYN-ACK (준비되었습니다)
3. 클라이언트 → 서버: ACK (확인했습니다, 데이터를 전송합니다)
1. 클라이언트 → 서버: FIN (전송을 종료합니다)
2. 서버 → 클라이언트: ACK (확인했습니다)
3. 서버 → 클라이언트: FIN (저도 종료합니다)
4. 클라이언트 → 서버: ACK (확인했습니다)
웹 (HTTP, HTTPS)
파일이 누락되면 안 됩니다.
이메일 (SMTP)
메일 일부가 손실되면 안 됩니다.
파일 전송 (FTP, SFTP)
파일이 손상되면 안 됩니다.
데이터베이스
정확한 데이터가 필수입니다.
선택 이유: 데이터 손실 시 재전송으로 신뢰성을 보장합니다.
실시간 스트리밍 (YouTube Live, Twitch)
과거 데이터보다 실시간이 중요합니다.
온라인 게임 (LOL, 배그)
지연 시간이 치명적입니다.
DNS
빠른 응답이 필요하며, 실패 시 재요청합니다.
VoIP (인터넷 전화)
실시간 음성 전달이 중요합니다.
선택 이유: 0.1초 전 데이터는 이미 무의미하므로 속도를 우선합니다.
| 구분 | HTTP | HTTPS |
|---|---|---|
| 보안 | 없음 (평문 전송) | 암호화 |
| 포트 | 80 | 443 |
| 속도 | 빠름 | 약간 느림 (암호화 오버헤드) |
| 인증서 | 불필요 | SSL/TLS 인증서 필요 |
| URL | http:// | https:// (자물쇠 🔒 표시) |
TLS(Transport Layer Security)는 다음 세 가지를 보장합니다.
중간에 누가 데이터를 가로채도 읽을 수 없습니다.
예시
HTTP: ID: jungseok, PW: mypassword123 (평문)
HTTPS: A$dj#ka@s!d... (암호화)
데이터가 전송 중 변조되지 않았음을 보장합니다.
예시
해커가 "계좌번호: 123"을 "계좌번호: 456"으로 바꾸려 해도 감지됩니다.
진짜 서버와 통신하는지 확인합니다.
예시
https://naver.com ✓ (인증서 검증)https://nav3r.com ✗ (인증서 불일치)TLS는 OSI 7계층 어디에도 정확히 속하지 않습니다. 4.5계층 또는 5~6계층 사이로 표현합니다.
7계층: HTTP (애플리케이션)
------- [TLS는 여기에 위치] -------
4계층: TCP (전송)
동작 순서
1. TCP 3-way handshake (4계층)
2. TLS handshake (암호화 설정)
3. HTTP 데이터 전송 (암호화된 상태)
1. 클라이언트 → 서버: "지원하는 암호화 방식 목록"
2. 서버 → 클라이언트: "이 방식을 사용합니다. 제 인증서입니다"
3. 클라이언트: 인증서 검증 (진짜 서버인지 확인)
4. 양쪽 암호화 키 교환
5. 암호화된 통신 시작
TCP 3-way handshake와의 비교
비유
기밀성: 로그인 정보, 개인정보 유출을 방지합니다.
무결성: 데이터 변조를 방지하고 중간자 공격을 차단합니다.
인증: 피싱 사이트를 방지합니다.
SEO: 구글이 HTTPS 사이트를 검색 순위에서 우대합니다.
브라우저 경고: HTTP 사이트는 "안전하지 않음" 경고를 표시합니다.
OSI는 이론적 모델(교육용)이고, TCP/IP는 실제 인터넷에서 사용하는 모델입니다.
아닙니다. HTTPS는 전송 구간만 암호화합니다. 서버가 해킹당하거나, 애플리케이션에 취약점이 있으면 소용없습니다.
DNS 조회는 짧은 요청/응답으로 이루어집니다. 빠른 응답이 중요하고, 실패 시 재요청하면 되므로 UDP를 사용합니다.
흐름제어: 수신자가 처리할 수 있는 속도로 전송합니다(윈도우 크기 조절).
혼잡제어: 네트워크 혼잡도에 따라 전송 속도를 조절합니다(슬로우 스타트 등).
면접에서 자주 나오는 질문
1. "OSI 7계층을 설명해보세요"
2. "TCP와 UDP의 차이는 무엇인가요?"
3. "3-way handshake 과정을 설명해주세요"
4. "HTTPS는 어떻게 동작하나요?"
5. "웹사이트가 열리지 않을 때 어떻게 디버깅하나요?"