HBO, Host Byte Order
HBO ๋ ์ง๋ ์๊ฐ ๋ฐ์ดํธ ์ ์ฅ ์์ Byte Order์ Big Endian๊ณผ Little Endian ์์ ์์๋ณด์๋ฏ Host Level ์์ Byte ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
์ฆ ์์คํ ๋ด๋ถ์์๋ HBO๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
Host Byte Order, HBO ์๋ CPU ์์คํ ๊ณผ ์ํคํ ์ณ์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋๋ฐ, ํฌ๊ฒ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ฃผ์๋ฅผ ๋จผ์ ์ฑ์ฐ๋ Big Endian๊ณผ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฎ์ ์ฃผ์๋ฅผ ๋จผ์ ์ฑ์ฐ๋ Little Endian ์ผ๋ก ๋๋์ด์ง๋ค.
๋ํ์ ์ผ๋ก Big Endian ์ ์ฌ์ฉํ๋ ์์คํ ์, ARM, Motorola ๊ฐ ์๊ณ ๋๋ถ๋ถ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ธํ PC์๋ Little Endian ๊ธฐ๋ฒ์ด ์ ์ฉ๋๋ค.
NBO, Network Byte Order
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์์คํ ์์ ์ธ๋ถ๋ก ํต์ ์ ํ ๋๋ Network Byte Order ๊ธฐ๋ฒ์ผ๋ก ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.
NBO ๋ Network Level ์์ Byte ๋ฅผ ํํํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Big Endian ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๊ณ , Little Endian ์ ์ฌ์ฉํ๋ ์์คํ ์์ ๋คํธ์ํฌ ํต์ ์ ์ด์ฉํ๋ ค ํ๋ค๋ฉด
Little Endian To Big Endian ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
์ฐ๋ฆฌ๋ ๋๋ถ๋ถ Intel CPU ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ํต์ ์ ์ํ Byte Order ๋ก Big Endian ๋ก ๋ณํ์ ํด์ผ ํ๋ค.
๋ํ ๋คํธ์ํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ํธ์คํธ๊ฐ Little Endian ์ ๊ธฐ๋ฐ์ผ๋ก HBO๊ฐ ๋์ด์๋ค๋ฉด ์ญ์ ๋ณํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
HBO ์์ NBO๋ก ๋ณํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ
HBO ์์ NBO๋ก ํน์ NBO ์์ HBO ๋ก ๋ณํํ๋ ค ํ๋ค๋ฉด ์ฌ๋ฌ๊ฐ์ง ์ ํ์ง๊ฐ ์กด์ฌํ๋ค.
C ์ธ์ด์์๋ #include <netinet/in.h>
ํค๋๋ฅผ ์ด์ฉํ์ฌ ์ฝ๊ฒ ๋ณํํ ์ ์๋ค.
ํด๋น ํค๋๋ฅผ ์ด์ฉํ๋ค๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ํด๋น CPU๊ฐ Little Endian ์ธ์ง, Big Endian ์ธ์ง ์์์ ํ๋จํ๊ณ , ๋ด๋ถ์ ์ผ๋ก ์ ์ ํ๊ฒ ๋์ํ ์ ์๊ฒ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
Conversion | C Function | Size |
NBO to HBO | uint16_t ntohs(uint16_t netshort); | 2 Byte |
HBO to NBO | uint16_t htons(uint16_t hostshort); | 2 Byte |
NBO to HBO | uint32_t ntohl(uint32_t netlong); | 4 Byte |
HBO to NBO | uint32_t htonl(uint32_t hostlong); | 4 Byte |
๋๊ธ