๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Computer Science/- Network

[Network] Host Byte Order ๊ณผ Network Byte Order

by Wonit 2021. 7. 14.

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

๋Œ“๊ธ€