너와 나의 연결고리, JSP 🔗(1) - 웹 서버

joyfulwave·2022년 10월 11일
1
post-thumbnail

이제 진짜 웹 서버와 연결해 볼 차례




📚 웹서버

웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램을 뜻해요. 또한 앞에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터도 하드웨어적인 웹 서버라고 해요.




📚 CS 프로그램

📌 CS 모델 (Client Server Model)

간단한 구조로 되어있고, 대부분 Server에서 데이터를 처리하고 클라이언트는 UI를 담당해요.

⚫ 장점

  • 구조가 간단하여 속도가 빨라요.
  • 대부분 C/C++ 언어로 작성되어 속도가 좋아요.

⚫ 단점

  • 네트워크망의 분리등의 이유로 인해 구조상 확장의 어려움이 있어요.
  • Client는 프로그램을 다운로드 받아 PC에 설치해야 하기 때문에 배포의 번거로움이 있어요.(예 : PC 카카오톡)
  • 버그를 수정하여도 배포하기 어려워요.
  • 특정 OS 및 하드웨어에 종속적이에요.

📌 소켓통신

  • 소켓 통신이란 서버와 클라이언트 양방향 연결이 이루어지는 통신으로, 클라인트도 서버로 요청을 보낼 수 있고 서버도 클라이언트로 요청을 보낼 수 있는 통신이에요.
  • 보통 스트리밍이나 실시간 채팅 등 실시간으로 데이터를 주고 받아야 하는 경우에는 Connection을 자주 맺고 끊는 HTTP 통신보다 소켓 통신이 더 적합해요.
  • 소켓 통신은 계속해서 Connection을 들고있기 때문에 HTTP통신에 비해 많은 리소스가 소모돼요.



📚 Web 프로그램

📌 Web환경

CS 환경이 배포가 어렵다는 단점을 보완한 모델로 브라우저만 있으면 어디서든 쉽게 접근이 가능해요.

⚫ 장점

  • OS와 브라우저의 제품에 상관없이 어디서든 동작이 가능해요.
  • 수정된 부분을 쉽게 배포가 가능해요.

⚫ 단점

  • 성능이 떨어지고, 속도가 느린데, 화면의 복잡도가 증가하면 더더욱 성능이 떨어져요.
  • 너무 다양한 기술이 접목되어 관리의 어려움이 있어요.

📌 HTTP 통신이란

  • HTTP란 HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가져요. 웹 브라우저에서 통신이 일어나며, 초기에는 HTML 파일을 전송하기위해 만들어졌으나, 현재는 JSON, Image 파일 등 또한 전송이 가능해요.
  • HTTP 통신은 클라이언트에서 서버로 요청을 보내고 서버가 응답하는 방식으로 통신이 이루어져요. 응답에는 클라이언트의 요청에 따른 결과를 반환해요.
  • 클라이언트의 요청이 있을 때 서버가 응답하는 방식의 단방향 통신을 뜻해요.
  • 옵션등의 설정으로 컨넥션 유지 시간등을 설정할 수 있어요.
  • 실시간 연결이 아니고, 응답이 필요한 경우에만 Server와 연결을 맺어 요청을 보내는 상황에 유용해요.



📚 소켓 vs HTTP

  • 자주 데이터를 주고 받는 환경이 아닌 경우 HTTP 통신을 통해 받는 것이 유리해요.
  • 자주 데이터를 주고 받아야 하는 환경에서는 소켓 통신이 유리해요.
  • HTTP 통신은 사용자가 서버에 요청을 보내는 단방향 통신인 반면, 소켓 통신은 양방향 통신이에요.



📚 통신 프로토콜

  • 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계예요.
  • 통신 프로토콜은 신호 체계, 인증 그리고 오류 감지 및 수정 기능을 포함할 수 있어요.
  • 프로토콜은 형식, 의미론, 그리고 통신의 동기 과정 등을 정의하기는 하지만 구현되는 방법은 독립적이에요.

📌 프로토콜의 예시

  • HTTP : HyperText Transfer Protocol
  • HTTPS : HyperText Transfer Protocol Secure (인증서와 같이 보안의 기능이 추가된)
  • FTP : File Transfer Protocol 파일을 전송하는 프로토콜
  • SFTP : Secure File Transfer Protocol (보안의 기능이 추가된)
  • Telnet : Terminal Network
  • SMTP : Simple Mail Transfer Protocol
  • SSH : Secure SHELL
  • SSL : Secure Socket Layer



📚 웹 페이지

📌 정적 웹 페이지(Static web pages)

  • 정적 웹 페이지는 언제 접속해도 같은 응답을 보내줘요.
  • HTML, CSS, JS파일이 서버에 업로드 되면 개발자가 수정하기 전까지 매번 같은 파일을 브라우저에게 건네줘요. 즉, 웹 서버가 정적 웹 페이지에 대한 요청을 받은 경우 서버는 추가적인 처리 과정 없이 클라이언트에게 응답을 보내요.
  • 예를들어 회사나 개인의 소개 페이지가 정적 웹페이지의 좋은 예시에요. 데이터베이스와 같은 것에 따로 접속할 필요가 없기에 누가 접속하든 똑같은 응답을 해요.

📌 동적 웹 페이지(Dynamic web pages)

  • 웹 서버가 동적 웹 페이지에 대한 요청을 받은 경우 서버는 추가적인 처리 과정 이후 클라이언트에게 응답을 보내요.
  • 동적 페이지는 방문자와 상호작용하기 때문에 페이지 내용은 그때 그때 달라요.
  • 댓글, 날씨, 주가 정보 등과 같이 정보 변경이 잦은 곳에 많이 사용돼요. 데이터베이스와 같은 것에 접속할 필요가 있어서 누가 접속하든 매번 다른 응답을 해요.



📚 웹 호스팅이란

  • 인터넷상의 공간을 임대해 주는 서비스를 웹 호스팅이라고 해요.
  • 만든 홈페이지를 PC에만 저장해놓으면 인터넷상에서 볼 수 없는데 웹 서버의 일부 공간을 할당받아 그 곳에 홈페이지 자료를 올려놓으면 누구나 인터넷상으로 해당 페이지를 볼 수 있어요. (예: 닷홈)



📚 도메인

  • 도메인은 쉽게 말해 페이지의 이름으로 건물을 짓는다고 치면 건물명에 해당해요.

[가고자 하는 곳] : 롯데타워
[실제 주소] : 서울시 송파구 잠실6동 올림픽로 300
[가고자 하는 사이트 주소] : naver.com
[실제 주소] : 125.209.222.142

http://www.facebook.com:80/news/index.php

  • http:// : 통신 프로토콜
  • www.facebook.com : 도메인(마을)
    (125.209.222.142)
  • localhost : 자기 자신을 가리키는 특수 도메인
    (125.0.0.1)
  • 80 : 포트번호, 특정 컴퓨터에 통신을 위해 열려 있는 문(집)
    - 모든 컴퓨터는 0 ~ 65535 까지의 포트번호를 가지고 있어요.
    - 이 포트번호를 통해서 통신이 진행될 수 있으며 기본적으로 모든 포트는 차단되어 있어요. (포트를 차단하는 역할을 하는 프로그램이 방화벽이다.)



포기하지 말고 JUST DO! ✔️




출처
https://media.giphy.com/media/dwmNhd5H7YAz6/giphy.gif
https://media.giphy.com/media/3o6Mb9EC7mNqXl9x7y/giphy.gif

0개의 댓글