기술 면접 준비 for network
-
먼저 DNS Lookup을 한다.
- DNS Lookup은 브라우저가 DNS 서버에게 google.com의 IP 주소를 물어보는 것이다.
- DNS 서버는 google.com의 IP 주소를 알고 있으므로 브라우저에게 IP 주소를 알려준다.
- 브라우저는 DNS 서버가 알려준 IP 주소를 가지고 google.com에 접속한다.
-
브라우저는 DNS Lookup 과정을 통해 얻은 IP에 접속한다.
- 브라우저는 google.com에 접속하기 위해 TCP/IP 프로토콜을 사용한다.
- TCP/IP 프로토콜은 3-way handshaking을 한다.
- 3-way handshaking은 브라우저가 google.com에 접속하기 위해 먼저 google.com에게 접속을 요청한다.
- google.com은 브라우저의 요청을 받고 브라우저에게 접속을 허가한다.
- 브라우저는 google.com의 허가를 받고 google.com에 접속한다.
- 브라우저는 google.com에 접속하고 HTTP 프로토콜을 사용하여 google.com에게 웹 페이지를 요청한다.
- google.com은 브라우저의 요청을 받고 브라우저에게 웹 페이지를 응답한다.
- 브라우저는 google.com의 응답을 받고 웹 페이지를 브라우저에 표시한다.
TCP VS UDP
- TCP 는 연결 지향형 , UDP 는 비연결 지향형 프로토콜이다.
- TCP -> 가상 회선 ( 신뢰성 , 느림 ) -> ( 혼잡 제어 , 흐름 제어 , 오류 제어)
- UDP -> 데이터그램 ( 비신뢰성 , 빠름 ) -> ( 오류 제어 X , 흐름 제어 X , 혼잡 제어 X )
- TCP : 파일 전송
- UDP : 스트리밍 , RTP등 연속성 중요한 서비스 , 개발자가 직접 신뢰성 보장 가능 -> HTTP/3 QUIC 프로토콜로 신뢰성 보장 가능
TCP 3-way handshaking , 4-way handshaking
3-way handshaking
TCP 연결을 위한 절차 , 서버가 클라이언트에 응답 할 수 있는지
- SYN : 연결 요청
- SYN/ACK : 연결 수락
- ACK : 연결 확인
- SYN(N) -> ACK(N+1) -> , SYN(M) -> ACK(M+1) , 임의의 난수 N , M -> 기존 요청과 구분하기 위해
4-way handshaking
TCP 해제를 위한 절차 , 클라이언트 -> 서버 연결 해제 요청
- 클라이언트 요청 -> 서버 확인 -> 클라이언트에 응답 후 연결 해제 -> 클라이언트 일정 시간 대기 후 연결 해제
- 일정 시간 대기 후 해제 이유 : 패킷이 늦게 도착 할 수 있기 때문
HTTP VS HTTPS
- HTTP : HyperText Transfer Protocol
- HTTPS : HTTP + SSL/TLS
- HTTP : 80번 포트 , HTTPS : 443번 포트
- HTTP : 암호화 X , HTTPS : 암호화 O
HTTPS , SSL Handshaking
- HTTPS : HTTP + SSL/TLS , 제 3자 인증 , 비대칭키 , 대칭키
- SSL : Secure Socket Layer
- SSL Handshaking : 클라이언트와 서버가 암호화 통신을 하기 위한 절차
Client Request -> Server Certification response -> Client Verify Certification
- Certification : 비밀키로 암호화 , 공개키로 검증 가능 , 서버의 공개키 획득 가능
- 서버의 공개키로 통신에 사용할 비밀키를 서버에 request
- 공유된 비밀키로 통신
- 비밀키 공유/암호화 : 통신
- 인증기관/공개키 : 인증서
- 복합적으로 사용하는 이유 -> 비대칭키 속도 < 대칭키 속도
HTTP METHOD
- OPTIONS : SERVER Request URI 지원 여부 확인
- GET : 서버로부터 리소스 요청
- HEAD : GET과 동일 , 응답에 BODY X , Header 만 응답
- POST : 서버에 리소스 생성 요청
- PUT : 서버에 리소스 생성/수정 요청
- DELETE : 서버에 리소스 삭제 요청
- TRACE : 서버에 요청 메시지를 그대로 반환
- PATCH : 서버에 리소스 일부 수정 요청
HTTP STATUS CODE
- 1xx : 요청 수신
- 2xx : 요청 성공
- 3xx : 요청 완료 , 리다이렉트
- 4xx : 요청 오류
- 5xx : 서버 오류