윈도우 네트워크 프로그래밍 √ 원리를 알면 IT가 맛있다 TCP/IP 소켓 프로그래밍 광주대학교 정보통신학과 조 정 호.

Slides:



Advertisements
Similar presentations
신입생 Study 커리큘럼 OneScore. Contents 후니의 시스코 네트워킹 (4 주 ) 01/ Network 생활코딩 – 웹 서비스 만들기 (4 주 ) Wowhacker 웹 게임 (4 주 ) 02/ Web 뇌를 자극하는 윈도우 시스템 프로그래밍 (4 주 ) 리버싱.
Advertisements

컴퓨터 운영체제의 역사 손용범.
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
CHAP 22. 블루투스.
Dongseo univ. Computer engineering
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Network Lab. Young-Chul Hwang
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Load Balancing L4와 L7은 어떻게 동작할까?.
Chapter 03. 소켓 주소 구조체 다루기.
9장 데이터 링크층 개요 (Introduction To Data-Link Layer)
제 14장 Multicast & Broadcast
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
11 장 LAN 기본 개념과 Ethernet LAN
Chapter 21 Network Layer: ARP, ICMP (IGMP).
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Chapter 06. UDP 서버/클라이언트.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Understanding of Socket and File I/O
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
TCP/IP Socket Programming…
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Chapter 5 UDP Socket 소켓 프로그래밍.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
Sockets Introduction and Protocol Setting
2장. 인터넷의 개념과 주소.
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
22 장 전송층(Transport Layer)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
21 장 전송층(Transport Layer)
Internet 데이터 전송 목표: 인터넷의 개요 및 기본 내용을 살펴보고 VB에서의 데이터 전송 프로그래밍에 대하여 학습한다. 주요내용 인터넷의 개요 인터넷 데이터 전송 인터넷 프로그래밍 Winsock Client Server 프로그래밍.
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
Chapter 01. OSI 계층 모델.
Network 네트워크 이론 및 실습 TCP / IP 4장.
-네트워크 관리 개요 및 SNMP 프로토콜 동작과정
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
2 네트워크 모델 학습 목표 모듈 개념을 알아보고 계층 구조의 필요성을 이해한다.
01. 라우팅 및 원격 액세스의 개요 라우팅은 패킷을 송신지부터 수신지까지 어떠한 경로를 통해 보낼 것인지를 결정하는 방법
Chapter 26 IP over ATM.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
프로젝트 제안서 -TCP/IP를 이용한 메신저 구현-
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
웹(WWW).
Chapter 27 Mobile IP.
LAN의 구성요소 학습내용 서버 클라이언트 NIC(Network Interface Card) 전송매체
Introduction to JSP & Servlet
Chapter 04. TCP 서버/클라이언트.
제 13 장 인터넷 그룹 관리 프로토콜 정보통신연구실.
Chapter 02. 윈도우 소켓 시작하기.
제 6 장 IP 패킷 전달과 라우팅 6.1 연결형 서비스와 비연결형 서비스 6.2 직접 전달과 간접 전달 6.3 라우팅 방법
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
The OSI Model and TCP/IP Protocol Suite
Part 05 TCP/IP 1. 네트워크 2. 포트번호.
4. IP 데이터그램과 라우팅 (6장. 인터넷과 IP) IP 데이터그램 : 특정 물리망에 종속되지 않은 가상의 패킷 형식.
Network Lab. Young-Chul Hwang
ARP.
Presentation transcript:

윈도우 네트워크 프로그래밍 √ 원리를 알면 IT가 맛있다 TCP/IP 소켓 프로그래밍 광주대학교 정보통신학과 조 정 호

Chapter 01. 네트워크와 소켓 프로그래밍

윈도우 소켓 애플리케이션 작성과 실행 과정의 이해 학습 목표 TCP/IP 프로토콜의 동작 원리 이해 소켓의 기본 개념 이해 윈도우 소켓의 역사와 특징 이해 윈도우 소켓 애플리케이션 작성과 실행 과정의 이해

인터넷 구성 (1/2) 종단 시스템 (PC, PDA, ...) 라우터 ① ② ③ ④

종단 시스템(end-system) 라우터(router) 프로토콜(protocol) 인터넷 구성 (2/2) 종단 시스템(end-system) 최종 사용자(end-user)를 위한 애플리케이션을 수행하는 개체(entity). 예) PC, 워크스테이션, PDA, 휴대폰 등 라우터(router) 종단 시스템이 속한 네트워크와 다른 네트워크를 연결함으로써 서로 다른 네트워크에 속한 종단 시스템끼리 상호 데이터를 교환할 수 있도록 하는 장비 프로토콜(protocol) 종단 시스템과 라우터간, 라우터와 라우터간, 그리고 종단 시스템과 종단 시스템간 통신을 수행하기 위한 정해진 절차와 방법

TCP/IP 프로토콜 인터넷에서 사용하는 핵심 프로토콜

TCP/IP 프로토콜 (2/2) TCP/IP 프로토콜 (운영체제) 애플리케이션 라우터 종단 시스템

Q&A : 통신을 수행하는 개체중에 최종적인 목적지가 되는 것은? 종단시스템 애플리케이션 TCP/IP 프로토콜 라우터

Q&A : 애플리케이션간 통신을 위해 만족시켜야 할 사항은? TCP/IP 프로토콜 (2/2) Q&A : 애플리케이션간 통신을 위해 만족시켜야 할 사항은? 통신할 대상(종단시스템 자체, 종단시스템에서 수행되는 애플리케이션)을 지정하는 상호 약속된 방법 전송오류 확인 기능 오류 발생 시 재전송 기능 데이터의 순서 유지 기능 …………..

TCP/IP 프로토콜 구조 계층적 구조 TCP/IP 프로토콜 구조 (1/6) 네트워크 액세스 계층 인터넷 계층 전송 계층 애플리케이션 계층 디바이스 드라이버 네트워크 하드웨어 IP TCP, UDP TELNET, FTP, HTTP, SMTP, MIME, SNMP, ...

네트워크 액세스 계층(network access layer) TCP/IP 프로토콜 구조 (2/6) 네트워크 액세스 계층(network access layer) 역할 물리적 네트워크를 통한 실제적인 데이터 전송 구성 요소 네트워크 하드웨어 + 디바이스 드라이버 주소 지정 방식 물리 주소(physical address) 예 이더넷(Ethernet)

인터넷 계층(Internet layer) TCP/IP 프로토콜 구조 (3/6) 인터넷 계층(Internet layer) 역할 네트워크 액세스 계층의 도움을 받아, 전송 계층이 내려 보낸 데이터를 종단 시스템까지 전달 구성 요소 논리 주소 + 라우팅 주소 지정 방식 IP 주소(Internet Protocol address) 라우팅(routing) 목적지까지 데이터를 전달하기 위한 일련의 작업 라우팅을 위한 정보 획득 라우팅 정보를 기초로 실제 데이터 전달(forward)

전송 계층(transport layer) TCP/IP 프로토콜 구조 (4/6) 전송 계층(transport layer) 역할 최종적인 통신 목적지(프로세스)를 지정하고, 오류 없이 데이터를 전송 최종적인 통신 목적지(프로세스)의 주소 지정 방식 포트 번호(port number) 이용 예 TCP(Transmission Control Protocol) UDP(User Datagram Protocol)

TCP와 UDP TCP/IP 프로토콜 구조 (5/6) TCP UDP 연결형(connection-oriented) 프로토콜 - 연결이 성공해야 통신 가능 비연결형(connectionless) 프로토콜 - 연결 없이 통신 가능 데이터 경계를 구분하지 않음 - 바이트 스트림(byte-stream) 서비스 데이터 경계를 구분함 - 데이터그램(datagram) 서비스 신뢰성 있는 데이터 전송 - 데이터를 재전송함 비신뢰적인 데이터 전송 - 데이터를 재전송하지 않음 1 대 1 통신(unicast) 1 대 1 통신(unicast), 1 대 다 통신(broadcast), 다 대 다 통신(multicast)

애플리케이션 계층(application layer) TCP/IP 프로토콜 구조 (6/6) 애플리케이션 계층(application layer) 역할 전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 이용하는 애플리케이션을 포괄 다양한 애플리케이션 서비스 제공 예 Telnet, FTP, HTTP, SMTP 등

패킷 전송 원리 (1/5) 패킷(packet) 제어 정보+ 데이터 제어 정보의 위치에 따라, 앞쪽에 붙는 헤더(header)와 뒤쪽에 붙는 트레일러(trailer)로 구분 Q&A : 패킷에서 제어정보란? Q&A : 패킷에서 데이터란 무엇을 가르키는가?

패킷 전송 형태 송신측 패킷 전송 원리 (2/5) 이더넷 IP TCP 애플리케이션 데이터 TCP 헤더 IP 헤더 이더넷 헤더 이더넷 트레일러

패킷 전송 형태 수신측 패킷 전송 원리 (3/5) 이더넷 IP TCP 애플리케이션 데이터 TCP 헤더 IP 헤더 이더넷 헤더 이더넷 트레일러

패킷 전송 형태 계층별 패킷 전송 원리 (4/5) 애플리케이션 데이터 애플리케이션 TCP 데이터 TCP 헤더 TCP IP

TCP/IP 프로토콜을 이용한 패킷 전송 패킷 전송 원리 (5/5) 네트워크 액세스 계층 인터넷 계층 전송 계층 애플리케이션 계층 종단 시스템 라우터

IP 주소 포트 번호 인터넷에 존재하는 호스트(종단 시스템, 라우터)를 유일하게 구별할 수 있는 식별자 IPv4는 32비트, IPv6는 128비트 사용 8비트 단위로 구분하여 10진수로 표기(IPv4) 예) 147.46.114.70 포트 번호 최종 통신 종착지(하나 혹은 여러 개의 프로세스)를 나타내는 식별자

IP 주소와 포트 번호 (2/3) IP 주소와 포트 번호 TCP IP 프로세스 UDP 포트 번호(0~65535) IP 주소

도메인 이름 IP 주소에 대한 (기억하기 쉬운) 별명 실제 통신을 하기 위해서는 IP 주소로 변환해야 함

클라이언트/서버(client/server) 모델 클라이언트/서버 모델 클라이언트/서버(client/server) 모델 두 개의 애플리케이션이 상호 작용하는 방식을 나타냄 서버가 먼저 실행하여 대기 클라이언트가 서버에게 요청을 하면 서버는 이 요청을 받아 처리 서버 클라이언트 접속 대기

세 가지 관점 ① 데이터 타입(자료형) ② 통신 종단점(communication end-point) 소켓의 개념 (1/5) 세 가지 관점 ① 데이터 타입(자료형) ② 통신 종단점(communication end-point) ③ 네트워크 프로그래밍 인터페이스

데이터 타입 운영체제가 통신을 위해 관리하는 데이터를 간접적으로 참조할 수 있도록 만든 일종의 핸들(handle) 소켓의 개념 (2/5) 데이터 타입 운영체제가 통신을 위해 관리하는 데이터를 간접적으로 참조할 수 있도록 만든 일종의 핸들(handle) 생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데이터 타입 // 파일 생성 int fd = open("myfile", ...); ... read(fd, ...) // 읽기 write(fd, ...) // 쓰기 // 소켓 생성 SOCKET sock = socket(...); ... recv(sock, ...) // 받기 send(sock, ...) // 보내기

통신 종단점 소켓은 통신을 위해 필요한 여러 요소의 집합체 소켓의 개념 (3/5) 통신 종단점 소켓은 통신을 위해 필요한 여러 요소의 집합체 사용할 프로토콜(TCP/IP, UDP/IP 등) 송신측 IP 주소, 송신측 포트 번호 수신측 IP 주소, 수신측 포트 번호 애플리케이션은 자신의 소켓이 상대방의 소켓과 연결된 것으로 생각하고 데이터를 교환

통신 종단점(cont’d) 소켓의 개념 (4/5) 클라이언트 send (sock, ...) 서버 recv (sock, ...) 데이터 <클라이언트 소켓> • 프로토콜: TCP/IP • IP 주소: 147.46.114.70 • 포트 번호: 12023 <서버 소켓> • IP 주소: 61.72.244.22 • 포트 번호: 9001

네트워크 프로그래밍 인터페이스 통신 양단이 모두 소켓을 사용할 필요는 없음 소켓의 개념 (5/5) 네트워크 프로그래밍 인터페이스 통신 양단이 모두 소켓을 사용할 필요는 없음 TCP/IP 프로토콜 구조에서 (일반적으로) 애플리케이션 계층과 전송 계층 사이에 위치하는 것으로 간주 애플리케이션 TCP IP UDP 소켓 인터페이스 ICMP, IGMP

윈도우 소켓(Windows Sockets, Winsock) 윈도우 소켓 (1/6) 윈도우 소켓(Windows Sockets, Winsock) 버클리 유닉스(Berkeley Software Distribution UNIX)에서 개발한 네트워크 프로그래밍 인터페이스를 윈도우 환경에서 사용할 수 있도록 한 것 소스 코드 수준에서 호환성이 높음 윈도우 95 버전부터 API(Application Programming Interface)에 정식으로 포함되어 제공

유닉스 소켓과의 차이점 윈도우 소켓은 DLL을 통해 대부분의 기능이 제공되므로 DLL 초기화와 종료 작업을 위한 함수가 필요 윈도우 소켓 (2/6) 유닉스 소켓과의 차이점 윈도우 소켓은 DLL을 통해 대부분의 기능이 제공되므로 DLL 초기화와 종료 작업을 위한 함수가 필요 윈도우 애플리케이션은 대개 그래픽 사용자 인터페이스(GUI, Graphical User Interface)를 기반으로 하며, 메시지 구동 방식으로 동작하므로 이를 위한 확장 함수가 존재 윈도우는 운영체제 차원에서 멀티스레드(multithread)를 지원하므로 멀티스레드 환경에서 안정적으로 동작하기 위한 구조와 이를 위한 함수가 필요

윈도우 소켓 (3/6) 운영체제별 지원 사항 지원 프로토콜 TCP/IP, IPv6(윈도우 XP 이상), IrDA(윈도우 98 이상), Bluetooth(윈도우 XP SP2 이상), IPX/SPX, ATM, DECNet, TP4(윈도우 2000부터 지원하지 않음), DLC(윈도우 XP부터 지원하지 않음), NetBEUI(윈도우 XP부터 지원하지 않음) 운영체제 윈속 버전 윈도우 95 1.1 (2.2) 윈도우 98/Me, 윈도우 NT/2000/XP/2003 2.2 윈도우 CE

장점 유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기존 프로그램을 포팅하기가 쉬움 윈도우 소켓 (4/6) 장점 유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기존 프로그램을 포팅하기가 쉬움 가장 널리 쓰이는 네트워크 프로그래밍 인터페이스이므로 한번 배워두면 여러 환경(윈도우, 유닉스, ...)에서 사용할 수 있음 TCP/IP 이외에도 다양한 종류의 프로토콜을 지원하므로 최소한의 코드 수정으로 애플리케이션에서 사용할 프로토콜을 변경 가능 비교적 저수준(low-level 혹은 mid-level)의 프로그래밍 인터페이스로, 세부적인 제어가 가능하므로 고성능의 네트워크 애플리케이션을 개발할 수 있음

단점 애플리케이션 수준의 프로토콜을 프로그래머가 직접 설계해야 함 윈도우 소켓 (5/6) 단점 애플리케이션 수준의 프로토콜을 프로그래머가 직접 설계해야 함 데이터 포맷이나 전송 절차 등을 고려하여 프로그래밍해야 하므로 프로토콜을 변경할 경우 코드 수정이 불가피 서로 다른 바이트 정렬(byte ordering) 방식을 사용하거나 데이터 처리 단위(32비트, 64비트, ...)가 서로 다른 종단 시스템간 통신을 할 경우, 애플리케이션 수준에서 데이터 변환을 처리해야 함

구조 윈도우 소켓 (6/6) 윈속 2.x 애플리케이션 윈속 1.x WINSOCK.DLL (16 비트) WSOCK32.DLL (32 비트) WS2_32.DLL (32 비트) 윈속 1.x API 윈속 2.x API TCP/IP IrDA IPX/SPX MSWSOCK.DLL ... Bluetooth 윈속 1.x 확장 API

윈속 애플리케이션 작성 윈속 라이브러리 추가