1. 엔디언(Endianness)이란?

- 컴퓨터의 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법.

- 바이트를 배열하는 방법을 바이트 순서(Byte-Order)라 한다.

- 3가지 방식의 엔디언이 존재함.

Big-Endian - 큰 단위의 바이트가 앞에 나오는 방법
Little-Endian - 작은 단위의 바이트가 앞에 나오는 방법
Middle-Endian - 두 경우에 속하지 않거나 둘 다 지원하는 경우

- 또한 endian을 이해하기 위해서는 LSB와 MSB에 대한 이해도 필요하다.

MSB - Most Significanct Bit (가장 큰 비트 자릿수)
LSB - Least Significanct Bit (가장 작은 비트 자릿수) 

- 0x1234578의 값을 메모리에 각각 Big-endian과 Little-endian으로 저장하는 경우에 대해 확인해보고자 한다.

[캡쳐 1] 0x12345678

2. Big-endian

- 먼저 Big-endian은 우리가 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 나오는 방법이다.

- 즉, 낮은 주소에 데이터의 높은 바이트(MSB)부터 저장하는 방식

[캡쳐 2] Big-endian

3. Little-endian

- 낮은 주소에 데이터의 낮은 바이트(LSB)부터 저장하는 방식.

[캡쳐 3] Little-endian

4. Big-endian VS Little-endian

- 두 방식은 단지 데이터를 저장할 때의 방식 차이뿐이며, 어느 방식이 더욱 좋다고 단정 할 수 없다.

- 각 방식의 특징을 정리하면 다음과 같으며, 느림, 빠름, 어려움, 쉬움은 상대적인 값이다.

  Big-endian Little-endian
대표 회사 IBM Intel
형 변환 느림 빠름
숫자 비교 빠름 느림
디버깅 빠름 느림
캐리 값 처리 어려움 쉬움
네트워크 바이트오더 X O

5. 네트워크 바이트오더

- 두 호스트간 통신을 할 때 A PC는 Little-endian, B PC는 Big-endian을 사용할 경우 통신이 되지않는 문제가 발생.

- 이러한 문제를 해결하기 위해 네트워크를 통해 데이터를 전달할 때는 통일된 방식을 이용해 전송하기로 약속 했으며, 이것이 "네트워크 바이트오더"임.

- 네트워크 바이트오더에 의해 Big-endian 방식을 사용하도록 규정되어, Little-endian을 사용할 경우 Big-endian으로 변환해야 한다.

6. 내 PC의 Endian 확인하기

[캡쳐 4] http://www.tcpschool.com/c/c_refer_endian

- 실행결과

[캡쳐 5] Little-endian 방식의 저장

 

- 참고

 

[Byte Order 바이트 오더] 빅엔디안(Big Endian)과 리틀엔디안(little endian) - 1편

안녕하세요~~!! 오늘도 시작되는 말랑이몰랑이 블로그 포스팅입니다~ ㅎㅎ 오늘은 네트워크나 통신쪽을 공부한다면 알고 있어야 할 Byte Order 의 빅엔디안과 리틀엔디안에 대한 개념을 완전하게

jhnyang.tistory.com

+ Recent posts