728x90

쿠키(cookie)와 세션(session)

  • Http는 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징인 Connectionless와 통신이 끝나면 상태를 유지하지 않는 statless를 해결하기 위해서 쿠키와 세션이 나왔다.

쿠키

  • 쿠키는 클라이언트의 로컬에 저장되는 key-value가 들어 있는 작은 데이터 파일이다. 쿠키에는 유효시간을 지정할 수 있고, 쿠키의 유효시간이 남을 경우 브라우저가 종료되어도 스토리지에 남아있다.

쿠키 동작 방식

  1.  클라이언트가 페이지를 요청한다.
  2. 서버에서 쿠키를 생성한다.
  3. HTTP 헤더에 쿠키를 포함시켜 응답한다.
  4. 브라우저에서 쿠키를 저장
  5. 쿠키가 존재하면 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보내서 요청한다.

ex) 팝업, 장바구니, 자동 로그인

 

세션

  • 세션은 인증과정에서 보통 쿠키를 기반으로 하고 있지만, 클라이언트의 상태 정보를 서버 메모리에 저장하는 기술을 의미한다. 
  • 그러나 서버 메모리에 관리하기 때문에 사용자 수가 많을 경우 성능 저하의 요인이 된다.

세션 동작 방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급한다.
  2. 클라이언트는 세션 ID를 쿠키를 이용해 저장한다.
  3. 클라이언트가 서버에 다시 접속 시 이 쿠키를 이용해서 세션 ID값을 서버에 전달

세션 쿠키 방식 장단점

장점

  • 세션 ID는 유의미한 값을 갖지 않기 때문에 HTTP 헤더나 바디에 직접 계정 정보를 담아 전송하는 것보다 보안에 강점이 있다.
  • 세션 ID는 고유의 ID값이기 때문에 서버 메모리에서 바로 검색할 수 있어 성능향상을 기대할 수 있다.

단점

  • 중간에 가로챈 쿠키(세션 ID)를 가지고 해커가 동일한 요청을 보낼 경우 사용자인지 해커인지 구분하기 힘들다.
  • 세션 저장소는 서버의 메모리를 사용하기 때문에 동시 사용자가 많을 수록 서버의 부하가 심하게 걸린다.

OAuth

  • OAuth란 특정 애플리케이션이 다른 애플리캐이션의 정보에 접근할 수 있는 권한을 관리하는 프로토콜이다.

 


OSI 7 Layer

OSI 7 Layer는 네트워크를 계층적인 구조로 표현한 것이다. 네트워크 계층을 7 계층으로 나눈 이유는 네트워크에서 이상이 발생했을 경우 다른 계층의 장비 및 소프트 웨어를 건들지 않고도 이상이 생긴 특정 계층만 고칠 수 있는 유지보수 측면에서의 장점과 새로운 응용 계층 프로토콜을 개발할 경우 표현 계층까지 재사용함으로써 확장성 측면에서의 장점을 가지기 때문에 나눈 것이다.

  1. 물리계층(Physical Layer) : 데이터를 전기 신호로 바꿔주는 계층
  2. 데이터링크 계층 (DataLink Layer) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
  3. 네트워크 계층 (Network Layer) : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
  4. 전송 계층 (Transport Layer) : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
  5. 세션 계층(Session Layer) : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
  6. 표현 계층 (Presentation Layer) : 데이터의 형식을 정의하는 계층
  7. 응용 계층 (Application Layer) : 사용자와 직접 상호작용을 하는 응용프로그램들이 포함된 계층

웹 동작 방식

 

  • 사용자가 브라우저에 URL을 입력
  • 브라우저는 DNS를 통해 서버의 진짜 주소를 찾음
  • HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성함
  • TCP/IP 연결을 통해 HTTP요청이 서버로 전송됨
  • 서버는 HTTP 프로토콜을 활용해 HTTP 응답 메세지를 생성함
  • TCP/IP 연결을 통해 요청한 컴퓨터로 전송
  • 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨

 

HTTP Protocol

HTTP(Hyper Text Transfer protocol)이란 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜이다. HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다. HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.

 

HTTP와 HTTPS

HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고받으면 제삼자에 의해 조회될 여지가 있다.

이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS이다.

HTTPS는 자신이 공개키를 갖는 인증서를 발급하여 보내는 메시지를 공개키로 암호화 하도록 하고 있다. 공개키로 암호화된 메시지는 개인키를 가지고 있어야만 복호화가 가능하기 때문에, 기업을 제외한 누구도 원본 데이터를 얻을 수 없다.

HTTP1 VS HTTP2

HTTP1 은 연결당 하나의 요청/응답을 처리하여 다음과 같은 문제가 있다.

 

  • HOL(Head Of Line) Blocking (특정 응답 지연): 클라이언트의 요청과 서버의 응답이 동기화되어 지연 발생
  • RTT(Round Trip TIme) 증가 (양방향 지연): 패킷 왕복 시간의 지연 발생
  • 헤더 크기의 비대: 쿠키 등과 같은 메타데이터에 의해 헤더가 비대해짐

HTTP2는 다음과 같은 기술로 HTTP1의 성능 문제를 해결하였다.

 

  • Multiplexed Streams: 하나의 커넥션으로 여러 개의 메시지를 동시에 주고받을 수 있음
  • Stream Prioritization: 요청 온 리소스 간의 의존관계를 설정하여 먼저 응답해야 하는 리소스를 우선적으로 반환함
  • Header Compression: 헤더 정보를 HPACK 압축 방식을 이용하여 압축 전송함
  • Server Push: HTML 문서 상에 필요한 리소스를 클라이언트 요청 없이 보내줄 수 있음

DNS

DNS는 Domain Name을 Host IP로 변환해주는 서비스이다. DNS 서버들은 계층 구조로 구현된 분산 데이터베이스로 주요 구성요소로써   Root, Top Level Domain, Authoritative, Local DNS Server가 있다.


TCP와 UDP

  • UDP는 비신뢰적이고 비연결형 서비스를 제공하는 프로토콜이고, TCP는 신뢰적이고 연결형 서비스를 제공하는 프로토콜이다.
  • UDP는 3 way-handShake를 사용하지 않기 때문에 신뢰성이 떨어지지만 속도가 빠르기 때문에 실시간 스트리밍 등에 사용된다.
  • TCP는 신뢰성이 중요한 파일 교환 같은 경우에 쓰인다.

TCP 3 way-handShake

3 way-handShake는 TCP 네트워크 통신을 하는 장치가 서로 연결이 잘되어있는지 확인하는 방법이다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고받으며 통신이 가능한 상태임을 확인한다.


GET과 POST

GET은 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식이다. URL에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함해서는 안된다.

POST는 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식이다. 완전히 안전하다는 것은 아니지만 URL에 데이터가 노출되지 않아 GET보다는 안전하다.


토큰 기반 인증방식

토큰 기반 인증 방식은 인증에 필요한 정보들을 암호화시킨 토큰을 통해서 인증을 하는 방식이다.

토큰 기반 인증 동작 방식

  1. 클라이언트가 로그인한다.
  2. 서버는 클라이언트를 확인하고 Access Token을 발급해 사용자에게 응답해준다.
  3. 사용자는 Access Token을 받아 쿠키와 같은 곳에 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보낸다.
  4. 서버는 해당 토큰을 검증하고 적절한 토큰일 경우 사용자에 알맞은 데이터를 보낸다.

토큰 기반 인증 방식 장단점

장점

  • 세션/쿠키와 달리 토큰은 별도의 저장소 관리가 필요 없고 검증만 하면 되기 때문에 추가 저장소가 필요 없다.
  • 페이스북이나 구글에서 지원해주는 다양한 서비스도 토큰 기반으로 진행되기 때문에 관련 기능을 확장하기 용이하다.

단점

  • 토큰의 경우도 세션 ID와 마찬가지로 가로챘을 경우 사용자인지 해커인지 구분하기가 힘들다.(HTTPS를 사용하고, 토큰 유효기간을 짧게 한다.)
  • 토큰의 길이는 세션 ID보다 훨씬 길기 때문에 많은 요청이 발생할수록 오버헤드도 많이 발생한다.

웹 접근성 국제표준 

웹 접근성을 높이기 위해 고안된 웹 표준은 웹에서 표준적으로 사용되는 기술이나 규칙을 의미한다. 웹 표준을 정하기 위하 W3C(World Wide Web Consortium)이 설립되었으며 웹 표준으로 구조 언어인 HTML, 표현 언어인 CSS, 동작 언어인 Script를 지정하였다.


공인 IP와 사설 IP

공인 IP

  • 전 세계에서 유일한 IP로 ISP(Internet Service Provider)가 제공하는 IP주소이다.
  • 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 장비로부터 접근이 가능하다. 그러므로 방화벽 등과 같은 보안설정을 해주어야 한다.

사설 IP

  • 어떤 네트워크 안에서 사용되는 IP 주소
  • IP V4의 부족으로 인해 모든 네트워크가 공인 IP를 사용하는 것이 불가능하기 때문에 네트워크 안에서 라우터를 통해 할당받는 가상의 주소이다.
  • 별도의 설정이 없으면 외부에서 접근이 불가능하다.

JWT

JWT는 Json Web Token의 약자로 Json 포맷을 통해 사용자에 대한 속성을 저장하는 Web Token이다.

 

JWT의 구조는 Header, PayLoad, Signature의 3 부분으로 이루어진다.

  • Header : Signature를 해싱하기 위한 알고리즘이다 토큰의 타입을 지정하는 부분이다.
  • PayLoad : 토큰에서 사용할 정보의 조각들인 Claim으로 구성되어 있다.
    • Payload에 담는 정보의 한 조각을 Claim이라고 부르고, 이는 Key - value의 한 쌍으로 이루어져 있다.
  • Signature : 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다.

JWT 장단점

장점

  • 토큰 기반의 인증을 위해 토큰 생성이 가장 간단하면서도 만료 기간과 같은 다양한 기능 명세가 존재한다.
  • 자바 단에 JWT token을 생성하고 검증할 수 있는 라이브러리가 잘 형성이 되어있다.

단점

  • JWT 토큰은 상태 정보를 저장하지 않아 한번 발행된 토큰이 임의로 삭제될 수 없기 때문에 적절한 토큰 만료 기간을 넣어줘야 한다.
  • JWT 토큰은 전체적으로 길이기 길기 때문에 많은 요청과 응답이 발생할 경우 성능에 영향을 줄 수 있다.
  • 토큰 기반의 인증과 마찬가지로 토큰을 탈취당했을 경우 올바른 사용자 식별을 하기가 어렵다.

DHCP

DHCP는 Dynamic Host Configuration Protocol의 약자로 호스트의 IP 주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜을 말한다.

DHCP에 대한 표준은 RFC문서에 정의되어 있으며, DHCP는 네트워크에 사용되는 IP주소를 DHCP 서버가 중앙 집중식으로 관리하는 클라이언트/서버 모델을 사용하게 된다.

DHCP는 네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간을 임대하는 동적 주소 할당 프로토콜이다.

DHCP 장단점

장점

  • PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막을 수 있다.

단점

  • DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않는다.

NAT

NAT는 Network Address Translation의 약자로 사설 IP를 공인 IP로 변경할 때 필요한 주소 변환 서비스이다.

라우터 등의 장비를 사용하여 다수의 사설 IP를 하나의 공인 IP주소로 변환하는 기술이다. 주로 기업이나 기관에서 내부망을 사용하는 PC에 사설 IP를 제공하고 외부 인터넷 연결 시엔 공인 IP하나를 같이 사용하는 형태로 운영한다.


VPN

VPN은 Virtual Private Network의 약자로 가상사설망을 의미한다. VPN은 두 개 이상의 물리적 네트워크 사이의 인터넷 / 공용 네트워크를 통해 생성된 가상 네트워크로, 사용자/장치가 직접 연결된 하나의 개인 네트워크에 있는 것처럼 데이터를 보내고 받을 수 있도록 확장된 개인 네트워크를 만든다. 따라서 VPN에 연결된 애플리케이션은 동일한 기능을 실행할 수 있고 개인 네트워크에 연결되어 있는 것처럼 관리할 수 있다.


ROUTING

라우팅이란 Internetwork을 통하여 근원지에서 목적지로 데이터가 전달될 수 있도록 하는 기능이다.

라우팅에는 Network Admin이 Router마다 최적의 경로를 인위적으로 등록하는 정적 라우팅과 자동적인 Routing Algorithm에 의해 최적의 경로를 판단하는 동적 라우팅이 있다.

정적 라우팅과 동적 라우팅

정적 라우팅

  • 관리자가 네트워크에 대한 경로 정보를 직접 지정하여 Routing 하는 방법이다.

장점

  • 동적 라우팅 보다 관리자에 의한 라우팅 정보만을 참조하므로 라우터 자체의 부담이 없어 동적 경로 설정보다 속도가 빠르고 안정적이다.

단점

  • 네트워크의 변화가 빈번한 경우, 등록해야 할 네트워크 수가 많을 경우에는 능동적으로 경로 설정을 변경하기 어렵다.

동적 라우팅

  • 대규모 네트워크에 사용하며 인접한 라우터 간에 동일한 Routing Protocol을 설정하여 라우터 간에 변경된 네트워크에 대한 정보를 자동으로 교환하여 Routing 하게 하는 방법이다.

장점

  • 라우터 간에 서로 라우팅 정보를 주고받아 라우팅 테이블을 라우터가 자동으로 작성하기 때문에 네트워크 관리자는 초기 설정만 해주면 된다.
  • 네트워크의 변화에 능동적으로 대처할 수 있다.

단점

  • 라우터의 메모리를 정적 라우팅보다 많이 차지함

HSRP

HSRP는 Cisco 표준 기술로 네트워크 간 2개 이상의 게이트웨이를 사용할 때 한 개의 경로에 문제가 생기면 다른 경로에서 게이트웨이 역할을 해줄 수 있도록 장비-장비 간 Virtual Gateway를 설정하는 기술이다.

Active 라우터와, Standby 라우터가 존재하는데, Active 라우터가 프레임을 처리하고, Standby 라우터는 Active를 감시하여 Active 라우터가 다운되었을 때 Standby 라우터가 그 역할을 이어받게 된다. 

VRRP(게이트웨이 이중화)

VRRP는 게이트웨이가 다운되었을 때 자동으로 다른 Device가 게이트웨이 역할을 할 수 있도록 하는 프로토콜이다.

HSRP는 시스코지만 VRRP는 표준이므로 멀티벤더 환경에서 많이 사용이 된다. Master 라우터와 Backup 라우터로 수분되며, Master 라우터가 주 게이트웨이 역할이며, 장애 발생 시 Backup 라우터가 그 역할을 수행한다. 

STP

Ethernet Frame이 장비들에서 빙빙 도는 것을 Looping(루핑)이라고 한다. 이 Looping을 방지시켜주는 것이 STP(Spanning Tree Protocol)이다.

 

 

GITHUB

https://github.com/ryudongjae/Backend/blob/master/Interview/Network.md

 

GitHub - ryudongjae/Backend: 💻다양한 백앤드 기술 공부💻

💻다양한 백앤드 기술 공부💻. Contribute to ryudongjae/Backend development by creating an account on GitHub.

github.com


REFERENCE

https://imbf.github.io/interview/2021/03/01/NAVER-Practical-Interview-Preparation-3.html

https://gmldbd94.tistory.com/104 

https://mangkyu.tistory.com/91

728x90