네트워크 (2) - HTTP/HTTPS
1. HTTP
인터넷상에서 데이터를 전송하기 위한 프로토콜
- 비연결성
응답을 받으면 연결을 끊는다.
서버가 클라이언트를 기억하지 못하는 단점을 해결하고자 HTTP Keep Alive 를 사용하여 일정 시간 연결 유지
- 무상태
클라이언트가 이전에 요청한 사항을 서버에 저장하지 않는다.
클라이언트가 데이터를 모두 가지고 있거나 (쿠키), 서버가 요청 사항을 모두 저장해야 한다. (세션)
대신 서버 확장성이 높다.
* 쿠키 : 웹 브라우저에 저장하는 데이터 파일. 로그인 정보와 장바구니
* 세션 : 서버에 데이터 저장. 보안성은 높지만 서버 과부하 위험
2. HTTP 메시지
서버와 통신하기 위해 주고 받는다.
- 구조
요청 메시지 : 요청 라인, 헤더, 바디
응답 메시지 : 상태 라인, 헤더, 바디
- 상태 코드
1xx : 요청 처리
2xx : 요청을 성공적으로 처리
3xx : 요청 처리 위해 추가 처리 필요
4xx : 클라이언트 오류
5xx : 서버 오류
3. HTTPS
보완 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜
* SSL(Secure Socket Layer) : 넷스케이프에서 개발한 암호화 프로토콜
* TLS(Transport Layer Security) : SSL에 문제가 있어서 보완된 새로운 암호화 프로토콜. 현재 HTTPS에서 통용되는 방식
HTTP 계층은 응용-전송-인터넷-네트워크 인터페이스 계층으로 이루어져 있지만
HTTPS 계층은 응용-*보안*-전송-인터넷-네트쿼크 인터페이스 계층이다.
데이터를 송신할 때 응용에서 보안 계층으로 데이터를 보내면 암호화해서 전송 계층으로 전달한다.
수신할때 전송에서 보안 게층으로 보낸 데이터를 복화해서 응용 계층에 전달한다.
SSL/TLS 암호화 방식에는 2가지가 있다.
- 대칭키 암호화 : 암호화, 복호화에 동일한 대칭키를 이용하는 방식. 대칭 키가 유출되지 않도록 조심해야 한다.
- 공개키 암호화 : 암호화, 복호화를 다른 키로 하는 방식. 암호화는 공개키, 복호화는 비밀키
4. 웹 페이지 접속 과정
사용자가 URL을 입력했을 때 화면이 나타나기까지의 과정 정리
1) 사용자가 URL을 웹 브라우저에 입력한다.
2) URL을 바탕으로 DNS 서버에서 IP 주소를 찾는다.
3) IP를 통해 서버와 TCP/IP 연결을 하고 HTTP 요청을 보낸다.
4) 서버로부터 받은 응답을 바탕으로 웹 페이지에 보여준다.