250911

lililllilillll·2025년 9월 11일

개발 일지

목록 보기
291/350

✅ 한 것들


  • 포폴 리뉴얼
  • 윤성우의 열혈 TCP/IP 소켓 프로그래밍
  • Project BACopy


📖 윤성우의 열혈 TCP/IP 소켓 프로그래밍


Chapter 03 주소체계와 데이터 정렬

03-1 소켓에 할당되는 IP 주소와 PORT 번호

IP(Internet Protocol) : 인터넷 사용하기 위해 컴퓨터에 부여되는 값

  • IPv4 : 4바이트 주소체계
  • IPv6 : 16바이트 주소체계
  • 네트워크 주소로 해당 네트워크에 접근 후 나머지 호스트 주소로 해당 컴퓨터 찾는다

PORT 번호 : 소켓들 구분하기 위해 소켓에 부여되는 번호

  • 동일한 PORT를 둘 이상의 소켓에 할당할 수 없다
  • 0~1023들은 특정 프로그램에 할당하기로 예약돼있어서 못 쓴다
  • TCP 소켓과 UDP 소켓은 PORT 번호 공유 안 해서 중복돼도 상관 없다

03-2 주소 정보의 표현

sockaddr_in 구조체

  • sa_family_t sin_family : 주소체계
  • uint16_t sin_port : 16비트 TCP/UDP PORT 번호, 네트워크 바이트 순서로 저장, _t 붙여서 바이트 보장
  • struct in_addr sin_addr : 32비트 IP주소, 네트워크 바이트 순서로 저장
  • char sin_zero[8] : 반드시 0으로 채운다. sockaddr_in의 크기를 구조체 sockaddr와 일치시키기 위해 삽입.
  • sockaddr 요구 데이터를 쉽게 할당한 후 sockaddr로 형변환하여 사용
  • sockaddr_in은 IPv4인데 주소체계 저장해두는 이유? : sockaddr로 형변환 할건데, sockaddr에는 주소체계 명시해야 하기 때문

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

4바이트 정수 1을 CPU에 따라 다르게 저장한다

  • 빅 엔디안 : 상위 바이트 값(더 큰 자리수)을 작은 번지수에 저장한다. 00000000 00000000 00000000 00000001
  • 리틀 엔디안 : 상위 바이트 값(더 큰 자리수)을 큰 번지수에 저장한다 00000001 00000000 00000000 00000000
  • 네트워크 바이트 순서 : 빅 엔디안

바이트 순서 변환 함수

  • h는 호스트 바이트 순서
  • n은 네트워크 바이트 순서
  • s, l은 short, long을 의미
  • unsinged short htons(unsinged short)
  • unsinged short ntohs(unsinged short)
  • unsinged long htonl(unsinged short)
  • unsinged long ntohl(unsinged long)
  • ㅇㅇ형 데이터를 ㅁㅁ바이트 순서에서 ㅁㅁ바이트 순서로 변환해라
  • 빅 엔디안 시스템이면 굳이 바꿀 필요는 없지만, 시스템에 무관한 코드를 작성하는게 좋다.
  • 소켓에 데이터 넣을 때 말고는 바이트 순서 신경 안 써도 된다



🎮 BACopy


시나리오 작성
애셋 준비



profile
너 정말 **핵심**을 찔렀어

0개의 댓글