Network byte order
출처 : http://stone.backrush.com/sunfaq/ljs003.html
* Big endian 방식 사용
Axil S/E-ljs046
1994.10.4
Lee Jin-Soo
SUBJECT: NETWORK에서 사용되는 Byte Order는?
####### NETWORK BYTE ORDER #######
o 불행히도 모든 컴퓨터가 여러 바이트로 된 데이타의 저장시 같은 바이트 순서를 따르지 않는다.
8-비트 바이트를 사용하지 않는 컴퓨터들은 사라져 가고 있지만 바이트의 순서에 대해서는 명확한
표준이 없으므로 문제점으로 남아 있다.
2바이트로 이루어진 16-비트 정수의 경우를 예로 들어 보면 이것의 저장 방법에는 하위 바이트를 먼저
두는것 - 이를 little endian이라고 한다 -과 상위 바이트를 먼저 두는 것 - 이를 big endian이라고한다 -이
있다.
첫번째의 경우는 다음과 같다.
Little endian byte order ---------------------------------------------------------
| high-order byte | low-order byte |
---------------------------------------------------------
↑ ↑
addr A+1 addr A
여기서 오른편에서 왼편으로 주소가 증가한다.
낮은 주소가 낮은 바이트라는 논리이다.
Big endian byte order ---------------------------------------------------------
| high-order byte | low-order byte |
---------------------------------------------------------
↑ ↑
addr A addr A+1
여기서는 왼쪽편에 있는 것이 오른편보다 낮은 주소이다
현재 컴퓨터 시스템에서 많이 쓰이고 있는 바이트 순서는 다음과 같다.
--------------------------------------------------------------------
| big endian : sparc, IBM 370, Motorola 68000, Pyramid |
--------------------------------------------------------------------
| little endian : Intel 80x86(IBM PC), DEC VAX, DED PDP-11 |
--------------------------------------------------------------------
32 비트 정수의 경우에는 이런 현상이 심각하다. 시스템에 따라 16 비트 부분이 서로 바뀌어 있다.
전산망 규약에서 이 문제에 대한 해결 방법은 망 바이트의 순서를 확정짓는 것이다.
TCP/IP, XNS, SNA 규약들은 규약 머릿부에 쓰이는 16-비트 정수와 32-비트 정수에 모두
big endian을 사용한다. (실수 데이타 부분에 대해서는 차이가 심하지만 다행이 규약에서는 정수 영역만
다룬다)
참고 : http://fattarzan.tistory.com/entry/htonl-htons-ntohl-ntohs
참고 : http://choong0121.tistory.com/entry/네트워크-바이트-순서Network-byte-Ordering
'지식' 카테고리의 다른 글
ASCII 코드표(확장포함) (0) | 2014.05.29 |
---|---|
단위 환산표 (0) | 2013.07.03 |
VMware 자동시작 방법 (0) | 2013.02.08 |
SVN 관련 (0) | 2012.08.10 |
Windows XP Mode 쉽게 재설치하는 방법 (0) | 2012.07.03 |