응용 계층(Application Layer)은 7 계층 모델에서 7번째 계층에 해당하며,
TCP/IP 모델에서는 응용 계층이 세션 / 표현계층의 역할까지 포함하게 된다.
이는 최상위 계층으로 사용자와 데이터를 주고받는 기능을 제공하게 된다.
HTTP나 메일 교환을 생각해 보자. 그게 7 계층에서 제공하는 기는 중 일부이다.
주요 프로토콜
1. HTTP/S (HyperText Trasfer Protocol / Secure)
어쩌면 가장 많이 들어봤을 프로토콜이기도 하다.
웹페이지 주소가 저걸로 시작하기에 일반 사용자와 가장 친숙한 프로토콜이라 볼 수 있겠다.
무상태 프로토콜
각 요청과 응답이 독립적으로 처리된다. 상태를 유지하지 않기 때문에 Stateless Protocol이라고 부른다.
요청/응답 모델
클라이언트가 요청을 보내면 서버는 그에 대한 응답을 준다.
이 2가지 요소로 통신이 이루어진다.
여기부턴 HTTPS의 특징이기도 하다.
보안성 강화
데이터가 암호화되어 중간에서 도청이나 변조가 어렵다.
인증서 사용
서버는 SSL/TLS 인증서를 통해 신원을 확인하고 인터넷 연결을 보호한다.
2. FTP (File Transfer Protocol)
이름 그대로 파일 전송을 위한 프로토콜이다.
단말 간 편리한 파일 교환을 제공하는 프로토콜이자 프로그램이기도 하다.
TCP를 통해 연결되며, Filezilla나 WinSCP 같은 프로그램이 널리 사용된다.
3. DNS (Domain Name System)
구글에 접속할 때, 유튜브에 접속할 때를 생각해 보자.
우린 https://google.com/이나, https://www.youtube.com/같이 그 페이지의 이름을 입력하여 접속한다.
아이피를 써서 저런 서비스에 접속하는 것이 우리의 일상은 아니다.
하지만 시스템은 저대로만 넘겨주면 목적지를 알 수 없기 때문에 DNS를 통해 IP 주소로 변환해 접속한다.
도메인 이름과 IP 주소를 매핑해 인간의 편의성을 제고하는 시스템이다.
DNS는 중앙에서 관리되는 마스터 서버 같은 것이 없다.
여러 DNS 서버가 있고, 이러한 DNS 서버가 분산된 요청을 받아 처리하게 된다.
4. DHCP (Dynamic Host Configuration Protocol)
DHCP는 네트워크 장치에 동적으로 IP를 할당해 주는 프로토콜이다.
컴퓨터를 새로 샀다고 생각하자.
이걸 인터넷에 연결하기 위해 통신사에 전화해서 수동으로 IP를 할당받고 설정하는 것이 일반적일까?
누구도 그렇지 않을 것이다.
각 통신사도 DHCP를 활용해 가입자들에게 IP를 동적으로 할당해 준다.
공유기도 똑같이 돌아간다.
폰이나 태블릿에서 Wi-Fi를 활용해 공유기 네트워크에 접속한 경험이 없는 사람을 찾는 게 더 힘들 것이다.
공유기도 이렇게 접속하는 기기들에게 DHCP를 통해 동적으로 IP를 할당해 통신을 가능케 한다.
프로토콜의 동작 방식
1. HTTP/S
HTTP/S는 요청과 응답 2가지로 구분된다.
그 구조를 한눈에 보면 다음과 같다.
구조의 공통점이 확실히 보인다.
머리에 이 메시지가 뭘 의미하는 것인지 표현이 되고 있다.
그 아래엔 메시지의 정보가 있고...
다음엔 공백을 통해 헤더 내용이 끝났음을 알려준다.
가장 아래엔 본문이 들어가며, 이는 선택사항이다.
HTTPS는 여기에 SSL/TLS를 활용해 암호화된 통신을 구현했다는 차이가 있다고 이해하면 된다.
2. FTP
FTP는 TCP/IP를 베이스로 하며, 명령 채널과 데이터 채널의 두 가지 연결을 사용한다.
1. 연결 설정
클라이언트는 서버의 21번 포트로 접속해 명령 채널을 설정한다.
2. 인증
ID와 PW를 통해 인증 절차를 진행한다.
서버에 따라 인증 절차가 생략될 수도 있다.
3. 명령 전송
클라이언트는 서버에 파일 전송, 디렉토리 조회 등의 명령을 서버에 보낸다.
4. 데이터 전송
데이터는 데이터 채널을 통해 전송된다. 데이터 채널은 20(액티브 모드),
또는 동적으로 할당된 포트(패시브 모드)를 사용한다.
5. 연결 종료
작업이 완료되면 서버와의 연결을 종료한다.
3. DNS
도메인 주소를 어떻게 IP 주소로 매핑하는지 과정을 보자.
1. 도메인 이름 요청
유저가 웹브라우저를 통해 ``https://google.com/``과 같이 도메인 이름을 입력한다.
2. 로컬 캐시 확인
클라이언트의 DNS 리졸버가 로컬 캐시에 해당 도메인의 IP 주소가 있는지 확인한다.
3. 질의
없다면 DNS 서버에 물어본다.
4. 루트 서버에 질의
재귀 리졸버는 루트 네임 서버에 구글의 TLD에 대한 정보를 요청한다.
루트 네임 서버는 ``.com`` 네임 서버의 주소를 리턴한다.
5. TLD 네임 서버 질의
리졸버는 ``.com`` TLD 네임 서버에 구글의 IP 주소를 요청한다.
6. 권한 있는 네임서버 질의
이제 리졸버는 권한 있는 네임서버(Authoritative Name Server)에 구글의 정보를 요청한다.
여기서 구글의 권한 있는 서버에 질의하게 될 것이기 때문에 그 아이피를 리턴하게 된다.
7. 접속 및 캐싱
이렇게 응답을 받았으면 실제로 해당 아이피로 접속 요청을 보내게 될 것이다.
이제 로컬 DNS는 해당 주소를 다음 사용을 위해 캐싱한다.
이렇게 서버를 옮겨 다니며 질의하는 과정을 재귀적 쿼리(Recursive Query)라고 한다.
4. DHCP
DHCP는 사실 IP 주소 할당뿐만 아니라, 여러 네트워크 설정을 자동으로 수행해 주는 프로토콜이다.
1. DHCP Discover
클라이언트는 브로드캐스트로 메시지를 보내 DHCP 서버를 찾는다.
2. DHCP Offer
DHCP 서버는 사용 가능한 IP 주소와 네트워크 설정을 ``포함한 DHCP Offer``라는 메시지로 응답한다.
3. DHCP Request
클라이언트는 여러 제안 중에서 하나를 선택하고, ``DHCP Request`` 메시지로 해당 서버에 요청을 보낸다.
4. DHCP Acknowledgement
서버는 ``DHCP Ack`` 메시지를 보내 IP 주소 할당을 확인하고 각종 설정 정보를 전달한다.
위 과정을 통해 클라이언트는 자동으로 네트워크를 설정하고 통신을 시작할 수 있다.
동작 방식 요약
사실 더 많은 프로토콜과 특징이 있지만 일단 여기서 얘기한 것들에 대해서만 요약해 보자.
- HTTP/S : 웹 페이지의 요청과 응답 처리
- FTP : 파일의 교환을 위한 작업 처리
- DNS : 도메인 이름과 IP 주소 간의 변환을 수행
- DHCP : 단말이 자동으로 네트워크 설정을 수행할 수 있게 함
한 줄로 요약되는 내용들이다.
하지만 그 한 줄을 구성하기 위해 얼마나 많은 복잡한 일들이 있는지 놀라운 느낌도 든다.
결론
응용 계층은 네트워크 통신의 최상위 계층으로, 다양한 네트워크 서비스를 사용자에게 직접 제공한다.
이 계층에서 동작하는 프로토콜들은 인터넷의 핵심 가능을 구현하며, 우리의 일상에 잘 녹아들어 있다.
응용 계층을 이해하는 것은 사용자와 가장 가까운 영역을 이해한다는 점에서 대단히 중요하다고 생각된다.
Reference
'Camp > Standard' 카테고리의 다른 글
컴퓨터에서의 CPU란? (0) | 2024.10.07 |
---|---|
컴퓨터에서의 메모리란? (0) | 2024.10.06 |
[OSI 7계층] 전송 계층 (0) | 2024.09.06 |
[OSI 7계층] 네트워크 계층 (0) | 2024.09.06 |
[OSI 7계층] 데이터 링크 계층 (0) | 2024.09.03 |