Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자공부일기

OSI 응용 계층 본문

TIL(Today I Learned)

OSI 응용 계층

JavaCPP 2024. 12. 26. 20:49
 

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. 데이터 표현 및 처리
    • 사용자가 이해할 수 있는 형태로 데이터를 변환하거나 준비하는 역할을 합니다.
    • 문자 인코딩, 데이터 압축, 암호화 등이 포함됩니다.
  2. 응용 서비스 제공
    • 이메일 전송, 파일 전송, 웹 브라우징 등 다양한 네트워크 서비스를 제공합니다.
  3. 프로토콜 정의 및 관리
    • 특정 서비스가 원활히 작동할 수 있도록 필요한 프로토콜을 정의하고 관리합니다.

 

대표적인 응용 계층 프로토콜

1. DNS (Domain Name System) 

  • 역할:
    DNS는 사용자가 입력한 도메인 이름(예: www.example.com)을 IP 주소(예: 192.168.1.1)로 변환합니다.
    컴퓨터는 숫자로 된 IP 주소를 사용해 통신하기 때문에, DNS는 인간이 기억하기 쉬운 도메인 이름을 네트워크가 이해할 수 있는 IP 주소로 변환하는 중요한 역할을 합니다.
  • 작동 과정:
    1. 사용자가 브라우저에 도메인 이름 입력.
    2. DNS 서버가 도메인 이름에 해당하는 IP 주소를 반환.
    3. 반환된 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번 포트를 사용합니다.
  • 작동 과정:
    1. URL 입력
      사용자가 브라우저에 URL(예: http://example.com)을 입력.
    2. DNS 조회
      URL에 해당하는 IP 주소를 찾기 위해 DNS 서버에 요청.
    3. HTTP 요청(Request)
      브라우저가 서버에 데이터를 요청. 이 요청에는 메서드, URL, 헤더, 본문 등이 포함됨.
    4. 서버 처리
      서버는 요청을 처리하고 결과 데이터를 준비.
    5. HTTP 응답(Response)
      서버가 준비한 데이터를 클라이언트로 전송. 응답에는 상태 코드, 헤더, 본문 등이 포함됨.
    6. 브라우저 렌더링
      클라이언트(브라우저)는 받은 데이터를 해석해 화면에 출력.

응용 계층과 DNS, HTTP의 관계

  • DNS는 사용자가 요청한 웹사이트 주소를 찾기 위해 필요한 IP 주소를 제공하며, 이는 HTTP가 데이터를 요청하거나 전송할 때 사용됩니다.
  • 예를 들어, 사용자가 브라우저에 URL을 입력하면:
    1. DNS를 통해 URL에 해당하는 서버의 IP 주소를 확인.
    2. HTTP 요청을 생성해 해당 IP 주소로 전송.
    3. 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