네트워크

sumi Yoo·2022년 12월 4일
0

💡 HTTP 프로토콜에 대해 설명해주세요.
데이터를 주고받는 프로토콜로, 서버/클라이언트 모델을 따름.
상태 정보를 저장하기 않는 Stateless의 특징과 클라이언트의 요청에 대한 응답을 한 후 바로 연결을 끊는 Connectionless의 특징을 가짐.

장점

  • 통신 간 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단
  • 요청에 대한 응답을 독립적으로 보내기만 하면 됨

단점

  • 이전 통신의 정보를 모르기 때문에 매번 인증을 해줘야 함
  • 이러한 문제점을 해결하기 위해 쿠키와 세션을 사용

💡 HTTP와 HTTPS의 차이점은 무엇인가요?
HTTP는 평문 데이터를 전송하는 프로토콜, HTTP로 중요한 정보를 전송하는 경우 제 3자에 의해 조회될 수 있음.
HTTP에 암호화를 추가한게 HTTPS임.
SSL의 껍질을 쓴 HTTP라고 할 수 있음.
SSL: 인터넷에서 주고받는 데이터를 보호하기 위해 개발한 통신 규약.
원래 HTTP는 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 SSL은 TCP와 통신함으로써 정보의 암호화, 증명서, 안전성의 보호를 이용할 수 있음.

💡 쿠키(Cookie)와 세션(Session)의 차이점에 대해 말해주세요.
쿠키는 사용자의 PC에 저장하는 작은 기록 정보 파일.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장해놓고 필요 시 정보를 참조하거나 사용할 수 있음.

세션은 일정시간동안 같은 사용자로부터 들어오는 일련의 요청들을 모두 같은 상태라고 보고, 이 상태를 유지시키는 기술.
즉, 사용자가 웹 서버에 접속해 있는 상태를 한 단위로 보고, 이것을 세션이라고 함.

쿠키와 세션의 큰 차이점은 정보 저장의 위치임.
쿠키는 사용자의 로컬에 저장되고, 세션은 서버에 저장됨.
쿠키는 사용자의 로컬에 저장되기 때문에 변질의 위험성이 있고, 요청 중에 스니핑을 당할 우려가 있기에 보안성이 떨어진다.

세션은 쿠키를 이용해서 session-id만 저장하고 이것으로 구분하여 서버에서 처리하기 때문에 비교적 쿠키보다 보안성이 높다.

쿠키는 브라우저를 종료해도 만료시점이 지나지 않으면 삭제되지 않고, 세션은 브라우저를 종료하면 삭제된다.

💡 www.naver.com에 접속할 때 생기는 과정에 대해 설명해주세요. (웹 동작 방식 이해)
1. 사용자가 브라우저에 URL을 입력
2. DNS 서버에 도메인 네임으로 서버의 IP 주소를 찾음.
3. IP 주소로 TCP 3-way HandShaking 과정을 통해 연결 수립
4. 클라이언트가 HTTP 요청 메시지 보냄.
5. 서버가 HTTP 응답 메시지 보냄.
6. 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 브라우저에 의해 화면에 출력됨.

💡 DNS란?
도메인 주소를 IP 주소로 변환해주는 시스템입니다.

💡 3 way-handshake와 4 way-handshake를 설명해주세요.
3 way-handshake 과정을 통해 연결을 설정하고, 4 way-handshake 과정을 통해 연결을 해제한다.

3 way-handshake은 TCP 네트워크에서 통신하는 장치가 서로 잘 연결되었는지 확인하는 과정으로, 총 3번에 걸쳐 데이터를 주고 받으며 연결을 확인함.
4 way-handshake은 TCP 네트워크에서 통신하는 장치의 연결을 해제하는 방법으로, 총 4번에 걸쳐 데이터를 주고 받으며 연결을 해제함.

  • TCP의 3-way Handshaking 과정
  1. 클라이언트가 서버에 접속을 요청하는 SYN 패킷을 보낸다. 클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 됨.
  2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 보내고 A가 다시 ACK로 응답하기까지 기다린다. 이때 서버는 SYN_RECEIVED 상태.
  3. 클라이언트가 서버에게 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오갈 수 있다. 서버의 상태는 ESTABLISHED가 된다.
  • TCP의 4-way Handshaking 과정
  1. 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송한다. 클라이언트는 FIN_WAIT 상태
  2. 서버는 FIN 플래그를 받고 일단 확인 메시지 ACK를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태를 CLOSE_WAIT
  3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다. 서버의 상태는 LAST-ACK이다.
  4. 클라이언트는 확인했다는 메시지를 보낸다. 클라이언트의 상태는 FIN_WAIT -> TIME_WAIT으로 변경

FIN을 전송하기 전에 전송한 패킷이 FIN 패킷보다 늦게 도착하는 상황을 대비하여 FIN을 수신하더라도 일정시간동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정된다. 이 과정을 "TIME_WAIT". 일정시간이 지나면, 세션을 만료하고 연결을 종료시키며, "CLOSE" 상태로 변화

💡 TCP와 UDP의 차이를 설명해주세요.
TCP는 신뢰성 있는 통신을 위해 사용하는 연결형 서비스로, 높은 신뢰성을 보장하지만, UDP 보다는 속도가 느립니다. 3 way, 4way handshake로 서버와 클라이언트가 1:1로 통신을 하고, 흐름제어와 혼잡제어가 이루어집니다.

UDP는 비연결형 서비스로, 3 way-handshake 과정을 거치지 않아 신뢰성을 보장하지 않지만, 메시지 수신 여부를 확인하지 않기 때문에 속도가 빠르고, 1:1, 1:N, N:N으로 연결이 가능합니다.

신뢰성이 중요한 파일 교환 같은 경우에는 TCP, 실시간성이 중요한 스트리밍 같은 경우에는 UDP를 사용하는 것이 좋음.

💡 HTTP Method와 각각이 사용되는 경우에 대해서 설명해주세요.
클라이언트가 서버에 보내는 요청의 목적을 알리는 수단
GET: 데이터 조회
POST: 데이터의 생성 및 수정
PUT: 데이터의 변경
PATCH: 일부 데이터만 변경
DELETE: 데이터 삭제

💡 GET과 POST의 차이에 대해 설명해주세요.
GET은 데이터를 조회할 때 사용하는 방식으로, 데이터를 헤더에 추가하여 전송함.
URL에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함해서는 안됨.

POST는 데이터의 생성 및 수정을 할 때 사용하는 방식으로, 데이터를 바디에 추가하여 전송함.
URL에 데이터가 노출되지 않기 때문에 비교적 보안성이 높음.

💡 세션 기반 인증과 토큰 기반 인증의 차이에 대해 얘기해주세요.
세션 기반 인증은 클라이언트로부터 요청을 받으면 클라이언트의 상태 정보를 저장하기 때문에 Stateful한 구조를 가지고,
토큰 기반 인증은 상태 정보를 서버에 저장하지 않기 때문에 Stateless한 구조를 가짐.

💡 그렇다면 Stateful한 세션 기반의 인증 방식을 사용하게 된다면 어떠한 단점이 있을까요?
1. 서버에 세션을 저장하기 때문에 사용자가 증가하면 서버에 과부하를 줄 수 있기에 확장성이 낮음.
2. 해커가 훔친 쿠키를 이용해 요청을 보낸다면 올바른 사용자가 보낸 요청인지 알 수 없음. (세션 하이재킹 공격)

💡 Connection Timeout과 Read Timeout의 차이에 대해 설명해주세요.
Connection Timeout은 서버와 클라이언트가 연결되는데 소요되는 최대 시간으로, 이 시간을 넘기게 되면 연결할 수 없는 것으로 판단하고 에러가 발생함.
Read Timeout은 서버와 클라이언트가 데이터를 주고받는 데 소요되는 최대 시간으로, 이 시간을 넘기게 되면 데이터를 받을 수 없는 것으로 판단하고 에러가 발생함.

💡 공인(public) IP와 사설(private) IP의 차이에 대해 설명해주세요.
공인 IP는 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이며, 외부에 공개되어 있는 IP 주소.
사설 IP는 일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소이며, 라우터에 의해 IP를 할당받음.
사설 IP 주소만으로는 인터넷에 연결될 수 없으며, 라우터를 통해 1개의 공인 IP를 할당받고, 라우터에 연결된 PC들이 사설 IP를 할당 받아 인터넷에 접속할 수 있음.

💡 서브넷팅
IP 주소 낭비를 방지하기 위해 원본 네트워크를 여러개의 서브넷으로 분리하는 과정

💡 스니핑
네트워크 상에서 자신이 아닌 다른 상대방의 패킷 교환을 엿듣는 것을 의미

💡 OSI 7 layer와 각 계층에 대해 아는대로 설명해주세요.
OSI 7 계층은 인터넷 환경에서 통신하기 위해 네트워킹에 대한 표준을 7계층으로 나눈 것입니다.

7계층(응용 계층): 사용자에게 통신을 위한 서비스를 제공하며, 인터페이스 역할을 함. (FTP, HTTP, SMTP 프로토콜이 속한 계층)
6계층(표현 계층): 데이터의 형식을 정의하는 계층으로 데이터의 변환, 압축 그리고 암호화가 이루어짐.
5계층(세션 계층): 통신을 하기 위해 세션을 만드는 계층
4계층(전송 계층): 서로 다른 두 네트워크간의 데이터 전송을 담당하는 계층으로 세그멘테이션, 흐름제어 그리고 오류제어 등을 제공. (TCP, UDP, 포트 번호)
3계층(네트워크 계층): 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층 (라우터, IP 주소)
2계층(데이터링크 계층): 데이터의 물리적인 전송과 에러 검출, 흐름제어를 담당하는 계층으로 단위는 프레임 (MAC 주소, 이더넷)
1계층(물리 계층): 데이터를 전기 신호로 바꿔주는 계층으로 단위는 비트 (케이블, 리피터, 허브)

💡 로드밸런서란?
로드밸런서는 서버의 부하를 분산시켜주는 시스템입니다.
크게 L4 로드밸런서와 L7 로드밸런서가 있습니다.
L4 로드밸런서는 4계층 이하의 정보를 가지고 로드(부하)를 분산해줍니다. 특히 MAC 주소, IP 주소, 포트 정보를 가지고 트래픽을 분산해주고, L7 로드밸런서는 응용 계층의 정보를 가지고 로드를 분산합니다. 패킷 내용을 확인하고 분산해서 DDoS같은 비정상적인 트래픽도 필터링할 수 있습니다.

1) Round Robin : 서버에 들어온 요청을 순서대로 배정하는 방식

2) Least Connection : 클라이언트와 서버별 연결된 connection 수를 고려하여 가장 적은 서버에 연결하는 방식

💡 IP란?
IP는 Internet Protocol의 약자로, 인터넷 망을 통해 패킷을 전달하는 프로토콜입니다. 비연결성과 비신뢰성의 특징을 가지는데, 비연결성은 패킷을 보내는 길을 정하지 않는 것이고, 비신뢰성은 패킷의 완전한 전달을 보장하지 않는 것입니다.

💡 게이트웨이란?
외부로 연결되는 통로, 로컬망 라우터와 외부망 라우터 간의 통로를 말합니다.

💡 프록시 서버
클라이언트에서 서버로 접속을 할 때 직접적으로 접속하지 않고 중간에 대신 전달해주는 서버를 의미합니다.

💡 ARP(Address Resolution Protocol)
IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜입니다.

💡 RARP(Reverse Address Resolution Protocol)
MAC 주소에 해당하는 IP 주소를 알아오는 프로토콜입니다.

💡 ICMP(Internet Control Message Protocol)
네트워크 계층의 IP 프로토콜은 전송상태에 대한 관리가 이루어지지 않는 신뢰할 수 없는 프로토콜입니다. 이런 IP 프로토콜의 단점을 보완하기 위한 프로토콜이 ICMP 프로토콜입니다.
IP 패킷 전송 중 에러 발생 시, 에러 발생 원인을 알려주거나 네트워크 상태를 진단해주는 기능을 제공합니다.

💡 스위치
원하는 목적지에 데이터 패킷을 전송하는 장치입니다.
데이터링크 계층에 속해 있으므로 MAC주소 기반으로 동작한다.

💡 라우터
목적지로 가는 적합한 경로를 찾아주는 라우팅 기능을 한다. 라우터는 IP주소를 기반으로 작동하여 네트워크 계층에 속해있다.

0개의 댓글