cs

웹 어플리케이션 이해

이째형 2021. 7. 14. 12:53

인터넷 네트워크

모든 웹은 HTTP를 기반으로 동작하기 때문에, 웹 개발자라면 HTTP에 대해서 반드시 알아야한다.

HTTP를 이해하기 위한 사전지식을 알아보자.

 

- IP (Internet Protocol)

지정한 ip주소로 데이터를 전달한다. 이 때, 데이터의 형태는 패킷형태로 전달된다.

  • 패킷형태의 전달 방식 때문에, 패킷을 수신할 대상이 없어도 패킷을 보낸다거나(비연결성)
  • 중간에 패킷이 손실되거나, 패킷이 순서대로 오지않는 상황(비신뢰성)등이 발생하는등의 한계를 가진다.

IP 패킷 형태

- TCP (Transmission Controll Protocol)

IP형태에 신뢰성을 추가하기 위해서 연결지향 방식을 제공하는 프로토콜

  • 패킷에 출발/목적지 포트와, 제어정보등이 담겨있다.
  • 데이터 전달을 보장하며 / 데이터의 순서를 보장한다. 현재는 대부분 tcp를 사용한다.

 

- 3way handshake 방식

tcp 프로토콜에서 사용하는 연결방식으로, syn과 ack를 통해서 연결을 확인한 뒤 데이터를 전송하는 연결보장방식.

 

- UDP (User Datagram Protocol)

기능이 거의 없는 프로토콜. (하얀 도화지에 비교된다). ip와 거의 같지만 port가 추가된다.

연결 지향 x / 순서 보장 x / 데이터 전달 보장 x

대신 tcp보다 속도가 빠르다

 

- port

한 클라이언트에(하나의 ip)서 다중업무를 수행하거나 여러개의 서버에 접근해야할 때 프로세스를 구분하기 위해 사용

아이피가 하나의 아파트면, 포트는 동/호수와 같다.

 

- DNS (Domain Name System)

IP는 기억하기 어렵기 때문에 (ip는 변경될 수 있다.) naver, youtube처럼 도메인 명을 정해놓는게 좋다.

클라이언트가 도메인명으로 요청을 하면 DNS서버가 알아서 IP주소로 바꿔준다.

 

- 프로토콜 계층 구조

- 웹서버

HTTP기반 동작. 정적 리소스 제공. 아파치도 웹 서버임

 

- 웹어플리케이션서버(=WAS)

웹 서버 기능포함. 웨 서버와 큰 차이는 프로그래밍 코드를 실행해서 애플리케이션 로직 수행

 

사실 둘의 경계가 애매모호함. 자바의 경우 보통 서블릿 컨테이너를 제공하면 WAS

 

WAS와 DB만으로 시스템을 구성하면 과부하시 오류 출력도 불가능하고, WAS가 담당해야하는 일이 너무 많기 때문에 정적 리소스 출력 같은 비용이 싼 입을 웹서버가 처리한다.

따라서 WAS, 웹 서버 , DB로 시스템을 구성하는 것이 효율적임

 

http 통신시 비즈니스 로직을 제외한 내용이 너무 많아서 하나하나 확인하기에 너무 비효율적. -> 서블릿 등장

 

HttpServletRequest / HttpServletResponse 객체를 이용하여 개발자는 편하게 http스펙 사용가능

 

WAS내의 서블릿 컨테이너가 서블릿 객체를 자동으로 생성/호출/관리 해줌

 

서블릿 컨테이너

톰캣처럼 서블릿 지원하는 WAS. 

서블릿 객체는 싱글톤으로 관리됨 ( 처음 하나 생성 후 공유해서 사용)

싱긑톤 객체는 공유 사용시 매우 조심해야함. 내 정보 대신 남의 정보 보일 수도 있음

 

참고 : 김영한님 HTTP 프로토콜 강의