For job interview, about Web 면접 공부하기-웹
1. GET vs POST
- HTTP (Hypertext Transfer Protocol) 는 클라이언트와 서버 간 요청-응답 프로토콜이다.
1. GET
- HTTP Request Message Header 부분의 URL에 데이터를 담아서 전송한다.
- 데이터의 크기가 제한되며 보안에 취약하다.
- 주로 요청할 때 사용된다.
2. POST
- HTTP Request Message Body 부분에 데이터를 담아서 전송한다.
- 데이터 크기에 제한이 없으며 캐시, 북마크, 브라우저 히스토리 등에 남지 않는다.
- 주로 데이터를 서버에 보낼 때 사용된다.
2. Session vs Cookie
세션과 쿠키를 사용하는 이유는 HTTP가 stateless이므로 서버와 클라이언트가 통신할 때마다 서버는 클라이언트가 누구인지 인증을 계속 해야하기 때문이다.
1. Session 세션
- 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 다이얼로그이다.
- 세션은 서버가 자신의 자산을 이용하는 것을 허락한 사용자를 인식한 일정한 기간을 가리킨다. 일반적으로 이러한 세션은 로그인의 방식을 통해 유지된다.
- 쿠키와 달리 사용자 정보 파일을 서버 측에서 관리한다. 그러므로 쿠키보다 보안에 좋지만, 사용자가 많아질 수록 서버에 과부하를 주게 되므로 성능 저하의 원인이 된다.
2. Cookie 쿠키
- 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일이다.
- 세션보다 요청 속도가 빠르지만, 로컬에 저장되기 때문에 보안에 취약하다.
- 세션은 만료 기간에 상관없이 브라우저가 종료되면 삭제되지만, 쿠키는 만료기간이 남아있으면 브라우저가 종료되어도 유지된다.
@ 캐시와의 차이점:
캐시는 이미지, 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. 웹의 동작 원리
DNS 동작
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는 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/)