Servlet Servlet: 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 기술 servlet을 관리해주는 역할을 하는 것이 servlet container 이다. Servlet의 Life Cycle 클라이언트 요청 proxy server를 거쳐 was로 해당 요청 도착 요청에 대한 thread 생성 매 요청마다 다른 thread가 생성됨 매 요청마다 Servlet 인스턴스를 만드는 것이 아님 해당 thread가 Servlet의 인스턴스에 있는 메소드를 요청 service 메소드 호출 요청의 종류에 따라 doGet 혹은 doPost 호출 응답한 뒤 destroy 함수 호출 → request, response 객체 제거 DispatchServlet F..
Cross-Cutting Concerns를 처리하는 방법 많은 로직에서 공통으로 관심이 있는 부분을 공통 관심사 라고 한다. 로그인 같은 것이 한 예시이다. 로그인이 필요한 모든 컨트롤러 로직에 로그인 여부를 확인하는 코드를 넣는 것은 너무 비효율적이기 때문에, 이런 공통 관심사를 처리해줄 방법이 필요하다. cross-cutting concerns를 처리하는 방법은 filter, interceptor, aop 등이 있다. 그 중에서도 web에 관련된 공통 관심사는 AOP 보다는 servlet filter, spring interceptor에서 처리하는 것이 좋다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL 정보가 필요한데 서블릿 필터나, 스프링 인터셉터는 HttpServletRequ..
쿠키란? 서버가 어떤 데이터를 브라우저 측에 저장한 후 다시 그 데이터를 받아오는 기술 쿠키 헤더의 속성에 대해 설명 유효기간의 명시 session 쿠키: 유효기간이 별도로 명시되지 않은 쿠키. 브라우저의 세션이 종료될 때(탭 닫을 때) 함께 만료됨 permanent 쿠키: 유효기간이 명시되어있는 쿠키 Set-Cookie: =; Expires=종료 시점 Set-Cookie: =; Max-Age=유효 기간 쿠키의 범위 제한 Domain: 서브 도메인까지 포함되도록 쿠키의 범위가 확장된다. Path: 쿠키의 범위를 해당 도메인의 특정 경로로 축소시킬 수 있다. 보안 속성 Secure: Set-Cookie 응답 헤더에 이 속성이 명시된 쿠키는 브라우저가 https 프로토콜 상에서만 서버로 돌려 보냄. 네트워크..
Proxy 서버 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버를 의미함. 캐시, 보안, 트래픽 분산 등 여러 장점을 가질 수 있다. Forward Proxy 일반적인 프록시 설정을 의미함 인터넷과 클라이언트 사이에 위치함 로컬 네트워크와 인터넷 사이 오가는 트래픽을 제어할 수 있음 ex) 학생들의 부적절한 접속을 방지하기 위해 이런 식으로 방지할 수 있음 ex) 인터넷 속도를 향상시키기 위해 Proxy 설정을.. 외국에서 접속하는 것처럼 테스트하기 위해 Proxy 설정을.. 개인정보를 빼돌린 해커는 IP 추적을 방지하기 위해 Proxy 설정을.. 특징 캐싱(서버에서 받아온 날씨 정보를 캐싱하고 있음..) 전송 시간 절약 불필요한 외부 전송 X 외부 요청 감소 → 네트워크 병목 현상 방지 ..
Web Server HTTP, HTTPS를 지원하는 서버 정적 리소스를 서포트하기 위한 서버 Web Application Server(WAS) ex) tomcat, jetty DB 조회, 비지니스 로직 수행 등등 동적 리소스를 지원한다. Java에서는 web Container 혹은 Servlet이라고 부른다. ‘web server 기능도 같이 한다’ 는 얘기지 nginx, apache 등등을 말하는 것이 아니다. 차이점 web 서버는 정적 리소스를 지원하거나 proxy 기능을 하고, was 서버는 db 조회, 비지니스 로직 수행 등의 동적 리소스를 지원한다. WAS 앞 단에 Web Server를 배치하여 정적 리소스(public하게 노출되어도 상관 없는 것) 및 proxy 기능을 제공 WAS는 인증, 인..
정의 Domain Name System의 약자. 도메인 네임과 ip 주소를 메핑 시켜서 갖고 있는 시스템. 동작 과정 브라우저에서 요청 브라우저 캐시를 조회해보고 있으면 반환 사용하고 있는 isp에 해당 도메인에 메핑되어있는 ip 주소를 요청한다. 마찬가지로 캐시를 조회해 있으면 반환 root dns와 tld, 도메인 제공 업체를 recursive하게 조회하여 ip 주소를 얻어온다.
동작원리 https를 통한 인터넷 접속은 SSL(TLS)이라는 보안 프로토콜을 통해 보안이 향상된 통신을 하는 것이다. SSL과 TLS는 응용계층과 전송계층 사이에 존재하는 또 하나의 독립적인 프로토콜 계층임. HTTPS는 SSL 또는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜이다(http + ssl). 즉, SSL과 TLS는 HTTP 뿐만 아니라 FTP, SMTP와 같은 다른 프로토콜에도 적용될 수 있다(FTPS, SMTPS). 동작 흐름 공개키 암호화 방식과 대칭키 암호화 방식의 장점을 활용해 하이브리드 활용 데이터를 대칭키 방식으로 암복호화하고, 공개키 방식으로 대칭키를 전달 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다...
HTTP 특징 클라이언트-서버 구조 무상태 프로토콜 stateful: 서버가 상태를 유지함. 중간에 서버가 바뀌면 문제가 생김 stateless: 서버가 상태를 유지하지 않음. 스케일 아웃(수평 확장)에 유리 비연결성 TCP 와는 달리 HTTP는 기본적으로 연결을 유지하지 않는 모델 서버의 자원을 매우 효율적으로 사용할 수 있음 한계 매번 TCP/IP 연결을 새로 맺어야 함. 한 사이트를 요청하면 HTML 외에도 많은 자원을 함께 다운로드함 → 자원을 받을 때마다 connection을 맺으면 느림 현재는 HTTP 지속 연결(Persistent Connection)으로 문제 해결 HTTP 헤더에 대해.. General 헤더: 메시지 전체에 적용되는 정보 Connection Request 헤더: 요청 정보 ..
흐름제어(Flow Control) 데이터를 송신하는 쪽과 수신하는 쪽의 데이터 처리 속도를 조절하여 수신 쪽 버퍼 오버플로우를 방지하기 위한 것 Stop and Wait: 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법 Sliding Window: 수신측에서 설정한 윈도우 크기(단위 시간 내에 보내는 패킷의 수)만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하는 방식 혼잡제어(Congestion Control) 송신측의 데이터 전달 속도와 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법 네트워크 혼잡: 네트워크 상에 패킷의 수가 넘치게 많아지는 상황 Slow start 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 wind..
TCP는 신뢰성을 보장하는 연결형 프로토콜이므로, 장치들 사이에 논리적인 접속을 성립(establish)하는 ‘연결’을 설정한다. 3-way-handshake 정확한 데이터 전송을 위해 연결을 성립하는 과정(connection establish) 클라이언트(A) → 서버(B) A -> B: SYN 접속 요청 프로세스 A가 연결 요청 메시지 전송 (SYN) 송신자가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다. PORT 상태 - B: LISTEN, A: CLOSED B -> A: SYN + ACK 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어 달라는 메시지 전송 (S..