[허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian)

2019. 12. 8. 22:25· # Network/[ Network ]
반응형

안녕하세요. 허언증 입니다

 

소켓을 배우다 보면 네트워크 바이트 순서 또는 호스트 바이트 순서 라는 문구를 많이 보았을 텐데

 

이번엔 이들이 어떤 뜻인지 알려드리겠습니다. 설명하기에 앞서 바이트 순서의 의미부터 알아야 합니다.

   

바이트 순서는 시스템이 어떠한 데이터를 표현하는 방법을 말하는데 모든 시스템이 같은 방식을 사용하지는 않습니다.

   

크게 빅-엔디안(big-endian)방식과 리틀-엔디안(little-endian)방식이 있습니다.

   

빅엔디안은 상위 바이트의 값이 메모리상에 먼저 표시되는 방법 입니다.

   

리틀 엔디안은 하위 바이트의 값이 메모리상에 먼저 표시되는 방법 입니다.

   

예를 들어 0x12345678 이란 데이터를 메모리에 쓴다면 빅엔디안은 아래와 같이 메모리에 표시됩니다.

   

0x12

0x34

0x56

0x78

   

그리고 리틀엔디안은 아래와 같이 메모리에 표시됩니다.

   

0x78

0x56

0x34

0x12

   

정확히 시스템이 어떠한 방식을 쓰느냐는 CPU에 따라 달라집니다.

   

이렇게 메모리에 표현되는 것 즉, 어떠한 순서로 데이터들이 메모리에 쓰여지는 것을 호스트 바이트 순서 라고 합니다.

   

그런데 문제가 있습니다. 무슨 CPU을 쓰느냐에 따라 호스트 바이트 순서가 다르기 때문에 만약 서로 다른

   

CPU를 사용하는 컴퓨터들이 데이터를 주고 받을 때 문제가 발생합니다.

   

이 문제점 때문에 네트워크를 통해 데이터를 전송할 때는 통일된 방식을 이용해

   

데이터를 전송하기로 약속을 했는데 이것이 바로 네트워크 바이트 순서 입니다.

   

네트워크 바이트 순서는 빅엔디안 방식만 사용하기로 약속되어 있습니다.

   

리틀엔디안 방식을 사용하는 컴퓨터는 데이터를 보내기 전에 빅엔디안 방식으로

   

데이터를 바꿔야 하고 받을 때도 전송되는 데이터들을 역순으로 받아 조합해야 합니다.

   

또 sockaddr_in 구조체 안에 존재하는 모든 값들은 네트워크 바이트 순서로 채워져야 합니다.

   

바이트 순서는 변환 함수를 이용해서 변환시킵니다.

 

 

 


출처 : https://blog.naver.com/ifkiller/70081338547

반응형

'# Network > [ Network ]' 카테고리의 다른 글

[허언증/네트워크] htonl() / htons() / ntohl() / ntohs() 바이트 순서 변환  (0) 2019.12.07
[허언증/네트워크] Port(포트)와 소켓(Socket) 차이  (0) 2019.11.23
[허언증/네트워크] URL / HTTP  (0) 2019.10.31
[허언증/네트워크] 네트워크 스캐닝 하는 방법(실습)  (0) 2019.03.27
[허언증/네트워크] IP와 Port(포트) 관계  (0) 2019.03.25
'# Network/[ Network ]' 카테고리의 다른 글
  • [허언증/네트워크] htonl() / htons() / ntohl() / ntohs() 바이트 순서 변환
  • [허언증/네트워크] Port(포트)와 소켓(Socket) 차이
  • [허언증/네트워크] URL / HTTP
  • [허언증/네트워크] 네트워크 스캐닝 하는 방법(실습)
이론과 실습 사이
이론과 실습 사이
Job : 네트워크, 가상화, Private Cloud / Hobby : 사진,재테크(주식)
이론과 실습 사이Job : 네트워크, 가상화, Private Cloud / Hobby : 사진,재테크(주식)
이론과 실습 사이
이론과 실습 사이
이론과 실습 사이
전체
오늘
어제
  • KyungKing's Story
    • # OS
      • [ Linux ]
      • [ Windows ]
    • # Language
      • [ Python ]
      • [ C & C++ ]
      • [ Javascript ]
      • [ Shell Script ]
    • # Network
      • [ GNS3 ]
      • [ Coding ]
      • [ 용어 정리 ]
      • [ Network ]
      • [ Packet Tracer ]
    • # VMware
      • [ VDI 관리서버 설치 ]
      • [ vSphere ]
      • [ vCenter ]
      • [ Horizon ]
      • [ Aria ]
      • [ vGPU ]
      • [ Ect ]
    • # Script
    • # Docker
      • [ Docker 이론 ]
      • [ Docker 실습 ]
    • # Cloud
      • [ Cloud ]
      • [ AWS Cloud ]
    • # NIVIDIA
      • [ 실습 ]
    • # Storage
      • [ TrueNas 실습 ]
    • # 알고리즘 문제풀이&연습
      • [ Algorithm ]
      • [ BaekJoon ]
      • [ CodeUp -기초 100제 ]
    • # Study
      • [ 영어 공부 ]
      • [ # TroubleShooting ]
      • [ 이것이 리눅스다 ]
      • [ Big Network Design ]
      • [ 시스코 아카데미 패킷트레이서 ]
      • [ 성공과 실패를 결정하는 1%의 네트워크원리 ]
    • # 결과물
      • [ 개인 프로젝트 ]
      • [ 자격증 & 수료 ]
      • [ 프로그램 완성작품 ]
    • # 관심 분야
      • [ 주식 투자 ]
      • [ Machine learning ]
    • # 개인기록 및 창고
      • [ 유용한 정보Tips ]

블로그 메뉴

  • KyungKing's GitHub
  • KyungKing's 투자 이야기
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이것이리눅스다
  • 알고리즘
  • cisco
  • Packet Tracer
  • 허언증
  • VMware
  • ESXi
  • Router
  • 백준
  • 네트워크
  • network
  • Algorithm
  • socket
  • c++
  • vCenter
  • CodeUp
  • C언어
  • 코딩
  • Linux
  • 공부

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
이론과 실습 사이
[허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.