For job interview, about Web 면접 공부하기-웹

2 minute read

1. GET vs POST

  • HTTP (Hypertext Transfer Protocol) 는 클라이언트와 서버 간 요청-응답 프로토콜이다.

1. GET

  • HTTP Request Message Header 부분의 URL에 데이터를 담아서 전송한다.
  • 데이터의 크기가 제한되며 보안에 취약하다.
  • 주로 요청할 때 사용된다.

2. POST

  • HTTP Request Message Body 부분에 데이터를 담아서 전송한다.
  • 데이터 크기에 제한이 없으며 캐시, 북마크, 브라우저 히스토리 등에 남지 않는다.
  • 주로 데이터를 서버에 보낼 때 사용된다.

세션과 쿠키를 사용하는 이유는 HTTP가 stateless이므로 서버와 클라이언트가 통신할 때마다 서버는 클라이언트가 누구인지 인증을 계속 해야하기 때문이다.

1. Session 세션

  • 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 다이얼로그이다.
  • 세션은 서버가 자신의 자산을 이용하는 것을 허락한 사용자를 인식한 일정한 기간을 가리킨다. 일반적으로 이러한 세션은 로그인의 방식을 통해 유지된다.
  • 쿠키와 달리 사용자 정보 파일을 서버 측에서 관리한다. 그러므로 쿠키보다 보안에 좋지만, 사용자가 많아질 수록 서버에 과부하를 주게 되므로 성능 저하의 원인이 된다.
  • 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일이다.
  • 세션보다 요청 속도가 빠르지만, 로컬에 저장되기 때문에 보안에 취약하다.
  • 세션은 만료 기간에 상관없이 브라우저가 종료되면 삭제되지만, 쿠키는 만료기간이 남아있으면 브라우저가 종료되어도 유지된다.
@ 캐시와의 차이점:

캐시는 이미지, css, js 파일 등이 클라이언트의 브라우저에 저장되는 것이다.

3. TCP vs UDP

1. TCP (Transmission Control Protocol)

  • connection-oriented protocol 연결지향형 프로토콜
  • 데이터 전송 전에 연결을 성립하고 전송 후에 연결을 종료한다. (1:1 통신)
  • 신뢰성이 높고 수신여부를 확인하여 손실된 데이터는 재전송한다.
  • 데이터의 전송 순서가 보장된다. (순서 표시를 위해 32-bit 정수 사용)

2. UDP (User Datagram Protocol)

  • datagram-oriented protocol 데이터그램지향형 프로토콜
  • 비연결형 프로토콜로 연결 수립없이 데이터를 송신한다. (1:1, 1:n, n:n 통신)
  • 신뢰할 수 없고 재전송하지 않는다.
  • 데이터의 신뢰성보다 속도가 중요할 때 사용한다.

4. 웹의 동작 원리

web

DNS 동작

dns dns2

5. (Java) Servlet vs JSP (Java Server Pages)

1. Servlet 서블릿

  • 자바를 사용하여 웹페이지를 동적으로 생성하는 서버츠 ㄱ프로그램으로 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
  • JSP가 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다.
  • Process of execution 실행 과정
    • 클라이언트가 웹 서버에 요청을 보낸다.
    • 웹 서버가 요청을 받고 이에 상응하는 서블릿에 요청을 전달한다.
    • 서블릿이 요청을 수행하고 응답 결과를 만들고 웹 서버에 보낸다.
    • 웹 서버는 받은 응답 결과를 클라이언트에게 보내고, 클라이언트 브라우저는 이를 스크린에 보여준다.

2. JSP 자바 서버 페이지

  • HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다.
  • 실행 시에는 JSP 컨테이너에 의해 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하지만 서블릿과 달리, HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.
  • 서블릿의 향상된 버전이다.
  • Process of execution 실행 과정
    • 클라이언트에서 서비스가 요청되면 HTML 페이지를 생성한다.
    • 요청을 처리하기 위해 JSP 파일을 생성한다.
    • XML 파일을 생성하고, WAR 파일을 생성한다.
    • 톰캣을 시작하고 어플리케이션을 실행한다.

6. HTTP vs HTTPS vs SSL

  • HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉽다.
  • 이를 보완한 것이 HTTPS(S는 Over Secure Socket Layer의 약자)로 모든 HTTp 요청과 응답 데이터를 네트워크로 보내지기 전에 암호화 한다.

https

@ HTTPS는 SSL 프로토콜 위에서 돌아가는 프로토콜이다. (같은 개념이 아니다)
  • SSL 작동 과정
    • 웹브라우저가 SSL로 암호화된 페이지를 요청하게 된다. (일반적으로 https://가 사용된다)
    • 웹서버가 Public Key를 인증서와 함께 전송한다.
    • 웹브라우저가 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터 서명된 것인지 확인한다. 또한 날짜가 유효한지, 그리고 인증서가 접속하려는 사이트와 관련되어 있는지 확인한다.
    • 웹브라우저가 Public Key를 사용해서 랜덤 대칭 암호화키를 비릇한 URL, http 데이터들을 암호화해서 전송한다.
    • 웹서버가 Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화한다.
    • 웹서버가 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다.
    • 웹브라우저가 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 정보를 뿌려준다.



※ 참고 :

  • https://www.w3schools.com/tags/ref_httpmethods.asp
  • 후니의 쉽게 쓴 시스코 네트워킹
  • 위키백과
  • https://www.geeksforgeeks.org/introduction-to-jsp/
  • 생활코딩(https://opentutorials.org/course/228/4894)
  • https://m.post.naver.com/viewer/postView.nhn?volumeNo=6422344&memberNo=15488377
  • http://tcpschool.com/webbasic/works
  • https://wiki.kldp.org/HOWTO/html/SSL-Certificates-HOWTO/x70.html
  • https://interconnection.tistory.com/74
  • 초보몽키님 블로그(https://wayhome25.github.io/cs/2018/03/11/ssl-https/)

Tags:

Updated: