개인 공부/네트워크

[Chapter 03-3] 네트워크 바이트 순서와 인터넷 주소 변환

Koalitsiya 2023. 7. 20. 10:59

바이트 순서와 네트워크 바이트 순서

  • 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형 데이터를 네트워크 바이트 순서에서 호스트 바이트 순서로 변환