쩝...

 

이런게 있는지 오늘 알았다 --;;

올만에 머리 썼다.

 

알고보면 별것도 아닌데... 분명히 대학때 배웠을텐데... 네트워크 쪽을 등한시 한 내 잘못이려니...

 

시스템의 내부적인 데이터 표현인데...

 

크게 Big-Endian과 Little-Endian이 있다.

 

0x12345678이라는 32비트 값을 표현했을 떄,

 

Big-Endian    : 0x12 0x34 0x56 0x78

Little-Endian  : 0x78 0x56 0x34 0x12

 

이다.

 

시스템이 내부적으로 데이터를 처리하는데 있어서 Big-Endian 방식을 쓰느냐, Little-Endian 방식을 쓰느냐는 시스템의 CPU에 따라 달라진다.

이를 '호스트 바이트 순서 (Host Byte Ordering)'라고 하는데 문제는 호스트 바이트 순서가 일정치 않다는 것이다.

Motorola 68000 계열이 주로 Big-Endian 방식을 쓰고 있고, 가장 많이 사용되는 Inter X86 계열은 Little-Endian 방식을 쓰고 있다.

 

이러한 문제 때문에 네트워크를 통해 데이터를 전송할 때는 통일된 방식을 이용해서 데티어를 전송하기로 약속을 하였는데, 이것이 바로 '네트워크 바이트 순서(Network Byte Ordering)'이다.

 

따라서 시스템이 Little-Endian 방식을 사용할 경우, 네트워크를 통해 데이터를 전송하기 전에 Big-Endian 방식으로 데이터를 변경해서 보내야만 하고 , 받을 때도 Little-Endian 시스템은 전송되어 오는 데이터를 역순으로 조합해야 한다.

 

.Net Framework의 관련 Class

IPAddress.HostToNetworkOrder()

IPAddress.NetworkToHostOrder()

 

 

+ Recent posts