콘텐츠로 건너뛰기
Home » Blog » 이더넷 프레임과 CORS

이더넷 프레임과 CORS

이더넷 프레임

  • 이더넷 프레임이란 데이터 링크계층의 데이터 단위이며 이더넷 프레임을 기반으로 데이터가 전달되며 다음과 같은 필드로 구성되어 있다.
  • Preamble[7바이트] : 이더넷 프레임이 시작임을 알려준다.
  • SFD[1바이트] : Start frame delimiter, 다음 필드부터 주소필드가 시작됨을 알려준다.
  • Destination Address[6바이트] : 목적지 주소
  • Source Address[6바이트] : 시작지 주소
  • EtherType[2바이트] : 데이터링크계층 위의 IP 프로토콜을 정의한다. (IPv4, Ipv6)
  • Payload[가변바이트] : 데이터 또는 페이로드라고 한다. 가변길이 필드이다. 해당 필드는 이진데이터(0과1 로 이루어진 데이터)로 구성된다. IEEE 표준은 최대 페이로드를 1500 바이트로 지정하고 있다.
  • FCS[4바이트] : frame check sequence이며 수신측의 에러검출을 위해 삽입하는 필드이다. CRC 에러검출 기법에 의해 생성된 비트배열이 여기에 담긴다. 비트배열을 기반으로 수신된 데이터가 손상되었는지를 확인하고에러 확인시에는 해당 프레임을 폐기하고 송신측에 재전송을 요구한다. 이를 위한 필드입니다.

CORS

오리진과 SOP

오리진

SOP

  • Same-Origin Policy
  • 브라우저 상에서 오로지 같은 오리진끼리만 요청을 허가하는 보안 정책
  • 이러한 SOP가 없다면?
    • ex) 은행 계좌 서버에 로그인하고 악의적인 사이트를 방문하면 내가 모르는 사이에 은행 서버에 요청을 할 수 있게 되어 내 계정 정보가 변경되거나 유출될 수 있다.
    • 이를 1차적으로 막아주는 것이 바로 SOP 보안 정책이다.
  • 다른 오리진끼리 요청해야하는 순간도 있다. → 이를 브라우저 상에서 조금 더 유연하게 바꿔서 어떠한 경우에는 다른 오리진끼리도 요청 및 응답할 수 있게 만든 것이 CORS 이다.

CORS의 의미

  • CORS(cross origin resource sharing)란 HTTP 헤더를 기반으로 브라우저가 다른 오리진에 대한 리소스로드를 허용할지 말지에 대한 메커니즘을 말한다.
  • preflight request
    • 과정
      • 만약 요청을 보낼 때 다음의 메서드 타입, 헤더에 해당되지 않은게 하나라도 포함되어 있다면 preflight request를 보내게 된다.
      • OPTIONS 메서드로 해당 서버에 원래의 요청을 보내기 전 요청을 보내서 해당 서버의 Access-Control-*을 파악해 만약 없다면 CORS 에러를 뿌리게 되는 요청이다.
    • 메서드 타입
      • GET, HEAD, POST
    • 헤더
      • Accept
      • Accept-Language
      • Content-Language
      • Content-Type
      • application/x-www-form-urlencoded
      • multipart/form-data
      • text/plain
      • Range (참고로 fireforx 브라우저는 해당 헤더를 허용하지 않는다.)
  • 이와 같은 메서드 타입, 헤더를 가진 요청을 간단한 요청(simple request)이자 안전한 요청이라고 한다.