티스토리 뷰
컴퓨터가 데이터를 저장하는 최소 단위는 바이트 입니다.
이 바이트가 메모리에 저장되는 순서를 byte order라고 부르는데요
바로 이 바이트 오더가 어떤 순서로 메모리에 저장되는지에 따라
빅 엔디언과 리틀 엔디언이라는 개념으로 나뉘게 됩니다.
메모리에 값이 저장될때 메모리 주소의 값은 낮은곳에서 높은곳으로 저장이 됩니다.
이때 가장 큰 데이터의 바이트가 메모리 주소의 작은 번지에 먼저 저장되고
그 다음 큰 바이트는 그 보다 높은 주소 번지에 저장되는 아키텍쳐 구조를 빅-엔디안이라고 합니다.
예를 들어 0x1234라는 2바이트 데이터를 메모리에 저장한다고 했을때 0x1234 그대로 저장되는 것이죠.
우리 인간이 사용하는 표기법과 동일한 형태로 메모리에 저장되는 것을 볼 수 있습니다.
대표적으로 SPARC, ARM, 모토로라 계열의 CPU가 사용하는 아키텍쳐 방식입니다.
이와는 반대로 가장 작은 데이터의 바이트가 메모리 주소의 작은 번지에 저장되고
가 다음 작은 데이터가 그 보다 높은 주소 번지에 저장되는 아키텍쳐 구조를 리틀 엔디안이라고 합니다.
예를 들어 0x1234라는 2바이트 데이터를 메모리에 저장한다고 했을때 0x3412 형식으로 저장되는 것이죠.
우리 인간이 사용하는 표기법는 반대로 메모리에 저장되는 것을 볼 수 있습니다.
대표적으로 x-86, 우리가 쓰는 인텔 계열의 CPU가 대부분 리틀-엔디안 아키텍쳐 방식으로 동작합니다.
우리가 가지고 있는 PC 환경에서만 어플리케이션을 실행하면
그 PC가 어떤 아키텍쳐를 쓰는지 상관이 없습니다. 왜냐면 읽고 쓰는 방식이 동일할테니까요.
하지만 이 기종간의 네트워크 통신을 할때는 상대방 장비가 어떤 아키텍쳐를 쓰는지에 따라
전혀 엉뚱한 데이터가 전달 될 수 있습니다.
그래서 네트워크 통신시 byte order에 대한 표준이 필요하게 되었고
많은 논의 끝에 network byte order는 빅엔디안 방식으로 통일하기로 결정하였습니다.
네트워크 개발자는 자신이 개발하는 장비의 CPU계열과 OS를 잘 이해해야압니다.
예를들어 인텔계열의 리눅스 장비에서 서버 장비를 개발중이라면
데이터를 네트워크로 전송할때는 byte order를 빅엔디안으로 변환해서 전송해야합니다.
* Ref Site
위키피디아 : https://ko.wikipedia.org/wiki/엔디언
JoinC : https://www.joinc.co.kr/w/Site/Network_Programing/Documents/endian
'지식창고' 카테고리의 다른 글
[XPhone] Global Phone Service Based on Email Addresses (0) | 2024.04.14 |
---|---|
C언어를 공부하면 좋은 이유 (0) | 2019.03.30 |
ASCII | 아스키코드 | 컴퓨터가 문자를 처리하는 방법 (0) | 2019.03.23 |
2진수 | 16진수 | 프로그래밍 | 기본 원리 | 초급 개발자 (0) | 2019.03.23 |
아날로그 데이터를 디지털 데이터로 변환하는 기본 원리 (0) | 2019.03.23 |
- Total
- Today
- Yesterday
- vim
- 개발도구
- 에디터
- 편집기
- 사용법
- email call
- bit
- vi
- anonymous call
- 개발자
- free international call
- 초보
- 프로그래밍
- global call
- 튜토리얼
- 2진수
- 리눅스
- byte
- 강좌
- group call
- C언어
- 비트
- 초급
- 시골
- voice call
- voice recording
- 프로그래머
- 강의
- 원리
- 바이트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |