바이트 순서와 네트워크 바이트 순서
- CPU에 따라 바이트를 저장하는 순서에 차이가 있을 수 있음
- 이것을 고려하지 않고 데이터 송수신 시 전송되어온 데이터의 해석순서가 달라져 문제가 발생할 수 있음
- CPU가 데이터를 저장하는 방식은 두 가지로 나뉨
- 빅 엔디안(Big Endian): 상위 바이트의 값을 작은 번지수에 저장
- 리틀 엔디안(Little Endian): 상위 바이트의 값을 큰 번지수에 저장
저장될 정수 | 빅 엔디안 | 리틀 엔디안 | ||||||
0x12345678 | 0x20번지 | 0x21번지 | 0x22번지 | 0x23번지 | 0x20번지 | 0x21번지 | 0x22번지 | 0x23번지 |
0x12 | 0x34 | 0x56 | 0x78 | 0x78 | 0x56 | 0x34 | 0x12 |
네트워크 바이트 순서는 빅 엔디안을 기준으로 함
바이트 순서의 변환(Endian Conversions)
- unsigned short htons(unsigned short);
short형 데이터를 호스트 바이트 순서에서 네트워크 바이트 순서로 변환 - unisgned short ntohs(unsigned short);
short형 데이터를 네트워크 바이트 순서에서 호스트 바이트 순서로 변환 - unsigned long htonl(unsigned long);
long형 데이터를 호스트 바이트 순서에서 네트워크 바이트 순서로 변환 - unsigned long ntohl(unsigned long);
long형 데이터를 네트워크 바이트 순서에서 호스트 바이트 순서로 변환
'개인 공부 > 네트워크' 카테고리의 다른 글
[Chapter 03-5] 윈도우 기반 구현 (0) | 2023.07.25 |
---|---|
[Chapter 03-4] 인터넷 주소의 초기화와 할당 (0) | 2023.07.20 |
[Chapter 03-2] 주소정보의 표현 (0) | 2023.07.20 |
[Chapter 02-2] 윈도우 기반에서 이해 및 확인하기 (0) | 2023.07.06 |
[Chapter 02-1] 소켓의 프로토콜과 그에 따른 데이터 전송 특성 (0) | 2023.07.06 |