쩝...
이런게 있는지 오늘 알았다 --;;
올만에 머리 썼다.
알고보면 별것도 아닌데... 분명히 대학때 배웠을텐데... 네트워크 쪽을 등한시 한 내 잘못이려니...
시스템의 내부적인 데이터 표현인데...
크게 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()
'programming > c#' 카테고리의 다른 글
SMTP 멜 발송 및 외부 프로그램 실행 (0) | 2004.05.03 |
---|---|
BitConverter Class!!! (int to byte array) or (byte array to int) (0) | 2004.04.22 |
FileSystemWatcher --;; (0) | 2004.02.16 |