7계층 응용 계층은 무엇일까
여러 가지 프로토콜에 대한 사용자 인터페이스를 제공한다. 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계층이다. HTTP, FTP, 메일 프로그램 등을 제공한다.
Application 구조
client-server 구조 : 서버와 클라이언트가 통신하는 구조

server는 항상 켜져있고 고정 IP를 사용한다.
client는 서버와 통신하고 동적 IP를 사용하며 간헐적으로 연결된다. 클라이언트끼리 통신할 때 직접 연결하지 않고 서버를 거쳐서 통신한다.
peer-to-peer(P2P) 구조

단대단 통신으로 client-server 구조와 달리 중앙 서버가 없다. (서버가 다운되어도 통신이 가능하다)
end system끼리 직접 연결하기 때문에 서버가 항상 켜져있을 필요가 없다.
자기 확장성 : 새로운 peers는 새로운 서비스 용량과 새로운 서비스 요구사항을 제공한다.
단점 : Peers(client)끼리 연결할 때마다 IP주소가 바뀌기 때문에 이것을 관리하는 것이 복잡하다.
프로세스
프로세스는 호스트에서 동작하는 프로그램으로 app-L를 작동시킨다. 즉 실제 통신하는 것은 프로그램이 아니라 프로세스가 하는 것이다.
같은 호스트 내에서 통신할 때는 inter-process communication을 사용하고
서로 다른 호스트끼리 메시지를 교환할 때는 프로세스로 통신한다.
inter-process communication : 운영 체제에서 프로세스 간에 데이터를 교환하고 상호 작용 하기 위한 메커니즘 또는 프로토콜을 가리킵니다.
두 프로세스 간의 통신에서
클라이언트 : 접속, 통신을 초기화 하는 프로세스
서버 : 접속을 기다리는 프로세스
요청을 보내는 쪽이 클라이언트 요청을 받는 쪽이 서버
HTTP
HTTP(HyperText Transfer Protocol)는 웹의 app-L 프로토콜이다.
특징
client/server 모델
client : HTTP 프로토콜로 요청(request)을 보내고 응답을 받는 브라우저
server : HTTP 프로토콜로 요청에 대한 응답(response)응 보낸다.
HTTP는 상태를 저장하지 않는다.
서버가 클라이언트의 요청에 대한 정보를 유지하지 않는 특성을 의미한다. 클라이언트로부터 HTTP request가 오면 그에 대한 response를 보내고 request를 지우는 것이다. 이렇게 하는 이유는 프로토콜이 "state"를 유지하는 것은 굉장히 복잡하기 때문이다. 그래도 혹시 모를 상황을 대비하여 백업 서버를 두고 서버 장애 시 백업 서버를 통해 대응이 가능
장점 : 서버의 확장성이 높다
단점 : 클라이언트에 대한 추가 데이터 전송을 요구할 수 있다.
만약 서버가 더 이상 공간이 없으면 백업 서버가 없기 때문에 기존의 기록이 없어질 수 있다.
HTTP 연결
HTTP는 연결 상태를 유지하는지 아닌지에 따라 persistent HTTP와 non - persistent HTTP로 나뉜다.
non - persistent HTTP
모든 요청/응답 쌍이 분리된 TCP connection을 통해 전송된다. 클라이언트와 서버가 서로 요청/응답을 한 번씩 주고 받으면 TCP connection이 닫힌다. 즉 한 번의 TCP connection을 통해 전송되는 오브젝트의 수가 최대 1개인 것이다. 만약 여러 오브젝트를 다운받으려면 그만큼 여러 connection이 필요하다.
RTT
패킷 하나가 클라이언트에서 서버로 전송되고 다시 클라이언트로 돌아오는데 걸리는 시간을 의미

첫 번째 RTT는 서버와 클라이언트가 맨 처음에 TCP connection을 시작하는 것이다 두 번째는 HTTP request와 response를 주고받는 시간이다 마직막은 파일 전송시간 따라서 대략적인 응답 시간은 2번의 RTT와 파일 전송시간을 더한 시간이다.
non - persistent HTTP 단점
매번 2번의 RTT가 필요
각각의 TCP connection에 대한 오버헤드가 발생
브라우저는 웹페이지에 참조된 개체를 가져오기 위해서 병렬 TCP connection을 시도
persistent HTTP
각각의 요청/응답 쌍이 같은 TCP connection 내에서 이루어진다. 클라이언트와 서버가 여러 번의 request와 response를 주고 받을 때 단 하나의 TCP connection만 사용되는 것
non - persistent HTTP 보다 더 효율적
서버는 TCP connection에 대한 응답을 보낸 뒤에 connection을 계속 열어둔다.
클라이언트와 서버는 이미 열려있는 connection 1개로 계속 HTTP 메시지를 주고 받는다.
1RTT로 모든 오브젝트를 전송한다.
열린 TCP connection은 일정 기간동안 사용하지 않으면 닫힌다.
HTTP는 연결을 유지하지 않는다.
HTTP는 기본적으로 connection을 유지하지 않는 모델이다. 따라서 서버 자원을 효율적으로 활용할 수 있다. 하지만 지속적인 TCP/IP 3-way handshake로 오버헤드가 발생할 수 있다. 이러한 단점을 해결하기 위해 위에 있는 persistent connection을 제공한다.
DNS
도메인
도메인은 IP주소 대신의 사용하는 영문 주소로 예를 들어 www.naver.com이 도메인 이라고 볼수있다.
도메인에 들어갈 수 있는 문자는 0~9의 숫자, a~z의 문자, 하이폰( - )이 있습니다. 256자 이상은 불가능하고 이미 등록된 도메인은 사용할 수 없습니다.
DNS (Domain Name System)
DNS는 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP주소로 바꿔주는 시스템 입니다. 도메인을 주소로 바꿔주기 위해서 DNS 서버가 사용되는데 DNS 서버에는 IP주소와 도메인이 저장되어 있습니다. 따라서 도메인에 해당되는 IP주소를 알고 싶다면 DNS 서버에게 물어보면 된다.
도메인의 계층 구조

도메인은 체계적인 분류와 관리를 위해 계층 구조로 되어 있으면 ' . '으로 구분되어 있습니다.
1단계 도메인은 국가를 나타내는 국가 코드 도메인과 일반적인 목적에 따라 사용되는 일반 도메인이 있다.
2단계 도메인은 조직의 속성을 구분하는 도메인으로 co(영리 기업), go(정부 기업), ac(대학) 등이 있습니다. 3단계 도메인은 조직이나 서비스의 이름을 나타내는 도메인으로 사용자가 원하는 문자열로 선택할 수 있다.
도메인은 계층구조대로 관리되고 있다. 다시 말해서 상위 계층의 DNS 서버가 하위 계층의 서버를 관리하며 하위 계층 서버의 IP주소를 알고 있습니다.
루트 서버에는 1단계 도메인에 대한 IP주소들이 저장되어 있고 1단계 도메인 서버들을 관리한다. 각각의 1단계 도메인 서버에는 2단계 도메인의 IP주소가 저장되어 있으며 2단계 도메인 서버에는 3단계 도메인 서버의 IP 주소가 저장되어 있습니다.
DNS 서버
'www.google.com'도메인에 대한 IP주소를 찾는 요청이 들어오면 먼저 자신의 캐시 저장소에서 해당 도메인에 대한 IP주소가 있는지 찾아봅니다. 있다면 바로 IP주소로 접근하고 없다면 가장 최상의 계층인 루트 네임 서버부터 방문합니다. 루트 네임 서버에서는 'com'을 관리하는 네임 서버의 IP주소를 반환하고 그 주소를 통해 'com'의 네임 서버에 방문합니다. 'com'의 네임 서버에서는 'google.com'을 관리하는 네임 서버의 IP주소를 반환하고 그 주소를 통해 'google.com'네임 서버에 방문합니다. 'google.com'의 네임 서버에 도착하면 'www.google.com'에 대한 IP주소를 알려주게 되고 IP주소를 받은 DNS 서버는 요청한 컴퓨터에 IP주소를 반환합니다.
출처:
OSI 7계층: 7계층 응용 계층(Application Layer)이란? (tistory.com)
[네트워크] OSI 7계층(응용계층, DNS) (tistory.com)
'네트워크' 카테고리의 다른 글
| OSI 7계층 중 전송 계층 (24.09.12 강의 관련) (0) | 2024.09.11 |
|---|---|
| OSI 7계층 중 네트워크 계층 (09.10 강의 관련) (2) | 2024.09.09 |
| 데이터 링크 계층(09.05 강의 관련) (1) | 2024.09.04 |
| 물리계층에 관하여 (24.09.03 강의 관련) (0) | 2024.09.02 |
| OSI 7계층 (08.29 강의 관련) (1) | 2024.08.28 |