먹었으면 뇌를 쓰자
6. 응용 계층의 프로토콜(HTTP, FTP, SMTP/POP3, DNS) 본문
응용 계층: 애플리케이션에 데이터 전송하기
책에서는 응용 계층을 하위 계층인 표현 계층과 세션 계층의 기능을 포괄한 것으로 지칭하고 있다. 배우는 입장에서 한 자라도 부담을 덜어준다면 오히려 좋아. 응용 계층은 사용자(클라이언트)의 요청을 통신 대상(서버)가 이해할 수 있는 메시지(데이터)로 변환하여 전송 계층으로 전달한다. 또 반대로 전송 계층으로부터 서버의 메시지를 전달받아 클라이언트에게 전달하기도 한다.
응용 계층에서는 크게 세 가지 애플리케이션과 이를 처리하는 프로토콜을 살펴본다. 첫째, 웹 사이트 접속과 HTTP이다. 둘째, 파일 전송과 FTP이다. 셋째, 이메일 송수신과 SMTP/POP3이다. 또한 네트워크에서 기기에 붙여진 이름을 기반으로 IP 주소를 알아내는 '이름 해석' 작업에 쓰이는 DNS라는 프로토콜도 함께 볼 것이다.
응용 계층(application layer)
웹 사이트 접속, 파일 전송, 이메일 송수신 등 애플리케이션에 대한 서비스를 제공하는 계층이다.
우리가 컴퓨터로 하는 실질적인 작업과 관련된 데이터를 다루므로 사용자와 가장 가까운 계층이다.
웹 서버의 구조 (웹 사이트 접속)
우선 웹 사이트에 대해 알아보자. 웹 페이지에는 HTML과 URL이라는 기술이 사용된다.
HTML(Hyper Text Markup Language)는 웹 사이트에서 문장 구조나 문자를 꾸미는 '태그'를 사용하여 작성하는 마크업 언어이다. (마크업 언어는 동적 프로그래밍이 아닌, 정적 표현 그 자체를 목적으로 하는 언어이다) 웹 브라우저를 통해 볼 수 있는 하이퍼 텍스트에는 글, 사진, 하이퍼링크가 있다. URL(Uniform Resource Locator)은 HTML로 구성된 웹 사이트 하나의 주소이다.
응용 계층에는 웹 사이트에 접속하기 위한 프로토콜인 HTTP가 있다. 클라이언트(웹 브라우저)는 웹 사이트에 접속하기 위해 서버(웹 서버)의 80번 포트를 사용해 HTTP 통신을 한다. 클라이언트가 'GET'(요청 정보, 파일 이름, 버전 등)이라는 HTTP 요청을 보내면 서버는 'OK'라는 HTTP 응답을 반환한다.
현재 통용되고 있는 HTTP/2 버전은 keepalive 기능이 있어 한 번 연결이 수립되면 데이터 교환이 끝날 때까지 연결이 유지된다. 또한 요청을 보낸 순서대로 응답을 반환하지 않고, 빨리 끝난 순서대로 반환한다.
DNS 서버의 구조 (이름 해석)
웹 사이트에 접속할 때 IP 주소(192.123.456.7)를 쓴다면 사람들이 쉽게 기억하지 못한다. 그래서 URL(https://eat-then-brain.tistory.com)을 쓰는 것이다. 하지만 네트워크의 논리 주소는 IP 주소이기 때문에, 응용 계층에는 웹 사이트의 URL을 IP 주소로 변환하는 프로토콜인 DNS가 있다.
DNS 서버에서 DNS 프로토콜을 통해 URL의 IP 주소를 반환하는 이름 해석(name resolution) 작업이 진행된다. DNS 서버가 IP 주소를 모를 경우 전 세계에 흩어져 있는 다른 DNS 서버에 물어본다고 한다. 재밌네.
메일 서버의 구조 (메일 송수신)
메일을 송신할 때는 SMTP(포트번호 25번), 수신할 때는 POP3(포트번호 110번) 프로토콜이 사용된다. SMTP는 메일 서버 간의 메일 전송에도 사용된다. 메일 송수신 프로세스를 살펴보자.
1. 컴퓨터 1은 SMTP를 사용해 메일 서버 1로 메일을 송신한다
2. 메일 서버 1은 SMTP를 사용해 메일 서버 2로 메일을 송신한다
3. 컴퓨터 2는 POP3를 사용해 메일 서버 2에서 메일을 수신한다
메일 서버 1은 보통 메일 서비스를 제공하는 포털사이트나 회사의 서버이다. 그래서 메일을 쓰면 일차적으로 메일 서비스를 제공하는 포털사이트나 회사의 메일 서버로 송신된다.
예를 들어 네이버 계정에서 Brain 대학교 학사운영실로 메일을 보낸다고 해보자. 네이버 계정에서 작성한 메일은 네이버 메일 서버(메일 서버 1)로 송신된다. 이 때 메일 박스에 메일이 저장된다. 그리고 네이버 메일 서버는 Brain 대학교 메일 서버(메일 서버 2)로 메일을 송신한다. 이 서버를 통해 학사운영실은 메일을 수신한다.
* HTTP에서는 method라는 일종의 명령어들을 사용하여 클라이언트와 서버 간 의사소통이 이루어진다. GET(웹 서버로부터 원하는 웹 문서 요청), HEAD(웹 문서의 본문을 제외한 정보를 요청), POST(클라이언트가 웹 서버에 데이터를 전달하는 방법) 등이 있다.
* HTTP 상태 코드(HTTP status codes)이라는 것이 있다. 이는 클라이언트의 요청에 대해 서버가 반환하는 응답으로, 총 5가지 상태로 분류된다.
1nn (정보 응답) - 요청이 수신되었으며 프로세스를 계속합니다
2nn (성공) - 요청이 성공적으로 수신되어 완료되었습니다
3nn (리디렉션) - 요청을 완료하기 위해 추가 조치를 취해야 합니다
4nn (클라이언트 오류) - 요청에 잘못된 구문이 포함되어 있거나, 완성된 형식이 아닙니다
5nn (서버 오류) - 요청은 제대로 왔으나 서버가 수행할 능력이 없습니다
우리가 자주 보는 404 not found 가 대표적인 HTTP 상태 코드 중 하나이다.
4nn 코드이므로 클라이언트(웹 브라우저) 문제다.
* 이 게시물은 미즈구치 카츠야의 책 '모두의 네트워크'에 담긴 내용을 개인 공부 목적으로 정리한 것입니다.
모두의 네트워크 | 미즈구치 카츠야 - 교보문고
모두의 네트워크 | 네트워크를 전혀 몰라도 괜찮다! 초보자와 비전공자를 위한 가장 쉬운 네트워크 입문서[모두의 네트워크]는 이제 막 네트워크를 공부하기 시작했거나 공부해야겠다고 마음먹
product.kyobobook.co.kr
'네트워크' 카테고리의 다른 글
8. 무선 랜과 와이파이 (0) | 2022.11.04 |
---|---|
7. 네트워크의 전체 흐름 (1) | 2022.11.03 |
5. 전송 계층, TCP와 UDP (0) | 2022.10.31 |
4. 네트워크 계층, IP/IP 주소, 게이트웨이, 라우팅, 라우터 (1) | 2022.10.30 |
3. 데이터 링크 계층, 이더넷, MAC 주소, 프레임, 스위치 (1) | 2022.10.28 |