1. TCP와 UDP의 차이
- | TCP | UDP |
---|
연결여부 | 연결형 서비스 | 비연결형 서비스 |
방식 | 가상회선 방식 | 데이터그램 방식 |
특징 | 높은 신뢰성, 제어 기능제공 | TCP에 보다 빠르다 |
- TCP는 연결형 서비스로 가상회선 방식을 제공하고 높은 신뢰성을 보장하며 흐름제어 및 혼잡 제어 기능을 제공한다.
- UDP는 비연결형 서비스로 데이터그램 방식을 제공하고 속도가 TCP에 빠르다.
2. TCP 3,4 way handshake
- TCP 3 way handshake 는 TCP 통신을 이용하여 데이터를 전송하기 위한 네트워크 연결을 설정하는 과정
- 즉, 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터를 전송하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- TCP 4 way handshake 는 TCP의 연결을 해제하는 과정
3. HTTP와 HTTPs의 차이
- HTTP는 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜. 즉, 하이퍼텍스트를 교환하기 위한 통신규약입니다.
- HTTPs란 HTTP에 데이터 암호화가 추가된 프로토콜
4. HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명
HTTPS는 HTTP에 보안 계층을 추가한 것으로 제3자 인증, 공개키 암호화, 비밀키 암호화를 사용한다.
- 제3자 인증 : 믿을 수 있는 인증기관에 등록된 인증서만 신뢰하는 것
- 공개키 암호화 : 비밀키를 공유하기 위해 사용
- 비밀키 암호화 : 통신하는 데이터를 암호화하는데 사용
클라이언트는 TCP 3way handshake를 수행한 이후 Client Hello를 전송합니다. 서버는 인증서를 보냅니다.(다른 정보들도 전송하나 검색을 통해 알 수 있는 부분입니다. 대개 그 정도까지는 요구하지 않습니다.)
클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인합니다. 이 인증서는 인증기관의 개인키로 암호화되어있고, 공개키로 검증할 수 있습니다.(브라우저에 내장되어있음) 클라이언트는 사이트의 정보와, 서버의 공개키를 얻을 수 있습니다.
서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보냅니다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신합니다.
제3자 인증: 인증서, 인증기관/공개키 암호화: 인증서, 비밀키 공유/비밀키 암호화: 통신과정
4.1 왜 공개키 암호화와 비밀키 암호화를 복합적으로 사용하는가?
공개키 방식은 암/복호화 과정에서 많은 컴퓨터 파워를 사용하기 때문에 성능에 단점이 생기는 문제를 줄이기 위해 복합적으로 사용한다
- 공개키를 그대로 사용하면 많은 접속이 몰리는 서버는 매우 큰 비용을 지불해야 하고 반대로 대칭키는 암호를 푸는 열쇠를 상대에게 전송해야 하는데 이걸 그냥 전송하면 위험하다
- 그래서 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받음
5. HTTP 메소드와 역할
메소드 | 역할 |
---|
POST | 생성(C) |
GET | 조회(R) |
PUT | 수정(U) |
DELETE | 삭제(D) |
5.1 Get 과 Post 방식의 차이
- Get : 클라이언트가 서버로 어떤 데이터를 조회하기 위한 요청을 위한 메소드
- Post : 서버로 데이터를 생성하기 위해 데이터를 보낼때 사용하는 메소드
- Get은 URL 파라미터에 데이터를 담아보내므로 body가 없고 Post는 body에 데이터를 실어 보낸다.
- | Get | Post |
---|
사용목적 | 데이터 조회 | 데이터의 생성 |
요청에 body | 무 | 유 |
멱등성 | O | X |
멱등?
: 연산을 여러번 적용해도 결과가 달라지지 않는 성질
정리🙋♂
Get은 데이터의 조회를 위한 요청시 사용하는 메소드이며 멱등하고, URL에 데이터를 실어보내므로 body가 없습니다. Post는 데이터의 생성 위해 사용하는 메서드로 body에 데이터를 실어보내고 멱등하지 않습니다.
6. RESTful?
- REST의 원리를 잘 지키는 시스템
REST의 원리?
HTTP URI 를 통해 데이터를 표시하고 HTTP method를 통해 자원에 대한 처리를 하는 것
7. CORS?
- 서로 다른 도메인간에 자원을 공유하는 것
- 대부분의 브라우저에서는 이를 차단하며, 서버측에서 헤더를 통해서 사용가능한 자원을 알려준다
8. OSI 7계층이란 무엇이고 존재이유
- OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈것을 말하며 계층을 나눈 이유는 단계별로 통신이 일어나는 과정을 파악할 수 있기 때문이다.
8.1 TCP/IP 4계층 ?
- 실제로 우리가 대부분 사용하는 네트워크는 TCP/IP 4계층으로 통신에 실제로 이용되는 계층이다.
8.2 OSI 7계층 중 웹서버 소프트웨어는 어디서 작동?
- 웹 서버는 HTTP 프로토콜을 사용하여 html 데이터를 클라이언트에 제공하는 서버입니다. 웹서버 중의 하나로 어플리케이션 계층에서 작동
9. CSRF
- 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격
- Django에서는 기본적으로 csrf token을 이용하는데 이는 POST 요청에 대해서만 csrf token을 발급하고 체크한다.
문제 출처
ksundong/backend-interview-question
썸네일 출처
heelieben