2024. 9. 27. 16:50ㆍ[Node.js_6기] 스탠다드반
▶ 애플리케이션(응용 프로그램) 계층이란?
사용자의 데이터와 직접 상호 작용하는 유일한 계층이다. 소프트웨어가 사용자에게 의미 있는 데이터를 제공하기 위해 의존하는 프로토콜과 데이터를 조작하는 역할을 한다. 대표적인 응용 계층 프로토콜로는 원격 접속을 위한 텔넷(Telnet), 파일 전송을 위한 FTP, 도메인 이름을 IP 주소로 변환시켜주는 DNS, 메일 전송을 위한 프로토콜인 SMTP등이 있다.
- HTTP (HyperText Transfer Protocol): 웹 서비스에서 클라이언트(웹 브라우저)와 웹 서버 간에 정보를 주고받기 위해 사용되는 네트워크 프로토콜.
- FTP(File Transfer Protocol): 서버와 클라이언트 간에 파일을 전송하기 위한 프로토콜. 일반적으로 통신 포트는 제어 용도로는 21번을 사용하고 데이터 전송 용도로는 20번 포트를 사용한다.
- SMTP(Simple Mail Transfer Protocol): 인터넷에서 메일을 송신하는 데 사용하는 프로토콜. 통신 포트는 일반적으로 25번을 사용하며, SMTP를 지원하는 서버를 SMTP 서버라고 한다.
- POP3(Post Office Protocol version 3): 인터넷에서 메일을 수신하는 데 사용하는 프로토콜. 통신 포트는 일반적으로 110번을 사용하며, POP3를 지원하는 서버를 POP3 서버라고 한다.
- DNS(Domain Name System): 네트워크에서 호스트 이름을 IP 주소로 변환하는 데 사용하는 시스템(서비스). DNS 서비스가 동작하는 컴퓨터(서버)를 DNS 서버라고 한다.
▶ 고유 포트 번호
7계층에 해당하는 응용 계층의 서비스들은 일반적으로 고유의 포트 번호를 가지고 있으며, 디버깅 등의 특수한 상황을 처리하기 위해 관리자들이 별도의 포트 번호를 사용하기도 한다.
▶ 위에서 아래로!
응용 계층은 각각의 어플리케이션에 대응되는 데이터를 전송하는 역할을 한다. 이 때, 응용 계층에서 보내려는 데이터는 하위 계층인 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층 순서로 처리된다.
▽ 각 계층의 프로토콜과 기술
응용 계층 | HTTP, DNS, FTP, SMTP, POP3, 기타 프로토콜 |
전송 계층 | TCP, UDP |
네트워크 계층 | IP |
데이터 링크 계층 | 이더넷 |
물리 계층 | 전기 신호 변환 |
▶ 웹 서버의 구조
WWW(World Wide Web). 거대한 통신망인 인터넷은 수많은 사이트, 데이터, 정보를 갖고 있으며, 통신 회선이 거미줄처럼 서로 연결되어 있어서 언제 어디서든 필요한 곳에 접근하거나 정보를 공유하고 주고받을 수 있는 멀티미디어 인터넷 서버다. 줄여서 W3나 웹(Web)이라고도 부른다.
WWW에는 HTML, URL, HTTP라는 세 가지 기술이 사용된다.
- HTML(Hyper Text Markup Language): 인터넷 서비스의 하나인 WWW를 통해 볼 수 있는 문서를 만들 때 사용하는 프로그래밍 언어. 하이퍼텍스트를 작성하기 위해 개발되었다. 하이퍼텍스트로는 문자와 이미지를 표시하거나 하이퍼링크(hyperlink)를 사용할 수 있다. 하이퍼링크는 보통 링크(link)라고 부르는데 웹 사이트에서 아이콘이나 버튼 등에 있는 링크를 클릭하면 다른 사이트로 이동할 수 있다.
- URL(Uniform Resource Locator): 인터넷에서 파일 위치를 지정하기 위해 기술된 주소. 웹 사이트 주소를 지정하기 위해 사용한다.
- HTTP(Hyper Text Transfer Protocol): HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜. 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다.
▶ HTTP란?
클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버(웹 서버 프로그램)의 80번 포트를 사용하여 HTTP 통신을 한다. 클라이언트에서 HTTP 요청(request)을 보내면 서버에서 HTTP 응답(response)을 반환한다.
지금은 HTTP/2나 HTTP/1.1 버전을 사용하지만 예전의 HTTP/1.0 버전에서는 요청을 보낼 때마다 연결했다 끊는 작업을 반복해서 웹 페이지가 느리게 보였다.
- 예시: 연결 수립 -> 요청 -> 응답 -> 연결 끊기 -> 연결 수립 -> 요청 -> 응답 -> 연결 끊기
그러다가 HTTP/1.1 버전에서는 keepalive라는 기능이 추가됐다.
keepalive는 연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지하고, 데이터 교환을 모두 끝내면 연결을 끊는 구조다.
keepalive는 요청도 순서대로 처리하는 특징이 있다. 1의 요청에 대해 1의 응답을 반환하고, 2의 요청에 대해 2의 응답을 반환한다.
- 예시: 연결 수립 -> 1 요청 -> 1 응답 -> 2요청 -> 2응답 -> 연결 끊기
최근에는 HTTP/1.1 버전의 단점을 보완해서 빠르게 콘텐츠를 표시할 수 있는 프로토콜인 HTTP/2 버전도 사용할 수 있게 되었다.
HTTP/1.1 버전은 요청을 보낸 순서대로 응답을 반환하기 때문에, 이전 요청을 처리하는 데 시간이 길어지면 다음 요청에 대한 처리가 늦어진다. 때문에 콘텐츠 표시다 늦어진다.
HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 되기 때문에, 콘텐츠를 빠르게 표시할 수 있다.
- 예시: 연결 수립 -> 1 요청 -> 2 요청 -> 3 요청 -> 2 응답 -> 3 응답 -> 1 응답 -> 연결 끊기
▶DNS 서버의 구조
컴퓨터(서버)에 접속하려면 숫자로만 구성된 IP 주소를 입력해야 하는데, 기억하기 어렵기 때문에 보통 https://www.google.com 과 같은 형태의 URL을 입력한다. 이는 DNS가 URL을 IP 주소로 변환 해주는 서비스를 제공하기 때문에 가능한 일이다. 이를 DNS의 이름 해석(name resolution)이라고 한다.
- 컴퓨터에서 "이 도메인 이름의 IP 주소는 무엇인가요?"라고 DNS 서버에 질문한다.
- DNS 서버는 해당 요청에 해당하는 도메인 이름의 IP 주소를 알려준다.
- 컴퓨터는 IP 주소로 해당 웹 서버에 접속한다.
그러나 요청한 첫 번째 DNS 서버가 도메인의 IP 주소를 모르는 경우도 있다. 그럴 경우에는 첫 번째 DNS 서버가 다른 DNS 서버에 질의한다. 그리고 다른 DNS 서버로부터 받은 IP 주소를 다시 클라이언트에게 전달해준다. DNS 서버는 전 세계에 흩어져 있으며, 모두 계층적으로 연결되어 있다.
참고 자료:
https://leejoongwon.tistory.com/51
'[Node.js_6기] 스탠다드반' 카테고리의 다른 글
메모리와 주소공간이란? (1) | 2024.10.17 |
---|---|
CPU란? - 기본 개념부터 세부 장치까지 (0) | 2024.10.14 |
OSI 7계층 자세히 알아보기 - 전송 계층 (2) | 2024.09.23 |
OSI 7계층 자세히 알아보기 - 네트워크 계층 (1) | 2024.09.09 |
OSI 7계층 자세히 알아보기 - 데이터 링크 계층 (0) | 2024.09.04 |