7장 응용계층, 어플리케이션에 접속하는 단계
응용계층의 역할
- 클라이언트(Client) : 서버에 서비스를 요청하는 주체
- 서버(Server) : 클라이언트에게 서비스를 제공하는 주체
서버와 클라이언트가 통신하기 위해서는 정해진 프로토콜을 준수 해야한다.
프로토콜 내용 포트번호 HTTP 웹사이트접속 80 DNS IP주소 변환 53 FTP 파일전송 20(데이터전송),
21(명령과 응답제어)SMTP 이메일 송신 25 POP3 이메일수신 110
HTTP 프로토콜
- 요청(Request) : 사용자(클라이언트) URL을 입력하여 서버에 전달하는 행위
- 응답(Response) : 서버가 사용자의 요청에 대한 결과를 보내는 행위
- HTTP(HyperText Transfer Protocol) : 서버와 클라이언트가 어떻게 데이터를 교환 할지 정해놓은 규칙
파싱(parsing) : 어떤 페이지(문서,HTML)등의 데이터를 특정패턴이나 순서로 추출하여 직렬화 가공하는 것을 말한다.
HTTP의 구조 시작라인 헤더(Header) 공백(1줄) 바디(body)
1. 시작라인
시작라인 : 요청/응답의 메세지 정보를 담는 줄로 HTTP메서드/경로/HTTP버전으로 구성
- ex) GET/index.html HTTP/1.1
1) 요청메서드
서버에 어떤 작업을 할지 알려주는 메세지이다.
헤더명 용도 GET 서버로부터 데이터를 획득 POST 서버에 데이터를 추가.생성 PUT 서버의 데이터를 갱신 PATCH 서버의 데이터를 일부 갱신 DELETE 서버의 데이터를 삭제
2) 경로
- HTTP 경로는 웹페이지를 화면에 띄우기 위해서 가져올 Html의 주소
경로/파일명.확장자
형식으로 사용한다.- DNS가 해석하여 해당 IP의 주소에서 특정 파일을 로드한다.
3) 버전
- 초기 HTTP버전은 헤더에 자체적으로 HTTP버전정보, 상태들을 서버에 보내는데 서버의 성능저하를 야기시켰다.
- 1.0버전은 KeepAlive기능으로 연결이 하번 수립되면 데이터 교환이 끝날때 까지 연결을 유지한다.
- 2.0버전은 응용계층에서 바이너리프레임을 추가하여. 기존의 일반텍스트데이터를 바이너리로 변환 후 데이터를 분할하여 전송하여, 속도랑 안정성을 높인다.
4) 응답메세지
서버에서 응답을 하면 버전정보/응답메시지
와 함께 데이터를 반환한다.
상태코드 | 의미 | 설명 |
---|---|---|
1xx | 정보 | 요청을 받았으며 처리가 되고 있음을 나타낸다. |
2xx | 성공 | 요청이 성공햇음을 나타낸다. |
3xx | 리다렉션 | 클라이언트가 요청한 콘텐츠를 다른곳으로 전달했다는 의미이다. |
4xx | 클라이언트오류 | 클라이언트 측에서 기인한 오류 |
5xx | 서버오류 | 서버측에서 기인한 오류 |
2. 헤더
클라이언트와 서버가 통신하기 위한 부가정보들이 포함된다.
- 호스트(Host):서버의 도메인이름과 포트번호
- 연결(Connection):현재의 작업이 끝난 후에도 네트워크 연결 상태를 유지할지 여부를 제어
- 언어(Language): 서버가 응답에 사용한 언어
3. 바디
- 클라이언트가 요청한 정보들을 포함한다.
DNS서버
- DNS(Domain Name Sytem) : IP주소를 도메인 주소로 변경해주는 서버
DNS 변경 과정
- 사용자는 도메인 주소를 입력한다.
- 사용자의 요청 주소는 DNS 서버에 전달 된다. 서버는 요청주소에 해당하는 IP 주소를 전달한다.
- 만약 DNS서버가 IP를 모르면 다른 DNS에 접속해서 IP주소를 요청한다.
- 사용자는 해당 IP주소를 이용하여 웹사이트에 접속한다.
- 웹서버는 요청에 응답을 한다.
DNS의 계층적 구조
- 로컬 DNS 캐시 확인 : 먼저 사용자의 컴퓨터와 로컬 DNS 서버의 캐시를 확인하여. 이전에 조회했던 도메인이라면 여기서 바로 응답을 한다.
- 루트 DNS 서버 질의 : 캐시에 없다면, 로컬 DNS 서버는 루트 DNS 서버(.)에 질의를 보고, 루트 서버는 최상위 도메인(TLD) 서버의 정보를 반환한다.
- 최상위 도메인(TLD) 서버 질의 : 루트 서버가 알려준 TLD 서버(.com, .net, .kr 등)에 질의하여. TLD 서버는 해당 도메인을 관리하는 권한 있는 네임서버의 정보를 알려줍니다.
- 권한 있는 네임서버 질의 : 최종적으로 도메인을 관리하는 권한 있는 네임서버에 질의하여 실제 IP 주소를 받아옵니다.
DHCP서버
- DHCP(Dynamic Host Configuration Protocol) : 사용자에게 IP주소를 할당하거나 회수하는 것을 자동으로 해주는 서버
DHCP 할당 방식
- 사용자의 컴퓨터는 DHCP서버를 찾는다.
- DHCP 서버는 사용자에게 IP 주소 할당 여부를 묻는다.
- 사용자가 IP 주소가 필요하다고 요청을 한다.
- DHCP서버는 IP주소를 할당해 준다.
SMTP와 POP3 프로토콜
1. 송신자와 메이서버 간의 통신
- 컴퓨터 A는 메일 서버에 25번포트(SMTP 프로토콜)로 통신 하겠다는 알리면, 메일 서버는 OK신호와 함꼐 자신 서버명을 알려준다.
- 메일 서버에게 사용자 컴퓨터 정보(컴퓨터 A)를 알리고, 메일 서버는 OK 신호를 보낸다.
- 사용자 이메일 주소를 메일 서버에 알려주고 OK신호를 받는다.
- 수신자의 이메일 주소를 메일 서버에 알려주고 OK신호를 받는다.
- 본문을 메일 서버에 알려주고 OK 신호를 받는다.
- 연결 종료를 알리고 메일서버는 OK 신호를 보내면서 연결을 종료한다.
1단계 (송신자-메일서버 통신) 주요 특징
- 25번 포트는 SMTP의 기본 포트
- 실제로는 587번 포트(Submission Port)도 자주 사용됨
- 각 단계마다 OK 신호(예: 220, 250 등의 응답 코드)를 주고받으며 진행
- 이 과정을 “SMTP Handshake”라고도 함
2. 메일 서버간의 통신
- 송신자 메일 서버는 SMTP를 사용하여 수신자 서버에 이메일을 전달한다.
- 수신자 서버에서 받은 메일을 저장한다.
2단계 (서버 간 통신) 주요 특징
- DNS의 MX(Mail eXchanger) 레코드를 통해 수신자의 메일 서버 주소를 찾음
- 메일 서버 간에도 25번 포트 사용
- 이 과정에서 스팸 필터링 등이 이루어질 수 있음
3. 메일서버와 수신자간의 통신
- 수신자는 110번 포트(POP3프로토콜)로 메일 서버에 연결을 시도한다.
- 연결이 수립되면 수신자의 정보를 넘긴다.
- 사용자 인증을 거쳐 메일을 받는다.
- 연결을 종료한다.
3단계 (메일서버-수신자 통신) 주요 특징
- POP3(110번 포트) 외에도 IMAP(143번 포트) 프로토콜 사용 가능
- POP3는 기본적으로 다운로드 후 서버에서 삭제
- IMAP은 서버에 메일을 보관하면서 동기화
- 보안을 위해 실제로는 암호화된 포트(POP3S:995, IMAPS:993)를 더 많이 사용
응용 계층에서 사용하는 로드밸런서
- URL 기반 분배
- 특정 : URL 요청을 특정 서버로 전달 가능
- 예: /images/* → 이미지 서버, /api/* → API 서버
- 콘텐츠 기반 분배
- HTTP 헤더 정보 확인
- 쿠키 정보 활용
- 요청 내용(Payload) 분석 가능
- 보안 기능
- SSL/TLS 터미네이션
- DDoS 방어
- 애플리케이션 레벨 보안 제공
- 장점:
- 더 세밀한 라우팅 가능
- 콘텐츠 기반 스위칭
- 높은 보안성
- 캐싱 기능 지원
- 단점:
- L4보다 처리 속도가 느림
- 높은 비용
- 복잡한 구성
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.