OSI 7 Layer(OSI 7계층) ?
OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
다양한 프로토콜에 대해서 바이블로서 정의하는 역할을 한다.
우리는 OSI 7 Layer(OSI 7계층)를 통해 통신이 일어나는 과정을 단계별로 파악할 수 있다.
각 Level에 대해 좀 더 상세히 알아보자.
Level | Layer | Protocol | 특징 |
7 | Application Layer (응용 계층) |
HTTP, DNS, FTP | 최종 사용자가 직접 접하는 응용 소프트웨어와 사용자 인터페이스를 제공하는 계층 |
6 | Presentation Layer (표현 계층) |
ASCII, JPEG | 데이터의 표현 방식을 정의하고 암호화, 압축 등의 데이터 변환을 수행함. 데이터 형식 변환, 압축, 암호화 등을 다룸 |
5 | Session Layer (세션 계층) |
NetBLOS, TLS | 통신 세션을 설정, 유지, 해제하는 역할을 함. 세션 복구, 동기화 등을 다룸 |
4 | Transport Layer (전송 계층) |
TCP, UDP | 종단 간 통신을 제어하고 신뢰성 있는 데이터 전송을 담당함. 데이터의 분할 및 재조립, 흐름 제어, 오류 제어 등을 수행함 |
3 | Network Layer (네트워크 계층) |
IP, ICMP, ARP | 여러 네트워크를 거치는 경로를 선택하고 데이터를 목적지까지 전달하는 역할을 함. 라우팅, IP 주소 할당 등을 다룸 |
2 | Data Link Layer (데이터 링크 계층) |
Ethernet, PPP | 물리적인 링크로 전송된 데이터를 프레임 단위로 관리하고 오류 검출 및 복구를 수행하는 계층. 이더넷, Wi-Fi 등의 MAC 주소를 다룸. |
1 | Physical Layer (물리 계층) |
RS-232, X.25/X.21 | 전기적, 물리적인 특성을 이용하여 데이터를 전송하는 계층. 주로 전송 매체, 전송 속도, 전기적 특성 등을 다룸 |
IP 와 Port 번호
웹 통신에 대해 이해하려면 먼저 IP주소와 Port번호에 대한 이해가 필요하다.
예를 들어 물건을 보낼 때는 받는 이의 주소(배송지 주소)가 꼭 필요한데,
이를 웹 통신으로 보면 배송지 주소가 IP주소+Port번호 를 의미한다.
IP주소는 클라이언트의 요청을 물리적인 장치인 서버까지는
안내해 줄 수 있지만, 해당 서버 내에서 돌아가고 있는 서버 애플리케이션까지
전달해 주기에는 정보가 부족하다.
각각의 서버 애플리케이션에 정확하게 요청을 전달하기 위해서는
Port번호라는 추가 정보가 필요한 것이다.
IP와 포트번호는 절대 중복되면 안되는데,
그 이유는 목적지를 찾아가려면 IP와 포트번호가
정확히 지정되어 있어야 하기 때문이다.
_______ . _______ . ______ . ________ : 0000
IP 주소는 일반적으로 IPv4에서 32비트로 표현된다.
각 필드마다 0부터 255까지의 값을 가질 수 있으며,
필드당 8bit(비트)의 메모리가 할당된다.
총 4개의 필드가 있으므로
IP 주소는 총 32비트의 메모리를 차지한다.
보통 '192.168.X.X'인 주소가 자신이 사용하고 있는
네트워크 망의 사설 IP주소에 해당한다.
로컬호스트(Localhost)는 자기 자신의 IP주소를 의미하며
범위는IPv4를 기준으로 127.0.01 ~ 127.255.255.254 이다.
일반적으로 로컬호스트의 IP주소로는 127.0.0.1을 사용하고
해당 주소로 접속한다는 것은 곧 자기 자신에게 접속한다는 의미이다.
포트는 0 ~ 65535번까지의 값을 가질 수 있으며
다음과 같이 세 가지로 나눌 수 있다.
- 0 ~ 1023번 : 잘 알려진 포트(Well Known Port)
- 1024 ~ 49151번 : 등록된 포트(Registered Port)
- 49152 ~ 65535번 : 동적 포트(Dynamic Port)
잘 알려진 포트의 예시로는 4가지 정도를 들 수 있다.
20 : FTP(데이터 전송을 위해 사용)
21 : FTP(제어를 위해 사용)
80 : HTTP
443 : HTTPS
주의할 점은 80번이 항상 HTTP의 포트번호라고 생각하면 안 된다는 점이다.
위 번호는 기본 포트번호로, 포트번호를 별도로 지정하지 않았을 경우에
프로토콜이 해당 포트번호를 사용한다는 의미이다.
직접 지정하면 다른 포트번호를 쓸 수 있고,
실제로 충돌을 방지하기 위해 별도로 포트 번호를 지정하여
사용하는 경우가 자주 발생한다.
우리가 구글 홈페이지에 접속할 때는 보통 www.google.com
이라는 주소만 입력하여 접속한다.
포트번호가 없는 경우가 없는데도 접속이 되는 이유는 무엇일까?
그 이유는 웹 브라우저는 포트 번호를 명시적으로 적어 주지 않아도
해당 프로토콜의 기본 포트를 요청에 추가해 주기 때문에 그렇다.
우리가 요청을 보내는 프로토콜은 웹에서 요청하는 것이므로
HTTP를 사용하는데, www.google.com 로 접속할 경우
프로토콜을 추가해 www.google.com:80 이라고 요청을 보내는 것이다.
여기서 80은 HTTP의 기본 포트번호에 해당한다.
- IP : 컴퓨터가 통신하기 위한 주소, 목적지 주소
- Port : 프로그램 간 통신번호, 목적지의 상세주소 정도로 이해
client와 server는 지리적으로 떨어져있다. (원격 상태)
TCP / UDP : 통신방식
예를 들면, 전화는 TCP방식이라 할 수 있다.
상대편에게 전화를 걸어서 상대편이 받아야만 얘기할 수 있기 때문이다.
반면, 일방적으로 전송하면 되는 문자나 카카오톡 메시지는 UDP에 해당한다.
TCP는 시간이 오래 걸리지만 정확하게 보낼 수 있다.
UDP는TCP에 비해 대용량을 보낼 수 있다.
만약 카카오톡을 TCP로 전송한다면상대가 답을 할 때까지
기다려야 하므로 매우 불편할 것이다..!
TCP는 연결을 지향하는 프로토콜로, 연속성보다 신뢰성 있는 전송이 중요할 때에
사용된다. TCP는 두 주체 간 연결을 수립하는 과정인 '3 WAY-Handshake'가
있어야만 통신이 가능하다. 실제 데이터를 주고받기 위한 준비에 서로 데이터를
주고 받는 시간이 소모된다.
UDP는 TCP보다 단순하며, 빠르고 네트워크 부하가 적다는 장점이 있지만
신뢰성 있는 데이터 전송을 보장하지는 않는다. UDP는 연결을 맺지 않고,
전송 시 손실된 데이터가 있어도 재전송하지 않기 때문이다.
(이것은 네트워크 레이어 차원에서 지원하고 안 하고의 차이일 뿐
필요한 기능은 애플리케이션 레이어에서 구현할 수 있다.)
그렇기 때문에 신뢰성보다는 연속성이 중요한
실시간 스트리밍과 같은 서비스에 자주 사용된다.
'Web > Network' 카테고리의 다른 글
[Network] 쿠키(cookie)와 세션(session) (0) | 2024.02.25 |
---|---|
[Network] 로드 밸런싱(Load Balancing), 스케일 아웃(Scale out), 스케일 업(Scale up) (0) | 2024.02.22 |
[Network] 사설 IP와 공용 IP, IPv4와 IPv6 (0) | 2024.02.22 |
[Web] HTTP와 HTTPS(HTTP Secure), SSL/TLS, 핸드셰이크 (0) | 2024.01.30 |
[Web] 웹 서버와 웹 브라우저의 통신 : HTTP, DNS, 라우터 (0) | 2024.01.28 |