개발자공부일기
OSI 응용 계층 본문
TCP/IP 4계층 또는 OSI 7계층 모델에서 응용 계층은 네트워크 프로토콜의 최상위 계층으로, 사용자와 네트워크 간의 인터페이스 역할을 수행합니다. 이 계층은 사용자가 네트워크를 통해 데이터를 송수신하고 다양한 서비스를 사용할 수 있도록 지원하며, 주로 웹 브라우징, 이메일 전송, 파일 전송과 같은 애플리케이션 중심의 작업을 처리합니다.
응용 계층은 사용자의 요구를 충족시키기 위해 다양한 응용 프로그램과 상호작용하며, 이들 응용 프로그램이 네트워크 자원을 효율적으로 사용할 수 있도록 필요한 프로토콜을 제공합니다. 이 계층에서 작동하는 프로토콜은 사용자가 이해할 수 있는 형식으로 데이터를 처리하며, 데이터의 전송, 수신, 처리 과정을 투명하게 만들어 사용자는 복잡한 네트워크 작업을 알 필요 없이 서비스를 사용할 수 있습니다.
대표적으로 DNS(Domain Name System), HTTP(HyperText Transfer Protocol), FTP(File Transfer Protocol), SMTP(Simple Mail Transfer Protocol), Telnet, SSH(Secure Shell) 등이 포함되며, 이들 프로토콜은 각각 이름 해석, 웹 데이터 전송, 파일 관리, 이메일 처리 및 원격 접속 등 특정 목적을 위해 설계되었습니다. 응용 계층은 이렇게 다양한 프로토콜을 기반으로 인터넷과 네트워크 기반 애플리케이션의 근간을 형성합니다.
응용 계층의 역할
- 데이터 표현 및 처리
- 사용자가 이해할 수 있는 형태로 데이터를 변환하거나 준비하는 역할을 합니다.
- 문자 인코딩, 데이터 압축, 암호화 등이 포함됩니다.
- 응용 서비스 제공
- 이메일 전송, 파일 전송, 웹 브라우징 등 다양한 네트워크 서비스를 제공합니다.
- 프로토콜 정의 및 관리
- 특정 서비스가 원활히 작동할 수 있도록 필요한 프로토콜을 정의하고 관리합니다.
대표적인 응용 계층 프로토콜
1. DNS (Domain Name System)
- 역할:
DNS는 사용자가 입력한 도메인 이름(예: www.example.com)을 IP 주소(예: 192.168.1.1)로 변환합니다.
컴퓨터는 숫자로 된 IP 주소를 사용해 통신하기 때문에, DNS는 인간이 기억하기 쉬운 도메인 이름을 네트워크가 이해할 수 있는 IP 주소로 변환하는 중요한 역할을 합니다. - 작동 과정:
- 사용자가 브라우저에 도메인 이름 입력.
- DNS 서버가 도메인 이름에 해당하는 IP 주소를 반환.
- 반환된 IP 주소를 사용해 요청을 처리.
- 구조:
- 루트 서버: 도메인 이름의 최상위 관리.
- TLD 서버: 최상위 도메인(.com, .org 등) 관리.
- 권한 있는 네임 서버: 특정 도메인 이름의 최종 IP 주소 반환.
참고:https://javacpp.tistory.com/73
2. HTTP (Hypertext Transfer Protocol)
- 역할:
HTTP는 웹 브라우저와 웹 서버 간에 데이터(텍스트, 이미지, 비디오 등)를 송수신하기 위한 프로토콜입니다.
웹에서의 모든 요청과 응답은 HTTP를 통해 이루어집니다. - 특징:
- 무상태 프로토콜 (Stateless Protocol)
- HTTP는 각 요청(Request)과 응답(Response)이 독립적으로 처리됩니다.
- 이전 요청의 정보를 저장하지 않기 때문에 요청 간의 상태를 유지하려면 쿠키(Cookie), 세션(Session) 또는 토큰(Token)과 같은 별도의 메커니즘이 필요합니다.
- 텍스트 기반 프로토콜
- 사람이 읽을 수 있는 텍스트 형식으로 요청과 응답이 이루어집니다.
- 예: 요청 메서드(GET, POST 등), 헤더(Header), 본문(Body) 등이 텍스트 형식으로 전송.
- 클라이언트-서버 모델
- 클라이언트(웹 브라우저)가 요청을 보내면, 서버가 요청을 처리하고 응답을 반환합니다.
- 클라이언트와 서버 간의 역할이 명확히 구분됩니다.
- 포트 번호
- HTTP는 기본적으로 80번 포트를 사용하며, HTTPS는 443번 포트를 사용합니다.
- 무상태 프로토콜 (Stateless Protocol)
- 작동 과정:
- URL 입력
사용자가 브라우저에 URL(예: http://example.com)을 입력. - DNS 조회
URL에 해당하는 IP 주소를 찾기 위해 DNS 서버에 요청. - HTTP 요청(Request)
브라우저가 서버에 데이터를 요청. 이 요청에는 메서드, URL, 헤더, 본문 등이 포함됨. - 서버 처리
서버는 요청을 처리하고 결과 데이터를 준비. - HTTP 응답(Response)
서버가 준비한 데이터를 클라이언트로 전송. 응답에는 상태 코드, 헤더, 본문 등이 포함됨. - 브라우저 렌더링
클라이언트(브라우저)는 받은 데이터를 해석해 화면에 출력.
- URL 입력
응용 계층과 DNS, HTTP의 관계
- DNS는 사용자가 요청한 웹사이트 주소를 찾기 위해 필요한 IP 주소를 제공하며, 이는 HTTP가 데이터를 요청하거나 전송할 때 사용됩니다.
- 예를 들어, 사용자가 브라우저에 URL을 입력하면:
- DNS를 통해 URL에 해당하는 서버의 IP 주소를 확인.
- HTTP 요청을 생성해 해당 IP 주소로 전송.
- HTTP 응답을 받아 브라우저에서 콘텐츠를 표시.
응용 계층의 주요 프로토콜
- DNS (Domain Name System)
- HTTP (Hypertext Transfer Protocol)
- FTP (File Transfer Protocol): 파일 전송
- FTP는 서버와 클라이언트 간에 파일을 전송하기 위한 표준 프로토콜이다. 주로 대용량 파일의 업로드와 다운로드에 사용되며, 텍스트 파일과 바이너리 파일 모두 전송 가능하다. 데이터 전송 시 제어 연결(21번 포트)과 데이터 연결(20번 포트)을 사용하며, 보안이 적용되지 않아 데이터가 평문으로 전송된다. 이를 보완하기 위해 FTPS 또는 SFTP가 사용되기도 한다.
- SMTP (Simple Mail Transfer Protocol): 이메일 전송.
- SMTP는 인터넷 상에서 이메일을 송신하거나 다른 메일 서버로 전달하는 데 사용하는 프로토콜이다. 발신 메일을 관리하며, 기본 포트는 25번이지만, 보안 강화를 위해 587번이나 465번 포트를 사용하는 경우가 많다. 암호화된 연결(TLS/SSL)을 참고:https://javacpp.tistory.com/73 통해 데이터를 안전하게 전송할 수 있다.
- IMAP/POP3: 이메일 수신.
- IMAP (Internet Message Access Protocol): 메일 서버에 저장된 이메일을 관리하고 클라이언트에서 이를 읽거나 동기화하도록 지원한다. 여러 기기에서 동일한 메일함에 접근할 수 있는 장점이 있다. 일반적으로 포트 143번 또는 보안을 위한 993번을 사용한다.
- POP3 (Post Office Protocol v3): 메일 서버에서 이메일을 다운로드하여 로컬 장치에 저장하는 방식으로 작동한다. 다운로드 후 서버에서 메일을 삭제하는 기본 설정으로 인해 동기화가 어렵다. 기본 포트는 110번이며, 보안을 위해 995번을 사용하기도 한다.
- Telnet/SSH: 원격 로그인 및 제어.
- Telnet: 원격 시스템에 접속하여 명령을 실행하는 프로토콜로, 텍스트 기반의 통신을 지원한다. 암호화가 되지 않아 보안에 취약하며, 기본 포트는 23번이다.
- SSH (Secure Shell): Telnet의 보안 문제를 해결한 암호화 기반 원격 로그인 프로토콜이다. 데이터를 암호화하여 보안을 강화하며, 네트워크 장치 제어와 파일 관리 등 다양한 작업에 사용된다. 기본 포트는 22번이다.
- SNMP (Simple Network Management Protocol): 네트워크 관리.
- SNMP는 네트워크 장치(라우터, 스위치 등)의 상태를 모니터링하고 제어하는 프로토콜이다. 네트워크 관리 시스템(NMS)을 통해 데이터를 수집하거나 장치 설정을 변경하고 장애를 진단할 수 있다. 기본적으로 포트 161번(데이터 요청)과 162번(트랩 메시지)을 사용한다.
'TIL(Today I Learned)' 카테고리의 다른 글
Promise와 forEach의 동작 차이 (0) | 2024.12.31 |
---|---|
I/O(Input/Output) 최적화 (0) | 2024.12.30 |
운영체제 (Operating System)란? (0) | 2024.12.24 |
인덱스 (0) | 2024.12.20 |
IOCP (0) | 2024.12.19 |