안녕하세요. 허언증입니다.
위 제목에 있는 함수들이 바꿔주는 동작을 하는 함수들입니다.
사용하는 이유가 궁금하다면 3분만 투자하세요!! Click!!
다시 말해 이놈들은 바이트 순서를 바꿔주는 변환 함수들입니다.
이름이 어렵게 느껴질 수도 있는데 간단히 보겠습니다.
h : host
n : network
s : short (16bit)
l : long (32bit)
이젠 해석이 되겠네요..
htons()함수는 short형의 데이터 즉, 포트번호를 호스트 바이트 순서에서 네트워크 바이트 순서로..
htonl()함수는 long형의 데이터 즉, IP주소를 호스트 바이트 순서에서 네트워크 바이트 순서로..
ntohs()함수는 short형의 데이터 즉, 포트번호를 네트워크 바이트 순서에서 호스트 바이트 순서로..
ntohl()함수는 long형의 데이터 즉, IP주소를 네트워크 바이트 순서에서 호스트 바이트 순서로..
만약에 내 컴퓨터가 빅 엔디안 방식을 사용하고 있다면 함수를 동작시켜도 데이터 순서의 변화는
일어나지 않을 것입니다.
그 이유는 네트워크 바이트 순서는 빅 엔디안 방식을 사용하는데 내 컴퓨터가 빅엔디안 방식을
쓴다면 바꿀 필요가 없기 때문이죠 하지만 보통 컴퓨터는 리틀 엔디안 방식을 사용합니다.
intel계열이 리틀 엔디안 방식을 쓰기 때문이죠
리틀 엔디안 방식을 사용하는 컴퓨터에서 이런 함수들을 사용한다면 바이트 순서가 바뀌겠죠..
빅엔디안 방식으로..
내 컴퓨터가 빅엔디안 방식을 쓴다 하더라도 반드시 변환 함수를 사용해 네트워크 바이트 순서로
변환하는 과정을 거쳐야 합니다. 실질적으로 바뀌지는 않지만 이식성을 좋게 하기 위해서죠.
내가 만든 프로그램이 빅엔디안 방식을 사용하는 컴퓨터와 리틀엔디안을 사용하는 컴퓨터중
어느 컴퓨터에서 실행될지 모르기 때문입니다.
참고 :
https://blog.naver.com/ifkiller/70081338455
'# Network > [ Network ]' 카테고리의 다른 글
[허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian) (0) | 2019.12.08 |
---|---|
[허언증/네트워크] Port(포트)와 소켓(Socket) 차이 (0) | 2019.11.23 |
[허언증/네트워크] URL / HTTP (0) | 2019.10.31 |
[허언증/네트워크] 네트워크 스캐닝 하는 방법(실습) (0) | 2019.03.27 |
[허언증/네트워크] IP와 Port(포트) 관계 (0) | 2019.03.25 |