컴퓨터(Computer Science)/네트워크, Network

네트워크 바이트 오더 [네트워크]

게임이 더 좋아 2021. 10. 1. 22:44
반응형
728x170

 

뭐 순서와 관련되었다고 생각하면 쉽다.

알아보자

 


 

2바이트 이상의 데이터를 송수신할 때는 바이트 오더에 주의해야 한다.

바이트 오더란 2 바이트 이상의 데이터를 메모리에 배치하는 방식을 말하는데

배치 방식에는 빅 엔디안, Big Endian, 리틀 엔디안, Little Endian이 있다.

기본적으로 우리는 빅 엔디안에 익숙해져있다.

우리가 12345를 만 이천 삼백 사십 오라고 읽는 것과 같은 이치다.

 

이러한 기준 엔디안은 프로세서에 따라 달라진다.

같은 엔디안 끼리 통신할 때는 문제가 당연히 없지만 다를 때 문제가 생긴다.

즉, 송신했을 때 어떻게 수신하느냐에 따라 데이터가 달라질 수도 있다는 것이다.

이처럼 다른 프로세서 간의 데이터를 송수신할 때는 바이트오더를 약속해야 한다.

 

C#에서는 IPAddress 클래스에 short, int, long 바이트 오더를 변환하는 메서드가 있다.

HostToNetworkOrder라는 함수는 단말에서 데이터를 송신할 때 네트워크 바이트 오더로 변환하는 것이고

NetworkToHostOrder는 수신한 데이터를 수신한 단말의 엔디안으로 변환하는 것이다.

 

짧지만 데이터를 보낼 때 이러한 것을 일치시키지 않고 보낸다면 오류가 생길 수 있다는 점을 생각해야 한다.

반응형
그리드형