Group Study (2022-2023)/Computer Science

[Computer Science] 8주차 스터디 - Cookie와 Session, 주소 체계(MAC주소, IP주소)

우주호 2023. 3. 13. 15:05

Cookie와 Session

6주차에서 공부했던 HTTP와 HTTPS 내용에서 HTTP는 두 가지의 큰 특징을 가졌다.

  • 비연결 지향 (Connectionless)
    • 클라이언트가 request를 보내고 그에 대한 response를 서버가 보내면 바로 연결 종료
  • 상태 정보 유지X (Stateless)
    • 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태 정보를 유지하지 않음

이러한 특징때문에 HTTP프로토콜을 사용한 연결은 다음과 같은 단점을 가졌다.

  • 모든 요청 간 의존 관계가 없음
  • 연결을 유지하지 않기 때문에 현재 접속한 사용자와 이전에 접속한 사용자가 같은 사용자인지 아닌지 구별할 방법 없음
  • 계속해서 연결을 유지하지 않기 때문에 통신할 때마다 클라이언트는 매 요청마다 인증을 해야 함

따라서 이러한 문제점을 해소하기 위해 쿠키와 세션이 등장하게 되었다.

Cookie

클라이언트 로컬(브라우저)에 저장되는 키와 값이 들어있는 파일
HTTP의 일종으로 HTTP에서 클라이언트의 상태 정보를 클라이언트 PC에 저장했다가 필요 시 정보를 참조하거나 재사용할 수 있다
Ex) 방문 사이트 로그인 시 아이디와 비밀번호 저장, 팝업에서 더 이상 이 창을 보지 않음 체크 등

1. 구성 요소

  • 쿠키 이름
  • 쿠키 값
  • 쿠키 만료 시간
  • 쿠키를 전송할 도메인 이름(Domain)
  • 쿠키를 전송할 요청 경로(Path)
  • 보안 연결 여부(Secure)
  • HttpOnly 여부(HttpOnly)

2. 특징

  • 이름, 값, 유효 시간, 경로 등을 포함
  • 사용자 인증이 유효한 시간을 명시할 수 있고 유효 시간이 정해지면 브라우저가 종료되어도 인증 유지
  • 클라이언트의 상태 정보를 브라우저에 저장하여 참조
  • 클라이언트에 총 300개의 쿠키 저장 가능
  • 하나의 도메인 당 20개의 쿠기 가능
  • 하나의 쿠키는 4KB(4096byte)까지 저장 가능
  • Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있음
  • 사용자가 따로 요청하지 않아도 쿠키는 브라우저가 Request시에 Request Header에 넣어서 자동으로 서버에 전송

3. 동작 방식

  1. 클라이언트가 페이지를 서버에 요청
  2. 서버에서 상태를 유지하고 싶은 값을 쿠키로 생성
  3. 서버가 응답할 때 HTTP헤더(Set-Cookie)에 쿠키를 포함해서 전송
    1. Set-Cookie: id=doy
  4. 전달 받은 쿠키는 클라이언트가 가지고 있다가 다음 같은 요청을 할 때 쿠키를 HTTP헤더에 넣어서 서버에게 전송
    1. cookie: id=doy
  5. 서버에서 쿠키 정보를 읽고 이전 상태 정보를 확인한 후 응답

 

Session

일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술
즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태이다.
Ex) 화면 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지

1. 특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보 저장
  • 웹 서버에 저장되는 쿠키 = 세션 쿠키
  • 저장 데이터에 제한 없음(서버 용량이 허용하는 한에서)
  • 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하고 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지
    • 세션ID : 클라이언트가 Request를 보내면 해당 서버가 클라이언트에게 부여하는 유일한 ID
  • 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능

2. Cookie와의 비교 특징

  • 사용자의 정보를 서버에 두기 때문에 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제되어 쿠키보다 비교적 보안이 우수
  • 하지만 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다
  • 따라서 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 된다

3. 동작 방식

  1. 클라이언트가 서버에 접속 시 서버는 접근한 클라이언트의 Request Header필드인 Cookie를 확인하여 세션ID를 보냈는지 확인
  2. 세션 ID가 존재하지 않는다면 서버는 세션ID를 생성해서 클라이언트에게 돌려줌
  3. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
  4. 클라리언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
  5. 서버는 세션 ID를 전달 받아서 별다른 작업 없이 세션 ID로 세션에 있는 클라언트 정보를 가져와서 사용
  6. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답

 

Cookie vs Session

쿠키와 세션의 차이점은 크게 4가지 측면에서 비교할 수 있다.

  • 저장 위치
    • 쿠키 : 클라이언트
    • 세션 : 서버
  • 보안
    • 쿠키 : 보안 취약
      • → 클라이언트에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려 존재
    • 세션 : 보안 우수
      • → 쿠키를 이용해 세션ID만 저장하고 서버에서 처리하므로
  • 라이프사이클✨
    • 쿠키 : 만료시간이 있지만 파일로 저장되기 때문 브라우저를 종료해도 계속해서 남아있을 수 있음
    • 세션 : 만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제됨
  • 속도
    • 쿠키 : 클라이언트에 저장되어서 서버에 요청 시 빠름
    • 세션 : 실제 저장된 정보가 서버에 있으므로 서버의 처리가 필요해 쿠키보다 느림
💡 세션을 사용하면 좋은데 왜 쿠키를 사용할까?
세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다 보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있기 때문에 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여 서버 자원의 낭비를 방지하며 웹 사이트의 속도를 높일 수 있기 때문이다

 

참고

🚦 Cookie vs Session vs Cache?

쿠키와 세션은 정보를 저장하기 위해 사용되고 캐시는 웹 페이지 요소를 저장하기 위한 임시 저장소이다.

즉, 쿠키와 세션은 사용자 인증을 도와주는 역할을 하고 캐시는 웹 페이지를 빠르게 렌더링 할 수 있도록 도와준다.

캐시(Cache)
이미지나 css, js파일 등을 브라우저나 서버 앞 단에 저장해 놓고 사용하는 것
저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공
같은 웹 페이지에 접속할 때 사용자의 PC에서 로드해서 서버를 거치치 않아도 됨
- 캐시 히트(hit) : 캐시를 사용할 수 있는 경우
- 캐시 미스(miss) : 캐시를 사용할 수 없는 경우

한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 사용자는 변경되지 않게 보일 수 있다. 그래서 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 Header에 캐시 만료 기간을 명시하는 방법을 이용할 수 있다.

 

주소 체계(MAC주소, IP주소)

OSI7계층에서 각 계층 별로 맡은 임무가 다르다.

2계층은 좁은 지역 내에서 상대적으로 한정적인 수의 장비 간 데이터 전달이 목적이다. 반면에 3계층은 넓은 지역, 광범위의 인터넷의 임의의 지점 간 거리까지 최적의 경로를 찾고 수많은 라우터를 거쳐서 데이터를 전달하는 것이 목적이다. 따라서 맡은 임무에 따라 각 계층에서의 주소의 역할이 다르기 때문에 다른 주소 체계를 사용한다.

MAC주소와 IP주소는 그럼 무엇이 다를까? 보통 컴퓨터 주소 = IP주소라고 생각하고 IP주소를 가지고 있는 컴퓨터를 찾아가서 데이터를 주고 받는다고 생각한다. MAC주소의 정의를 알아보면 MAC주소는 컴퓨터 간 데이터를 전송하기 위해 있는 컴퓨터의 물리적인 주소이다. 그렇다면 알고 있던 지식이 틀린 것일까? 멀리 있는 컴퓨터와 통신하기 위해서는 IP주소를 사용해야 하고 내부적으로 구체적인 동작 방식을 살펴 보면 IP주소를 MAC주소로 바꿔 사용한다. 따라서 IP주소를 사용한다는 의미는 MAC주소를 사용한다는 것과 같은 의미이다.

MAC 주소 (Media Access Control Address)

2계층(Data Link Layer) 주소
네트워크 인터페이스에 할당된 고유 식별 주소
(이더넷 하드웨어 주소, 물리적 주소, 하드웨어 주소 라고도 불린다)

MAC 주소는 네트워크 인터페이스 컨트롤러(NIC 카드)를 만든 회사에서 할당하여 하드웨어에 저장된다. 이때 다른 MAC주소와 겹치지 않는 고유의 주소를 할당한다.

1. 특징

  • 표준 MAC주소 : 총 48비트(6 bytes)로 구성
    • 총 2^48개의 사용 가능한 MAC 주소 생성 가능
    • 8bit(1 byte)단위로 끊어서 총 6개의 자리를 : 를 이용하여 구분
    • 앞 3byte는 OUI(Organization Unique Identifier)로 IEEE가 제조 회사에 할당한 값 + 뒤의 3byte는 UAA로 제조 업체 별 일련 번호
    • 16진수 표현법 사용
    • Ex) 11:32:FF:2C:4B:AB
  • Unicast, Multicast, Broadcast address
    • Unicast (1:1 전송)
      • MAC주소의 첫 번째 바이트의 LSB(Least Significant Bit)가 0인 경우
      • frame이 하나의 수신 중인 NIC에만 도달하는 것을 의미(목적지가 하나)
    • Multicast (1:N 전송)
      • MAC주소의 첫 번째 바이트의 LSB가 1인 경우
      • frame을 한 번만 전송하고 목적지가 여러 개라는 것을 의미
    • Broadcast (1:그룹 내 모든 노드 전송)
      • MAC주소의 모든 bit가 1인 경우 = FF:FF:FF:FF:FF:FF
      • 모든 대상에게 frame 전송하는 것을 의미

2. RARP (Reverse Address Resolution Protocol)

MAC주소에 해당하는 IP주소를 알아오는 프로토콜

  • RARP 요청
    • MAC정보를 담고 있는 RARP정보를 브로드캐스트로 전송
  • RARP 응답
    • 요청한 IP주소를 담은 RARP응답을 유니캐스트로 전송

 

IP 주소 (Internet Protocol Address)

3계층(Network Layer) 주소
호스트나 라우터 장비의 인터페이스에 할당된 주소

IP주소를 통해 장치들이 서로를 인식하고 통신할 수 있다. 현재 사용하고 있는 IPv4는 32bit의 주소 공간을 가진다. 새롭게 도입되었지만 아직 많이 사용되고 있지 않은 IPv6은 128bit의 주소 공간을 가진다. 서브넷 마스크는 IP주소에서 네트워크 주소와 호스트 주소를 나눠주는 역할을 한다. 이때 같은 네트워크 주소 내에서만 호스트들 간의 네트워크 통신이 이루어 진다. 다른 네트워크 대역의 호스트들과 연결하는 방법은 라우팅과 관련이 있다. 따라서 똑같은 IP주소라고 하더라도 서브넷 마스크가 다르면 IP주소가 의미하는 바가 완전히 달라진다.

1. 특징

  • IP 주소 표기법
    • 2^32 개의 IP주소를 가질 수 있음
    • 8bit씩 4개의 옥탯으로 나뉜다
    • dot-decimal notation(점-10진표기법)
      • 32비트를 한 byte 씩 끊어서 각 byte를 점으로 구분
      • 0~255 사이의 숫자로 표기
      • Ex) 192.168.107.11
  • 전역 유일성(Global uniquness)
    • 하나의 IP주소는 같은 시간에 다른 인터페이스에 할당될 수 없는 특징을 가짐
  • 동적 할당(Dynamic assignment)
    • 특정 인터페이스가 항상 같은 주소를 가지지 않는다
    • 즉, IP주소는 일정 기간 동안 특정 인터페이스에 할당되었다가 다른 인터페이스에 할당 되기도 한다
    • IP주소는 네트워크 관리자 또는 인터넷 서비스 공급자(ISP)가 제공 받기 때문이다

2. ARP (Address Resolution Protocol)

ARP 요청/응답 완료되면 ARP table에 각 노드의 ARP 정보를 저장한다.

  • ARP 요청
    • 특정 IP주소에 대해 MAC주소를 요구
    • MAC주소를 알지 못하기 떄문에 브로드캐스트로 전송
  • ARP 응답
    • 요청한 MAC주소 정보를 유니캐스트로 전송

 

MAC 주소 vs IP 주소

MAC주소와 IP주소의 차이점은 다음과 같다.

  • IP주소는 네트워크에 있는 장치에 대한 연결을 식별
  • MAC주소는 네트워크에 참여하는 장치를 식별

 

💡 IP주소와 MAC주소가 모두 필요한 이유?

IP주소는 논리적인 주소이기 때문에 라우팅을 하는 주소이지 실질적인 통신을 할 수 있는 주소가 아니다.
즉, IP주소는 목표된 네트워크로 추적해서 패킷을 보낸 뒤 그곳에서 그 IP에 등록된 MAC주소로 주소가 변환되어 목표한 컴퓨터로 패킷을 전송하게 된다.

또한 MAC주소는 특정 웹 서버를 찾는다고 가정할 때 IP주소가 없다면 전세계 모든 서버들의 MAC주소를 가지고 있어야 하고 MAC주소 하나하나에 대해 라우팅을 해줘야 한다. 하지만 IP주소는 변경 가능하고 라우팅하는데 효과적이다.

따라서 라우팅을 위해 논리적인 주소인 IP주소가 그리고 실질적인 통신을 위해 하드웨어 주소인 MAC주소가 모두 필요하다.

 

 

 

참고 자료

더보기

더 보기

 

https://ws-pace.tistory.com/139

 

네트워크 정리 : Layer 2&3 주소체계 (MAC, IP)

ARP ARP는 3계층의 프로토콜 (정확히 하면 2.5계층 프로토콜, 연관이 없는 계층 사이에서 징검다리 역활을 해주는 프로토콜) 데이터가 전달되어야 할 목적지 장비의 3계층 주소(IP)를 가지고 있는 중

ws-pace.tistory.com

https://blockdmask.tistory.com/186

 

[데통] MAC address, IP address (맥주소와 아이피주소)

안녕하세요. BlockDMask 입니다.오늘은 Internet 주소체계 / MAC 주소와 IP 주소에 대해 알아보겠습니다. 1. MAC 주소 (Media Access Control Address)MAC 주소는 데이터 링크 계층(+물리 계층)에서 사용하는 네트워

blockdmask.tistory.com

https://btcd.tistory.com/74

 

[Network]IP address와 MAC address

1. IP address란? - IP 주소는 네트워크 통신에 있어서 각각의 통신기기(컴퓨터, 노트북, 스마트폰 등)에 할당된 식별번호를 나타낸다. - IP주소는 통신기기마다 고유하게 할당되어 있는 것이 아니라,

btcd.tistory.com

https://peemangit.tistory.com/207

 

[Network] ARP, RARP,GARP 개념

1. ARP (Address Resolution Protocol) IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜이다. ARP 요청·응답 완료되면 ARP table에 각 노드의 ARP 정보를 저장한다. ARP 요청: 특정 IP주소에 대해 MAC주소

peemangit.tistory.com

https://reakwon.tistory.com/139

 

[네트워크] ARP, RARP의 원리 이해와 관련 명령어, ARP Cache 보기, ARP 스푸핑

ARP(Address Resolution Protocol) ARP는 논리적인 주소(Logical Address)를 물리적 주소(Physical Address)로 변환하는 프로토콜을 의미합니다. 논리적인 주소라함은 IP주소, 물리적 주소는 MAC 주소(하드웨어 주소)

reakwon.tistory.com

https://jhnyang.tistory.com/404

 

맥 어드레스란 무엇인가? IP주소와 맥주소(MAC address) 차이, 맥 주소 확인하는 법 - 네트워크 기초

안녕하세요. 양햄찌 블로그 주인장입니다. ㅎㅎ 오늘은 맥 주소(=맥 어드레스 = Mac Address)를 살펴보려고 해요. [목차] 1. 맥 어드레스란 무엇인가 2. 맥 주소는 왜 하드웨어, 물리적 주소라는 이름

jhnyang.tistory.com

https://interconnection.tistory.com/74

 

쿠키와 세션 개념

노션 페이지(아래 내용과 동일) 개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정

interconnection.tistory.com

https://dev-coco.tistory.com/61

 

쿠키(Cookie)와 세션(Session)의 차이 (+캐시(Cache))

쿠키와 세션을 사용하는 이유? HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다. HTTP 프로토콜의 특징 1. Connectionless 프로토콜 (비연결 지향) 클라이언트가 서버에 요청(Request)을 했을

dev-coco.tistory.com