인터넷 주소변환 School of Electronics and Information. Kyung Hee University.

Slides:



Advertisements
Similar presentations
이름과 주소 변환 DNS 해결사 함수 정보통신대학 컴퓨터 학과 도희성 Chap. 11.
Advertisements

HANNAM Univ. 제 3 장 주소 체계와 데이터 정렬 Network Lab. Byoung-Son, Choi TCP/IP Socket Programming…
Network Lab. Byoung-Son, Choi
Understanding of Socket and File I/O
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]
13장 소켓.
TCP/IP Socket Cover Slide 조태문.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
TCP/IP 소켓 프로그래밍 - C 버전 중에서
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
TCP/IP Socket Cover Slide 조태문.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Linux에서의 IP, Port, 네트워크 바이트 순서, 주소 변환 주소 할당 등…
Chapter 03. 소켓 주소 구조체 다루기.
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
Department of Computer Science and Engineering
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
호스트이름과 네트워크이름 찾기 (Hostname and Network Name Lookups)
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
11 소켓 프로그래밍 기초.
11 소켓 프로그래밍 기초.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
제 14장 Multicast & Broadcast
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Socket Address Structure and Byte Ordering Functions
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Internet Address Conversion Functions
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Understanding of Socket and File I/O
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
TCP/IP Socket Programming…
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
UDP Test 프로그램 분석.
Linux Socket Programming - 도메인과 주소체계 -
Department of Computer Engineering
Internet Address Conversion Functions
School of Electronics and Information. Kyung Hee University.
네트워크 프로그래밍의 이해 School of Electronics and Information.
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
Chapter 16 Socket Interface.
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
Department of Computer Engineering
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
Department of Computer Engineering
ARP.
Presentation transcript:

인터넷 주소변환 School of Electronics and Information. Kyung Hee University. Dae Sun Kim <dskim@networking.khu.ac.kr>

Summary 1주차 2주차 Linux 기본 명령어, VI 편집기 네트워크란? 인터넷이란? Client / Server 모델 네트워크란 End-System 들을 연결하는 하나의 System을 의미한다. 인터넷이란? 멀리 떨어진 둘 이상의 네트워크가 연결되어 이뤄지는 거대한 네트워크를 의미한다. Client / Server 모델 Iterative Server Concurrent Server

Summary 네트워크 프로그래밍 이란? Server socket 구현 네트워크로 연결되어 있는 두 호스트간의 데이터 송수신. 파일 입출력과의 차이점은 데이터를 주고 받는 대상에 있다. Server socket 구현 Telephone Server Socket 전화기 구입 전화번호 할당 케이블에 연결 수화기 든다! 소켓 생성(socket) IP 주소 할당.(bind) 연결 요청 대기 상태 (listen) 4. 연결 수락!(accept)

Summary Program 5 7 File Descriptor Operating System 리눅스에서는 모든 것을 파일로 관리한다.(파일, 소켓, 표준입력, 표준출력) 파일을 관리하기 위해서 모든 파일(파일, 소켓 표준 입력, 표준 출력)에 파일 디스크립터를 할당 해 준다. Operating System Program 파일 A 5 소켓 B 소켓 C 7 파일 D

Summary 3주차 프로토콜 이란? 소켓의 생성 Port란? CASE Domain Type Protocol 1 PF_INET 컴퓨터(호스트) 상호간의 대화에 필요한 통신 규약 소켓의 생성 int socket (int domain, int type, int protocol) 연결지향형 소켓, 비연결지향형 소켓 Port란? 호스트 내에서 실행되고 있는 프로세스(Process)를 구분 짓기 위해 16비트의 논리적 할당 Well-known ports : 0 ~ 1023 CASE Domain Type Protocol 1 PF_INET SOCK_STREAM IPPROTO_TCP(0) 2 SOCK_DGRAM IPPROTO_UDP(0)

Summary IPv4 주소체계를 나타내는 구조체 struct sockaddr_in { sa_family_t sin_family; /* 주소 체계(AF_INET) */ uint16_t sin_port; /* port 정보 */ struct in_addr sin_addr; /* 32 비트 IP 주소정보 */ char sin_zero[8]; /* 사용되지 않음 */ }; struct in_addr { uint32_t s_addr; /* 32비트 IP 주소정보 */ };

Summary Big-Endian Little-Endian 0x1234 0x1234 네트워크 바이트 순서 0x12 0x34 12 번지 0x34 0x12 13 번지 0x1234 0x1234

Summary 바이트 순서 변환 함수 unsigned short htons(unsigned short); unsigned short ntohs(unsigned short); unsigend long htonl(unsigned long); unsigned long ntohl(unsigned long); ‘h’ : host byte order ‘n’ : network byte order ‘s’ : short (16 bit) ‘l’ : long (32 bit)

Summary FROM Dotted-Decimal Notation TO Big-Endian 32 비트 정수형 데이터 (Network) FROM Big-Endian 32 비트 정수형 데이터 (Network) TO Dotted-Decimal Notation unsigned long inet_addr(const char * string) char * inet_ntoa(struct in_addr addr)

인터넷 주소 초기화 Template 1: struct sockaddr_in addr;      2: char *serv_ip="211.217.168.13";    3: char *serv_port="9190";      4: memset(&addr, 0, sizeof(addr_len));   5: addr.sin_family = AF_INET;   6: addr.sin_addr.s_addr = inet_addr(serv_ip);   7: addr.sin_port = htons(atoi(serv_port));

인터넷 주소 초기화 Template 1: struct sockaddr_in addr; 2: char *serv_port="9190";   3: memset(&addr, 0, sizeof(addr_len)); 4: addr.sin_family = AF_INET; 5: addr.sin_addr.s_addr = htons(INADDR_ANY); 6: addr.sin_port = htons(atoi(serv_port));

Port 번호 확인 #include <sys/types.h> #include <sys/socket.h> getservbyname()은 well-known 포트를 사용하는 TCP/IP 응용 프로그램의 포트번호를 알아내는 함수이다 서비스 이름과 프로토콜을 인자로 하여 호출하면 서비스 관련 각종 정보를 포함하고 있는 servent라는 구조체의 포인터를 리턴한다. #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> struct servent * getservbyname (string service, string protocol)

프로그램 예제 확인 byte_order.c struct servent { char *s_name; /* 서비스 이름 */ char **s_aliases; /* 별명 목록 */ int s_port; /* 포트번호 */ char *s_proto; /* 사용하는 프로토콜 */ };

IP 주소 변환 gethostbyname() inet_addr() inet_pton() inet_ntoa() www.khu.ac.kr 10100011 10110100 01100000 01000111 163.180.96.71 도메인 네임 IP 주소(binary) 10진 표기법 gethostbyname() inet_addr() inet_pton() inet_ntoa() Inet_ntop() gethostbyaddr()

프로그램 예제 확인 ascii_ip.c

도메인 주소변환 #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> struct hostent *gethostbyname(const char *hname) 도메인 네임으로부터 IP 주소를 얻는 함수 struct hostent *gethostbyaddr(const char *in_addr, int len, int family) IP 주소로부터 도메인 네임을 얻는 함수

struct hostent { char *h_name; /* 호스트 이름 */ char **h_aliases; /* 호스트 별명들 */ int h_addrtype; /* 호스트 주소의 종류 */ int h_length; /* 주소의 크기 */ char **h_addr_list; /* IP 주소 리스트 */ }; #define h_addr haddr_list[0]; /* 첫 번째(대표) 주소 */

주소 형태(IPv4 : AF_INET , IPv6 : AF_INET6) Member Description h_name 호스트의 공식적 이름 h_aliases 호스트의 별명을 배열의 포인터로 반환 h_addrtype 주소 형태(IPv4 : AF_INET , IPv6 : AF_INET6) h_length 주소길이 (IPv4 : 4, IPv6 : 16) h_addr_list IP 주소를 배열의 포인터로 반환 (IPv4 : 각 포인터는 4 바이트 IP 주소를 가리킨다.

프로그램 예제 확인 get_hostent.c , get_host_byaddr.c