[허언증/네트워크] htonl() / htons() / ntohl() / ntohs() 바이트 순서 변환

2019. 12. 7. 19:03· # Network/[ Network ]
반응형

안녕하세요. 허언증입니다.

 

위 제목에 있는 함수들이 바꿔주는 동작을 하는 함수들입니다.

 

사용하는 이유가 궁금하다면 3분만 투자하세요!! Click!!

 

[허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian)

안녕하세요. 허언증 입니다 소켓을 배우다 보면 네트워크 바이트 순서 또는 호스트 바이트 순서 라는 문구를 많이 보았을 텐데 이번엔 이들이 어떤 뜻인지 알려드리겠습니다. 설명하기에 앞서 바이트 순서의 의미..

min-310.tistory.com

 


 

  

   

다시 말해 이놈들은 바이트 순서를 바꿔주는 변환 함수들입니다.

   

이름이 어렵게 느껴질 수도 있는데 간단히 보겠습니다.

   

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 

 

https://www.codentalks.com/t/topic/2789

반응형

'# 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
'# Network/[ Network ]' 카테고리의 다른 글
  • [허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian)
  • [허언증/네트워크] Port(포트)와 소켓(Socket) 차이
  • [허언증/네트워크] URL / HTTP
  • [허언증/네트워크] 네트워크 스캐닝 하는 방법(실습)
이론과 실습 사이
이론과 실습 사이
Job : 네트워크, 가상화, Private Cloud / Hobby : 사진,재테크(주식)
이론과 실습 사이
이론과 실습 사이
이론과 실습 사이
전체
오늘
어제
  • KyungKing's Story
    • # OS
      • [ Linux ]
      • [ Windows ]
    • # Language
      • [ Python ]
      • [ C & C++ ]
      • [ Javascript ]
      • [ Shell Script ]
    • # Network
      • [ GNS3 ]
      • [ Coding ]
      • [ 용어 정리 ]
      • [ Network ]
      • [ Packet Tracer ]
    • # VMware
      • [ VDI 관리서버 설치 ]
      • [ vSphere ]
      • [ vCenter ]
      • [ Horizon ]
      • [ Aria ]
      • [ vGPU ]
      • [ Ect ]
    • # Script
    • # Docker
      • [ Docker 이론 ]
      • [ Docker 실습 ]
    • # Cloud
      • [ Cloud ]
      • [ AWS Cloud ]
    • # NIVIDIA
      • [ 실습 ]
    • # Storage
      • [ TrueNas 실습 ]
    • # 알고리즘 문제풀이&연습
      • [ Algorithm ]
      • [ BaekJoon ]
      • [ CodeUp -기초 100제 ]
    • # Study
      • [ 영어 공부 ]
      • [ # TroubleShooting ]
      • [ 이것이 리눅스다 ]
      • [ Big Network Design ]
      • [ 시스코 아카데미 패킷트레이서 ]
      • [ 성공과 실패를 결정하는 1%의 네트워크원리 ]
    • # 결과물
      • [ 개인 프로젝트 ]
      • [ 자격증 & 수료 ]
      • [ 프로그램 완성작품 ]
    • # 관심 분야
      • [ 주식 투자 ]
      • [ Machine learning ]
    • # 개인기록 및 창고
      • [ 유용한 정보Tips ]

블로그 메뉴

  • KyungKing's GitHub
  • KyungKing's 투자 이야기
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Linux
  • VMware
  • 공부
  • 네트워크
  • C언어
  • c++
  • socket
  • 백준
  • Router
  • Packet Tracer
  • 이것이리눅스다
  • 코딩
  • CodeUp
  • network
  • 허언증
  • cisco
  • ESXi
  • 알고리즘
  • Algorithm
  • vCenter

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
이론과 실습 사이
[허언증/네트워크] htonl() / htons() / ntohl() / ntohs() 바이트 순서 변환
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.