Sockets Introduction and Protocol Setting

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

컴퓨터 운영체제의 역사 손용범.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
Network Lab. Byoung-Son, Choi
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
Understanding of Socket and File I/O
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Network Lab. Seoung Hyeon, Lee
제 14장 Multicast & Broadcast
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Socket Address Structure and Byte Ordering Functions
Chapter 21 Network Layer: ARP, ICMP (IGMP).
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
파일 기술자 파일 기술자 현재 열려있는 파일을 구분하는 정수값 저수준 파일 입출력에서 열린 파일을 참조하는데 사용
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Understanding of Socket and File I/O
4. LAN의 배선체계 (3장. LAN: Local Area Network)
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
Department of Computer Science and Engineering
TCP/IP Socket Programming…
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
17장 X.25 패킷 교환망 17.1 X.25 계층 17.2 X.25와 관련된 기타 프로토콜 17.3 요약.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
Sockets Introduction and Protocol Setting
2장. 인터넷의 개념과 주소.
22 장 전송층(Transport Layer)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
네트워크 프로그래밍의 이해 School of Electronics and Information.
Internet 데이터 전송 목표: 인터넷의 개요 및 기본 내용을 살펴보고 VB에서의 데이터 전송 프로그래밍에 대하여 학습한다. 주요내용 인터넷의 개요 인터넷 데이터 전송 인터넷 프로그래밍 Winsock Client Server 프로그래밍.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
-네트워크 관리 개요 및 SNMP 프로토콜 동작과정
Understanding of Socket and File I/O
01. 라우팅 및 원격 액세스의 개요 라우팅은 패킷을 송신지부터 수신지까지 어떠한 경로를 통해 보낼 것인지를 결정하는 방법
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
웹(WWW).
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
Introduction to JSP & Servlet
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
06. 디바이스의 등록과 해제 김진홍
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
Department of Computer Engineering
ARP.
Presentation transcript:

Sockets Introduction and Protocol Setting Department of Computer Science and Engineering Kyung Hee University Choong Seon Hong

컴퓨터 통신 프로토콜 컴퓨터 통신 프로토콜 데이터를 원활이 주고 받을 수 있도록 정한 약속 컴퓨터 네트워크 프로토콜 통신 장비는 서로간의 통신 방법이 미리 정의 되어 있어야 함 같은 통신 프로토콜을 지원하는 장비 간에만 통신이 가능 컴퓨터 통신은 네트워크 형태로 운영 컴퓨터 네트워크 프로토콜이라 부름

통신 프로토콜의 특징 통신 프로토콜 ‘효율적’, ‘안정적’으로 통신할 수 있도록 미리 정한 약속 효율적 안정적 표준화 주어진 통신 채널을 최대로 이용할 수 있어야 한다. 안정적 비정상적인 장애 발생시에도 안정되게 동작해야 한다. 표준화 널리 사용되기 위해서는 미리 표준화 되어야 한다. 사용자 사용자 통신 프로토콜 통신장비 통신장비 “ 효율성”, “안정성”, “표준화”

인터넷과 서브네트워크 인터넷을 이용한 두 호스트 사이의 통신 인터넷을 이용하기 위해 TCP/IP 프로토콜이 설치되어 있어야 함 호스트는 라우터들을 경유하여 서로 연결 호스트 인터넷에 물리적으로 접속하기 위해 네트워크 액세스 프로토콜이 필요함 네트워크 액세스 프로토콜 : IP 계층이 서브네트워크 이용을 위한 프로토콜 서브네트워크 이더넷, 패킷 교환망, DSL, ATM 등 데이터를 실제로 전달해 주는 네트워크 네트워크 서비스 응용 계층 응용 계층 종점간 트랜스포트 계층 서비스 TCP, UDP TCP, UDP 라우터 라우터 인터넷 IP IP IP IP 네트워크 액세스 계층 네트워크 액세스 계층 서브 네트워크 서브 네트워크 라우팅 네트워크 액세스 프로토콜 네트워크 액세스 프로토콜

네트워크 프로그래밍 계층별 분류 응용계층 프로그래밍 트랜스포트 계층 프로그래밍 디바이스 드라이버 계층 프로그래밍 응용 계층 소켓 프로그래밍 TCP/IP 디바이스 드라이버 프로그래밍 네트워크 디바이스 LAN

응용 계층 프로그래밍 네트워크 응용 패키지, TCP/IP 응용 프로토콜을 이용 데이터의 송수신을 구체적으로 다루지 않음 장점 유닉스의 rsh, rcp RPC http 장점 복잡한 네트워크 서비스를 편리하게 구현할 수 있음 단점 하위 계층의 구체적인 동작을 직접 제어할 수 없음

트랜스포트 계층 프로그래밍 TCP나 UDP와 같은 트랜스포트 계층의 기능을 직접 이용 데이터 그램 단위의 데이터 송수신 처리 대표적인 API (Application Program Interface) UNIX BSD socket, winsock 인터넷 응용 프로그래밍의 기초

디바이스 드라이버 계층 프로그래밍 OSI 계층 2 이하의 인터페이스를 직접 다루는 프로그래밍 예) Microsoft 사의 NDIS (Network Driver Interface Specification) API Windows에서 이더넷 프레임의 송수신을 직접 처리 프레임 단위의 송수신을 구체적으로 제어, 네트워크 상태 모니터링 등 LAN 카드 개발 시 테스트 프로그램 작성에 사용 프레임을 송수신하는 기능만을 이용 흐름제어, 에러제어, 인터넷주소 관리 등의 기능은 별도로 구현해야 함

클라이언트-서버 모델 대부분의 네트워크 프로그램의 구현 모델 서버와 클라이언트 서버 서버 : 서비스를 제공하는 장비 클라이언트 : 서비스를 이용하는 장비 서버 일반적으로 클라이언트보다 구현이 복잡 클라이언트의 인증 정보보호 동시 서비스 안정성

2-tier 클라이언트-서버 모델 대부분의 통신 프로그램 단점 웹(http), ftp, telnet, mail 서비스 요청(request) 클라이언트 서버 서비스 응답(response) 대부분의 통신 프로그램 웹(http), ftp, telnet, mail 단점 서버에서의 병목 현상 클라이언트의 증가는 서버에 트래픽 집중과 처리 용량 부족 현상 발생

3-tier 클라이언트 서버 모델 2-tier 클라이언트-서버 모델의 문제점을 개선한 구조 ‘응용서버’와 ‘데이터서버’로 구분 요청(request) 데이터 클라이언트 응용 서버 데이터서버 응답(response) 2-tier 클라이언트-서버 모델의 문제점을 개선한 구조 ‘응용서버’와 ‘데이터서버’로 구분 클라이언트는 응용 서버에 서비스를 요청 응용서버는 데이터 서버로부터 데이터를 얻어 클라이언트에 응답 장점 클라이언트는 데이터서버의 정보가 필요없음 클라이언트가 같은 요청을 동시에 하면 응용 서버는 이를 한번만 처리 데이터 서버의 통신 부담 저하

n-tier 클라이언트-서버 모델 3-tier 모델을 확장 장점 여러 버전의 응용서버가 존재 응용서버 1 응용서버 2 클라이언트 데이터서버 응용서버 N 3-tier 모델을 확장 여러 버전의 응용서버가 존재 기본 동작은 3-tier 모델과 같지만 응용 서버가 여러 형태로 구현 장점 클라이언트가 필요에 따라 다른 응용 서버를 선택할 수 있음 서비스 제공 도중 새로운 응용서버 추가가 가능 서비스의 다양성, 확장성, 버전관리 (업그레이드)

P2P 모델 서버, 클라이언트의 역할이 미리 정해지지 않음 내부적으로는 클라이언트-서버 모델로 동작 순수 P2P 모델 경우에 따라 서버 또는 클라이언트가 될 수 있음 내부적으로는 클라이언트-서버 모델로 동작 참가자가 필요한 시기에 서버와 클라이언트의 역할을 수행 순수 P2P 모델 참가자들이 동등한 자격으로 정보를 이용하는 모델 정보 검색을 위해 주변의 참가자에게 문의 (요청) 요청은 정보를 찾을 때까지 인접한 참가자에게 계속 전파 특징 동작이 단순, 비효율적 하이브리드형 P2P 모델 순수 P2P 모델을 개선한 방식 인덱스 서버가 존재 정보 검색을 위해 인덱스 서버에게 문의 (요청) 인덱스 서버는 요청한 정보를 가지고 있는 참가자의 주소를 반환

서버 구현 기술 서버의 구현 방식이 네트워크 성능에 중요한 영향을 줌 서버 구현 기술 연결형과 비연결형 서버 iterative와 concurrent 서버

연결형과 비연결형 서버 연결형 서비스 비연결형 서비스 종점간 연결 설정/해제, 데이터 송수신 등 세 단계의 절차를 거침 주로 TCP를 이용하여 작성 데이터의 안정적인 전달을 보장 TCP 프로토콜, telnet, ftp 등 각 클라이언트마다 연결을 개설 클라이언트 수가 증가하면 서버에 부담이 클 수 있음 비연결형 서비스 종점간 연결 설정/해제 작업 없이 바로 데이터를 주고 받는 방식 주로 UDP를 이용하여 작성 안정적인 데이터 전달을 보장하지 않으므로 응용 프로그램에서 처리 클라이언트마다 연결을 설정할 필요가 없음 서버의 부담이 적음 (메모리 사용 등) 방송형, 멀티캐스팅형 서비스에 적합

Iterative와 Concurrent 서버 클라이언트의 요청을 순서대로 처리 클라이언트의 요청이 짧은 시간에 처리할 수 있는 경우에 적합 Concurrent 서버보다 구현이 간단함 Concurrent 서버 클라이언트의 요청을 동시에 처리 다중처리 기능이 필요 예) 멀티프로세스에 의한 다중처리 새로운 클라이언트 접속시 이 클라이언트를 담당하는 프로세스 생성 클라이언트의 증가에 따라 프로세스 수도 증가 다중화 이용 여러 작업을 동시에 처리하는 기능 각 서비스 처리 시간이 불규칙적이거나 길 때 필요

네트워크 프로그램 영역 네트워크 프로그램의 구현 영역에 따른 분류 컴퓨터 사이의 데이터 통신 (data communication) TCP/IP 등의 통신 프로토콜을 이용한 패킷 송수신 컴퓨터 내의 데이터 처리 (data processing) 파일 입출력, 데이터베이스 액세스, 캐싱, 멀티미디어 신호 처리 등 컴퓨터 내의 프로세스간 통신 (inter-process communication) 멀티프로세스, 멀티스레드 프로세스 작업 분담 기술 등

소켓 정의 TCP나 UDP와 같은 트랜스포트 계층을 이용하는 API 1982년 BSD 유닉스 4.1에서 소개 모든 유닉스 운영체제에서 제공 Windows는 Winsock으로 제공 Java는 Network 관련 클래스 제공 5-7 응용 1 응용 2 응용 3 소켓 인터페이스 소켓 1 소켓 2 소켓 3 4 3 TCP/IP 2 네트워크 드라이버 1

소켓 번호 유닉스는 모든 파일, 장치 등을 파일로 취급 소켓 디스크립터 파일 디스크립터, 키보드, 모니터, 하드웨어 장치, 소켓 등 소켓 디스크립터 소켓을 개설하여 얻는 파일 디스크립터 데이터를 송수신할 때 사용 파일 또는 소켓 정보 구조체 디스크립터 테이블 family : PF_INET service : SOCK_STREAM local IP local port remote IP remote port … … (파일) 3 pointer (파일) 4 pointer (소켓) 5 pointer …

소켓 번호 응용 프로그램과 소켓 그리고 TCP/IP의 관계

소켓의 생성 소켓은 TCP/IP 만을 위해 정의된 것은 아님 TCP/IP, 유닉스 네트워크, XEROX 네트워크 등에서 사용 가능 따라서, 소켓 개설 시 프로토콜 체계를 지정해야 함 지정할 수 있는 프로토콜 체계의 종류 서비스 타입 #include <sys/types.h> #include <sys/socket.h> int socket ( int domain, // 프로토콜 체계 int type, // 서비스 타입 int protocol); // 소켓에 사용할 프로토콜 PF_INET // 인터넷프로토콜 체계 PF_INET6 // IPv6 프로토콜 체계 PF_UNIX // 유닉스 방식의 프로토콜 체계 PF_NS // XEROX 네트워크 시스템의 프로토콜 체계 PF_PACKET // 리눅스에서 패킷 캡쳐를 위해 사용 SOCK_STREAM // TCP 소켓 SOCK_DGRAM // UDP 소켓 SOCK_RAW // RAW 소켓

소켓 사용 절차 TCP (연결형) 소켓 프로그래밍 절차 서 버 클라이언트 socket() socket() bind() 서 버 클라이언트 socket() socket() bind() listen() connect() 연결요청 accept() 데이터 송수신 recv() send() send() recv() 종료 close()

소켓 사용 절차 UDP (비연결형) 소켓 프로그래밍 절차 TCP와 달리 일 대 일 통신에만 사용되지 않음 비연결형 소켓 Connect() 시스템 콜을 사용할 필요가 없음 소켓 개설 후 바로 상대방과 데이터를 송수신 서 버 클라이언트 socket() socket() bind() 데이터송수신 recvfrom() sendto() sendto() recvfrom() 종료 close()

“Hello World!” 서버 / 클라이언트 프로그램 예제 helloworld_server.c, helloworld_client.c 실행하기 포트 번호는 123+각자 아이디 Ex) ID : 25 = 12325

파일의 조작

저 수준 파일 입출력(Low-Level File Access) 리눅스 혹은 윈도우즈 자체에서 제공해 주는 파일 입출력 함수를 사용하여 파일을 관리(파일의 생성 및 삭제, 데이터 입력 및 출력)하는 것을 의미함. 리눅스에서는 모든 것을 파일로 관리한다. 파일, 소켓, 표준 입력, 표준 출력. 파일에 파일 디스크립터를 할당해서 관리(파일 디스크립터는 정수)

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

File open 및 close #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int open(const char *path, int flag); 성공 시 파일 디스크립터, 실패 시 -1 리턴 path : 파일의 경로를 포함한 이름을 나타내는 문자열의 포인터 flag : 파일 오픈 모드 MODE 의 미 O_CREAT 필요한 경우 파일을 생성 O_TRUNC 존재하던 데이터를 모두 삭제 O_APPEND 존재하던 데이터 보존하고 뒤에 이어서 저장 O_RDONLY 읽기 전용 모드로 파일을 오픈 O_WRONLY 쓰기 전용 모드로 파일을 오픈 O_RDWR 읽기 쓰기 겸용 모드로 파일을 오픈 #include <unistd.h> int close(int fildes); 성공 시 0, 실패 시 -1 리턴 Fildes : 닫아줄 파일의 파일 디스크립터

성공 시 수신한 바이트 수(단, EOF 만나면 0), 실패 시 -1 리턴 Data read & write #include <unistd.h> ssize_t write(int fildes, const void * buf, size_t nbytes); 성공 시 전달한 바이트 수, 실패 시 -1 리턴 fildes : 데이터 전송 영역을 나타내는 파일 디스크립터 buf : 전송할 데이터를 가지고 있는 버퍼의 포인터 nbytes : 전송할 데이터의 바이트 수 #include <unistd.h> ssize_t read(int fildes, void *buf, size_t nbytes); 성공 시 수신한 바이트 수(단, EOF 만나면 0), 실패 시 -1 리턴 fildes : 데이터를 전송해 주는 대상을 가리키는 파일 디스크립터 buf : 수신한 데이터를 저장할 버퍼를 가리키는 포인터 nbytes : 수신할 최대 바이트 수

예제 확인 프로그램 예제 low_open.c, low_read.c, fd_seri.c 실행하기

예제 실습 Lowopen.c 실습의 프로그램을 다음과 같이 수정하시오. 파일이 존재하지 않을 경우 에러 처리하고 프로그램 종료(파일 새로 생성하지 않음) 파일에 내용 입력시 기존 파일 내용을 보존 실습 시간에 소개된 함수 및 내용을 바탕으로 다음 프로그램을 작성하시오. 실행 시 매개변수로 입력한 파일을 복사해주는 프로그램 실행의 예 : copy helloworld_server.c copied.c 위의 예시로 실행 시 gelloworld_server.c의 내용을 copied.c 라는 파일에 그대로 복사 Low_open.c와 low_read.c 소스 코드를 참고하여 작성