05 OSI - 응용계층
1 응용계층
1. 응용계층
기능 | 설명 |
---|---|
네트워크 서비스 제공 | 이메일, 웹, 파일 전송 등 네트워크 기반 서비스 제공 |
프로토콜 기반 데이터 처리 | 응용 프로그램끼리 통신할 수 있도록 데이터 포맷/전송 처리 |
데이터 표현/인코딩 | 문자 인코딩, 파일 포맷 처리 (예: UTF-8, JPEG 등) |
사용자 인증/보안 | 로그인, 세션 관리, 인증 등 |
애플리케이션 인터페이스 제공 | OS/앱이 사용할 수 있는 API, 라이브러리 등을 통해 네트워크 접근 |
2. 주요프로토콜
프로토콜 | 용도 |
---|---|
HTTP / HTTPS | 웹 브라우징 (HyperText Transfer Protocol) |
FTP / SFTP | 파일 전송 (File Transfer Protocol) |
SMTP | 메일 송신 (Simple Mail Transfer Protocol) |
POP3 / IMAP | 메일 수신 (Post Office Protocol / Internet Message Access Protocol) |
DNS | 도메인 이름 → IP 주소 변환 |
Telnet / SSH | 원격 접속 |
SNMP | 네트워크 장비 관리 (Simple Network Management Protocol) |
DHCP | IP 주소 자동 할당 (Dynamic Host Configuration Protocol) |
3. 전체흐름
- 응용계층: URL을 분석하고, Host(IP 주소), Path 설정 → HTTP 요청 메시지 생성
- 전송계층 (TCP): HTTP 메시지를 TCP 세그먼트로 감싸고, 포트 번호 설정
- 네트워크계층 (IP): 목적지 IP 주소 확인 → 라우팅 → 패킷 생성
- 데이터링크/물리계층: MAC 주소 기반으로 프레임 전송 → 전기 신호로 전달
2. DHCP
1. DHCP
- IP 주소를 포함한 네트워크 설정 정보를 자동으로 할당해주는 프로토콜
- 장치마다 IP를 수동으로 설정하는 불편함을 제거
- IP, 서브넷 마스크, 게이트웨이, DNS 같은 설정을 자동으로 부여
- 중복 없는 IP 배정, 효율적인 IP 주소 관리
2. 부여과정
| 단계 | 메시지 | 이름 | 설명 | | — |———————-|—-|————————————| | 1단계 | DHCP Discover | 탐색 | 클라이언트가 네트워크에 브로드캐스트로 DHCP 서버 찾기 요청 | | 2단계 | DHCP Offer | 제안 | DHCP 서버가 IP 주소 임대 제안 | | 3단계 | DHCP Request | 요청 | 클라이언트가 하나를 선택해 임대 요청 | | 4단계 | DHCP Acknowledgement | 승인 | 서버가 그래, 써
하고 승인 → 임대 시작 (Lease) |
- 임대
- “IP를 임대한다”는 건 DHCP 서버가 IP 주소를 일정 시간 동안만 해당 장치에 사용하도록 허용한다는 의미,
- 네트워크망에서 벗어나면 서버는 IP를 회수하고 다른 장치에 재할당할수 있음.
3. 부여방식
방식 | 영어 명칭 | 설명 |
---|---|---|
동적 할당 | Dynamic Allocation | DHCP 서버가 IP 풀에서 자동으로 할당 |
자동 할당 | Automatic Allocation | 클라이언트에게 한 번 준 IP를 다음에도 재사용 |
고정 할당 (예약) | Static Allocation / Reservation | 특정 MAC 주소에 특정 IP 고정 할당 |
3. DNS
1. DNS
- Domain Name System
- 도메인 이름을 IP 주소로 변환해주는 분산형 계층 구조의 네임 매핑 시스템
조회 구분
구분 정방향 조회 역방향 조회 방향 도메인 → IP IP → 도메인 사용 목적 웹 접속, 일반적 사용 로깅, 인증, 디버깅 레코드 종류 A, AAAA PTR 예 www.naver.com → 223.130.200.107
223.130.200.107 → www.naver.com
2. 계층구조
| 계층 | 설명 | 예시 | 담당 서버 및 역할 | |——————————| ——————————- | ——————————————– | ————————- | | 루트 도메인 (Root) | DNS 트리 최상위, 전체 도메인 네임의 시작점 | (빈 문자열, “.”) | 루트 네임서버 (13개 그룹, 전 세계 분산) | | 최상위 도메인 (TLD) | 루트 바로 아래 계층, 도메인 카테고리 구분 | gTLD: .com, .net, .org, ccTLD: .kr, .jp, .us | TLD 네임서버 (각 TLD 관리) | | 2차 도메인 (Second-Level Domain) | TLD 아래 등록된 도메인 이름 (조직 또는 개인 소유) | google.com, naver.com, example.org | 도메인 등록자 네임서버 (권한 있는 네임서버) | | 서브도메인 (Subdomain) / 하위도메인 | 2차 도메인 아래 추가 구분, 서비스나 부서별 구분 | mail.google.com, blog.naver.com | 서브도메인 네임서버 또는 도메인 관리 네임서버 |
- 최상위 도메인과 2차 도메인이 합쳐져야 인터넷상에서 고유한 도메인으로 등록 및 사용가능함.
- www는 서브도메인으로 필수가 아님
3. 질의방식
| 구분 | 재귀적 질의 | 반복적 질의 | | —– | ——————— | ———————- | | 요청자 | 보통 클라이언트(로컬 DNS 서버) | 클라이언트 또는 DNS 서버 | | 답변 방식 | 최종 결과 직접 반환 | 다음 DNS 서버 정보만 제공 | | 질의 책임 | DNS 서버가 모두 수행 | 클라이언트가 여러 서버에 질의 | | 주 사용처 | 최종 사용자가 로컬 DNS 서버에 요청 | DNS 서버 간 질의 및 일부 클라이언트 |
- 재귀적 : 클라이언트가 한 번만 요청 → DNS 서버가 다른 DNS 서버들에 직접 유니캐스트로 질의해 최종 답변 제공
- 반복적 : 클라이언트 또는 DNS 서버가 여러 DNS 서버에 직접 순차적 유니캐스트 질의 → 각 서버는 다음에 물어볼 서버 정보만 제공
4. FTP
1. FTP
- 컴퓨터 간에 파일을 업로드하거나 다운로드할 때 사용
- 텍스트 기반 명령과 응답으로 동작
- 별도의 인증 필요 (아이디/비밀번호)
- 암호화가 기본적으로 없어 보안에 취약 → 보완된 SFTP, FTPS 등장
2. FTP 작동방식
- 두가지 포트를 가지고 소통을 진행함.
- 제어 연결(Control Connection)
- 클라이언트가 서버 21번 포트로 연결해 명령과 응답 주고받음
- 로그인, 디렉터리 이동, 파일 목록 요청 등 명령 수행
- 데이터 연결(Data Connection)
- 실제 파일 데이터 전송용 연결
- 전송 모드에 따라 서버 20번 포트 사용하거나 클라이언트 임의 포트 사용
3. FTP 전송 모드
- 액티브 모드 (Active Mode)
- 클라이언트가 데이터 수신을 위해 자신의 포트를 열어 놓으면,
- 서버가 그 포트로 직접 데이터 연결을 시도함
- 하지만 클라이언트 측 방화벽이 서버의 연결을 차단할 수 있어서 문제가 발생할 수 있음
- 패시브 모드 (Passive Mode)
- 클라이언트가 서버에 데이터 연결을 요청할 포트를 열어달라고 요청하고,
- 서버가 해당 포트를 열어 클라이언트가 그 포트로 데이터 연결을 직접 생성함
- 방화벽이나 NAT 환경에서 문제 없이 동작해 현재 대부분 이 방식을 사용함
5. SMTP와 POP3
1. SMTP (Simple Mail Transfer Protocol)
- 역할: 이메일 전송 프로토콜
- 용도: 클라이언트 → 메일 서버, 메일 서버 → 메일 서버 간 이메일 전달
- 주 사용 포트: 25 (기본), 587(메일 전송용 인증 포함), 465(SSL)
- 특징
- 역할: 이메일 수신 프로토콜
- 용도: 메일 서버에서 클라이언트로 메일 다운로드
- 주 사용 포트: 110 (기본), 995(SSL)
- 특징
- 메일을 서버에서 내려받아 로컬에 저장하는 방식
- 기본적으로 메일을 서버에서 삭제 후 클라이언트로 이동
- 서버에 메일을 남기지 않는 구조
- 오프라인에서 메일 확인 가능
6.HTTP
1. HTTP(HyperText Transfer Protocol)
- 하이퍼텍스트 전송 프로토콜
- 웹에서 클라이언트와 서버가 서로 데이터를 주고받기 위해 사용하는 응용계층 프로토콜
- 주로 웹 브라우저와 웹 서버 사이에서 HTML 문서, 이미지, 동영상 같은 리소스를 요청하고 전달하는 데 사용
- 일반적으로 TCP 80번 포트를 사용해 요청 및 응답 메시지를 교환함.
2. HTML(HyperText MarkupLanguage)
- HTML은 웹 페이지의 기본 구조를 형성하는 마크업 언어
- HyperText : 다른 페이지나 부분으로 즉시 접근할 수 있는 링크를 텍스트에 내장하는 방식
- Markup : 웹 문서를 구조화하는 데 사용되는 태그를 의미
- Language : 모든 것의 결합된 시스템을 구성하는 언어임을 나타냄.
3. URL(Uniform Resource Locator)
- 웹에서 특정 자원(웹페이지, 이미지, 파일 등)의 위치(주소)를 나타내는 표준 형식
- 인터넷 상의 자원을 찾기 위한 고유한 주소
- 웹 브라우저가 어떤 서버에, 어떤 자원에 접속할지 알려줌
- URL 예시
1
프로토콜://호스트이름[:포트]/경로[?쿼리][#프래그먼트]
- 프로토콜: 통신 규약 (예: http, https, ftp)
- http : 기본 웹 통신 프로토콜 / 포트 번호 기본값: 80
- HTTPS : HTTP에 SSL/TLS 암호화 계층이 추가된 프로토콜 / 포트 번호 기본값: 443
- 호스트이름(도메인 또는 IP): 서버 주소 (예: www.example.com)
- 포트(선택적): 서버 접속 포트 (기본값 생략 가능, 예: 80, 443)
- 경로(Path): 서버 내 자원 위치 (예: /index.html, /images/pic.jpg)
- 쿼리(Query, 선택적): 서버에 전달하는 매개변수 (예: ?id=10&sort=asc)
- 프래그먼트(Fragment, 선택적): 페이지 내 특정 위치 (예: #section2)
4. HTTP 요청
- 프로토콜: 통신 규약 (예: http, https, ftp)
- 요청 라인 (Request Line)
요청 메서드 (Method): 서버에 어떤 작업을 할지 지정 (예: GET, POST)
메서드 역할 GET 서버에서 자원 요청 (데이터 조회) POST 서버에 데이터 제출 (예: 폼 전송) PUT 서버 자원 전체 수정 DELETE 서버 자원 삭제 HEAD GET과 같으나 본문 없이 헤더만 요청 OPTIONS 지원하는 메서드나 통신 옵션 조회 - 요청 대상 (Request-URI): 자원의 경로 (예: /index.html)
- HTTP 버전 (HTTP Version): 사용 프로토콜 버전 (예: HTTP/1.1)
- 헤더(Headers)
- 요청에 대한 부가 정보 전달 (클라이언트 정보, 요청 형식, 쿠키 등)
- 빈 줄 (CRLF)
- 헤더와 본문(body) 구분
- 본문 (Body)
- 주로 POST, PUT 등의 메서드에서 사용
- 서버에 전달할 데이터 포함 (예: 폼 데이터, JSON)
5. HTTP 응답
- 상태 라인 (Status Line)
- HTTP 버전 (예: HTTP/1.1)
상태 코드 (Status Code): 요청 처리 결과를 숫자로 표시 (예: 200, 404)
상태 코드 의미 200 성공 (OK) 301 리다이렉션 (Moved Permanently) 400 클라이언트 오류 (Bad Request) 401 인증 필요 (Unauthorized) 404 찾을 수 없음 (Not Found) 500 서버 오류 (Internal Server Error) - 상태 메시지 (Reason Phrase): 상태 코드에 대한 설명 (예: OK, Not Found)
- 헤더 (Headers)
- 응답에 대한 부가 정보 포함 (콘텐츠 유형, 길이, 서버 정보 등)
- 빈 줄 (CRLF)
- 헤더와 본문 구분
- 본문 (Body)
- 요청한 리소스의 실제 데이터 (예: HTML 문서, 이미지, JSON 등)
- 상태 코드에 따라 없을 수도 있음 (예: 204 No Content)
7.QUIC
1. QUIC
- 구글이 개발한 최신 전송 프로토콜
- 기존의 TCP 대신 UDP 기반에서 빠르고 안전한 인터넷 통신을 목표
- UDP를 기반으로 동작하며 TCP+TLS 기능을 통합한 구조
- 웹 페이지 로딩 속도 개선과 지연 시간(latency) 감소를 위해 설계
2. QUIC 주요특징
- 빠른 연결 수립
- TCP의 3-way handshake와 TLS 핸드셰이크를 결합해 초기 연결 지연 시간을 크게 줄임
- 0-RTT(Zero Round Trip Time) 연결 지원으로 재접속 시 즉시 데이터 송수신 가능
- 멀티플렉싱 (Multiplexing)
- 한 연결에서 여러 스트림을 독립적으로 전송
- TCP와 달리 하나 스트림 지연이나 손실이 다른 스트림에 영향을 주지 않음 (헤드 오브 라인 블로킹 문제 해소)
- UDP 기반
- 방화벽이나 NAT 친화적이며, 사용자 공간(user space)에서 구현 가능
- 네트워크 장비와의 호환성 확보
- 내장된 보안
- TLS 1.3 암호화를 기본 내장해 데이터 전송 시 보안 제공
3. O-RTT 흐름
- 최초 연결 시 클라이언트와 서버는 TLS 핸드셰이크를 통해 안전한 암호키(세션 키)를 서로 생성하고 공유함
- 이 세션 키나 세션 관련 정보를 저장해 둠 (예: 세션 티켓)
- 재접속 시 클라이언트는 이 정보를 서버에 보내서 “이전에 만든 키를 사용해서 바로 통신하자”라고 요청
- 서버가 이를 받아들여서 새 키 교환 없이 바로 데이터를 암호화·복호화함