반응형 Programming35 [C/C++/소켓프로그래밍] Hostent란? 도메인 주소로부터 이진형식의 주소를 쓰기 위한 구조체이다. 이를 먼저 알기 위해서 DNS에 대한 이해가 필요하다. DNS 도메인 네임 시스템(Domain Name System)의 약자로 우리가 IP를 사이트마다 외우기 어려우니 www.abce.com처럼 럼 사람이 알기 쉽게 도메인 이름을 사용하는 것이다. 그리고 이것을 ip주소와 도메인 네임간의 변환을 시스템적으로 구현한 것을 DNS라고 한다. 도메인 네임에는 계층이 존재하고 이것에 맞춰 DNS서버가 구현된다. DNS서버에 도메인 네임을 쿼리하면 서버는 ip주소로 변환하고 라우팅 정보를 제공한다. 또한 반대로 ip주소를 입력하면 도메인 네임을 반환하는 rDNS도 존재한다. gethostbyname() #include (hostent 구조체 포인터 반환).. 2021. 3. 12. [C/C++/소켓 프로그래밍] IP 주소 형식 변환 aton() ntoa() 이진형식으로의 변환 IP란? ip는 컴퓨터 네트워크에서 서로를 인지하고 통신하기 위해 부여하는 주소같은 것이다. Internet Protocol의 약자로 인터넷 통신 규약을 가리키는 말이다. 일상에서 전화번호와 같은 존재이다. 현재 IP는 v4와 v6로 나뉘며 v4는 0~255사이의 십진수를 쓰며 .으로 각각을 구분한다 (0.0.0.0~255.255.255.255) 이중 특정 ip는 예약되어 할당되지 않는 ip도 있지만 전부 사용한다면 약 43억개의 ip를 사용할 수 있다. v6는 v4로는 모든 기기에 할당할 ip가 부족하게 되자 나온 새로운 버젼이다. 기존 32비트에서 128비트로 증가하였다. 현재 ipv6는 우리나라에서 많이 쓰이진 않지만 아직은 과도기적 시기로 점차 대체해 나가는 중이다. v4에서 v6로 가면서 :로 .. 2021. 3. 10. [C/C++/소켓프로그래밍]hton ntoh (htons,htonl,ntohs,ntohl) 빅 엔디안과 리틀 엔디안 변환 소켓에서 hton, ntoh함수 두 함수는 리틀 엔디안, 빅 엔디안을 사용하는 체계에서 빅엔디안 또는 리틀엔디안으로 변환해주는 함수이다. TCP/IP는 빅 엔디안 방식을 사용하므로 리틀 엔디안 체제에서 사용시 빅 엔디안으로의 자료 변환이 필요하다. 때문에 네트워크 소켓통신에서 빅엔디안, 리틀 엔디안을 다뤄야 한다. 시스템마다 빅엔디안 리틀엔디안 사용이 다르지만 보통은 빅엔디안을 사용한다 하지만 리틀엔디안을 사용하는 경우 빅엔디안형식으로의 변환이 필요하다. Big-endian Little-endian 빅 엔디안은 시작 주소에 데이터의 최상위 비트(MSB)가 오도록 저장한다. 리틀 엔디안은 시작주소에 최하위 비트(LSB)가 오도록 저장한다. 4byte int 0x1234 a a+1 a+2 a+3 Big-en.. 2021. 3. 6. C 소켓프로그래밍 Socketpair 소켓을 이용해서 응용프로그램과 자료를 읽고 쓸 수있다. sendbuffer에서 자동적으로 상대 receivebuffer에 보내고 read()를 이용해 전송받은 수신버퍼에서 자료를 가져온다. Socketpair의 헤더와 예제 #include #include return=socketpair(int domain,int type,int protocol,int sockp[2]);//return int type sys/types.h와 sys/socket.h를 포함해야하며 socketpair() int형을 반환하며 호출 성공시 0 실패시 -1을 반환한다. 코드는 두개의 소켓을 생성, 자동으로 연결된다. int sp[2]; if((socketpair(PF_LOCAL,SOCK_STREAM,0,sp)==0) printf(.. 2021. 3. 6. PF_INET과 AF_INET socket 함수를 사용하면서 도메인을 지정할 때 사용하는 PF_INET , 가끔 AF_INET이 보일때도 있다. 사실 선언된 내용은 동일한 내용이므로 어떤 상수를 사용해도 상관이 없다. PF_INET Protocol Family의 약자 AF_INET Address Family의 약자이다. PF_INET IPV4 인터넷 프로토콜 패키지 PF_INET6 IPV6 인터넷 프로토콜 패키지 PF_LOCAL 로컬 유닉스계열 소켓 프로그램 패밀리 PF_UNIX 로컬 유닉스계열 소켓 프로그램 패밀리 어떤 것을 사용해도 상관은 없지만, 소켓 프로토콜 생성에는 PF_INET를, 주소 구조체 생성에는 AF_INET을 사용하는 것이 암묵적인 룰이다. 2021. 3. 3. 이전 1 ··· 3 4 5 6 다음 반응형