SlideShare a Scribd company logo
1 of 50
Download to read offline
1장. 네트워크와 소켓 프로그래밍
 TCP/IP 프로토콜의 동작 원리를 살펴본다.
 소켓의 기본 개념을 이해한다.
 윈도우 소켓의 역사와 특징을 살펴본다.
 윈도우 소켓 프로그램을 작성하고 실행하는 과정을 이해한다.
TCP/IP 윈도우 소켓 프로그래밍 2
인터넷 구성 요소 (1)
호스트
라우터
호스트
라우터
①
②
③
④
인터넷
TCP/IP 윈도우 소켓 프로그래밍 3
인터넷 구성 요소 (2)
 호스트
 최종 사용자의 응용 프로그램을 수행하는 주체
 라우터
 호스트에서 생성된 데이터를 여러 네트워크를 거쳐
전송함으로써 서로 다른 네트워크에 속한 호스트 간에
데이터를 교환할 수 있게 하는 장비
 통신 프로토콜
 호스트와 라우터, 라우터와 라우터, 호스트와 호스트가
통신하기 위한 정해진 절차와 방법
TCP/IP 윈도우 소켓 프로그래밍 4
TCP/IP 프로토콜 (1)
 TCP/IP 프로토콜
 인터넷의 핵심 프로토콜인 TCP와 IP를 비롯한 각종
프로토콜
 운영체제의 일부로 구현되며, 응용 프로그램은 운영체제
가 제공하는 TCP/IP 프로토콜의 서비스를 사용해 통신
TCP/IP 윈도우 소켓 프로그래밍 5
TCP/IP 프로토콜 (2)
TCP/IP
프로토콜
(운영체제)
응용 프로그램
라우터 라우터
TCP/IP
프로토콜
(운영체제)
응용 프로그램
호스트 호스트
TCP/IP 윈도우 소켓 프로그래밍 6
TCP/IP 프로토콜 구조 (1)
 TCP/IP 프로토콜 구조
 계층적 구조
네트워크 접근 계층
인터넷 계층
전송 계층
응용 계층
장치 드라이버
네트워크 하드웨어
IP
TCP, UDP
TELNET, FTP, HTTP,
SMTP, MIME, SNMP, ...
TCP/IP 윈도우 소켓 프로그래밍 7
TCP/IP 프로토콜 구조 (2)
 네트워크 접근 계층
 역할
– 물리적 네트워크를 통한 데이터 송수신
 구성 요소
– 네트워크 하드웨어 + 장치 드라이버
 주소 지정 방식
– 물리 주소
 예) 이더넷: 48비트 물리 주소
TCP/IP 윈도우 소켓 프로그래밍 8
TCP/IP 프로토콜 구조 (3)
 인터넷 계층
 역할
– 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트
까지 전달
 구성 요소
– IP 주소 + 라우팅(or 라우터)
 주소 지정 방식
– IP 주소
 소프트웨어적으로 정의된 논리 주소
 전 세계적인 유일성과 하드웨어 독립성을 가짐
 라우팅
– 데이터를 목적지까지 전달하는 일련의 작업
 라우팅에 필요한 정보 수집
 라우팅 정보를 기초로 데이터 전달
TCP/IP 윈도우 소켓 프로그래밍 9
TCP/IP 프로토콜 구조 (4)
 전송 계층
 역할
– 최종 통신 목적지(응용 프로그램)를 지정하고, 오류 없이 데
이터를 전송
 데이터 손실 또는 손상을 검출해 잘못된 데이터가 목적지에 전
달되는 일을 방지
 주소 지정 방식
– 포트 번호
 대표 프로토콜
– TCP
– UDP
TCP/IP 윈도우 소켓 프로그래밍 10
TCP/IP 프로토콜 구조 (5)
 TCP와 UDP
TCP UDP
연결형(connection-oriented) 프로토콜
- 연결 설정 후 통신 가능
비연결형(connectionless) 프로토콜
- 연결 설정 없이 통신 가능
신뢰성 있는 데이터 전송
- 데이터를 재전송함
신뢰성 없는 데이터 전송
- 데이터를 재전송하지 않음
일대일 통신(unicast)
일대일 통신(unicast),
일대다 통신(broadcast, multicast)
데이터 경계 구분 안 함
- 바이트 스트림(byte-stream) 서비스
데이터 경계 구분함
- 데이터그램(datagram) 서비스
TCP/IP 윈도우 소켓 프로그래밍 11
TCP/IP 프로토콜 구조 (6)
 응용 계층
 역할
– 전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을
사용하는 응용 프로그램을 포괄
 대표 프로토콜
– Telnet, FTP, HTTP, SMTP, ...
TCP/IP 윈도우 소켓 프로그래밍 12
데이터 전송 원리 (1)
 패킷이란?
 각 프로토콜에서 정의한 제어 정보(IP 주소, 포트 번호, 오
류 체크 코드 등) + 데이터
 제어 정보의 위치에 따라 앞쪽에 붙는 헤더(header)와 뒤
쪽에 붙는 트레일러(trailer)로 구분
TCP/IP 윈도우 소켓 프로그래밍 13
데이터 전송 원리 (2)
 패킷 전송 형태
 송신측
이더넷
IP
TCP
응용 프로그램 데이터
데이터TCP 헤더
데이터TCP 헤더IP 헤더
TCP 헤더IP 헤더이더넷 헤더 데이터 이더넷 트레일러
TCP/IP 윈도우 소켓 프로그래밍 14
데이터 전송 원리 (3)
 패킷 전송 형태
 수신측
이더넷
IP
TCP
응용 프로그램 데이터
데이터TCP 헤더
데이터TCP 헤더IP 헤더
TCP 헤더IP 헤더이더넷 헤더 데이터 이더넷 트레일러
TCP/IP 윈도우 소켓 프로그래밍 15
데이터 전송 원리 (4)
 패킷 전송 형태
 계층별
– 각 계층은 동일 위치의 상대 계층과 통신하는 것으로 간주
응용 프로그램 응용 프로그램데이터
TCP TCPTCP 헤더 데이터
IP IPIP 헤더 TCP 헤더 데이터
TCP/IP 윈도우 소켓 프로그래밍 16
데이터 전송 원리 (5)
 패킷 전송 형태
 인터넷
– 응용 계층, 전송 계층
 하부 계층이 제공하는 가상적인 연결을 사용해 동작
– 인터넷 계층
 IP 주소와 라우팅 기능을 이용해 패킷 전송 경로 결정
– 네트워크 접근 계층
 물리 주소를 사용해 실제 패킷 전송
네트워크 접근 계층
인터넷 계층
전송 계층
응용 계층
네트워크 접근 계층
인터넷 계층
전송 계층
응용 계층
네트워크 접근 계층
인터넷 계층
네트워크 접근 계층
인터넷 계층
호스트 라우터 라우터 호스트
TCP/IP 윈도우 소켓 프로그래밍 17
IP 주소, 포트 번호 (1)
 IP 주소
 인터넷에 있는 호스트와 라우터의 식별자
– 폐쇄된 네트워크거나 IP를 공유하는 경우가 아니면 전 세계
적으로 값이 유일
 IPv4는 32비트, IPv6는 128비트 사용
 IPv4는 8비트 단위로 .(dot)로 구분하여 10진수 4개로 표
기 ☞ dotted-decimal notation
– 예) 147.46.114.70
 IPv6는 16비트 단위로 :(colon)으로 구분하여 16진수 8
개로 표기 ☞ colon-hexadecimal notation
– 예) 2001:0230:abcd:ffab:0023:eb00:ffff:1111
TCP/IP 윈도우 소켓 프로그래밍 18
IP 주소, 포트 번호 (2)
 포트 번호
 인터넷 통신의 종착점(하나 혹은 여러 프로세스)을 나타내
는 식별자
 TCP와 UDP는 포트 번호로 부호 없는 16비트 정수를 사
용하므로 0~65535 범위가 가능
 영역별 포트 번호
포트 번호 분류
0 ~ 1023 알려진 포트(well-known ports)
1024 ~ 49151 등록된 포트(registered ports)
49152 ~ 65535 동적/사설 포트(dynamic and/or private ports)
TCP/IP 윈도우 소켓 프로그래밍 19
IP 주소, 포트 번호 (3)
 IP 주소와 포트 번호
TCP
IP
프로세스 프로세스
프로세스
UDP
포트 번호(0~65535)
IP 주소
TCP/IP 윈도우 소켓 프로그래밍 20
IP 주소, 포트 번호 (4)
 도메인 이름
 IP 주소에 대한 (기억하기 쉬운) 별명
 실제 통신할 때는 IP 주소로 변환해야 함
TCP/IP 윈도우 소켓 프로그래밍 21
클라이언트-서버 모델
 클라이언트-서버(client/server) 모델
 두 프로그램이 상호 작용하는 방식을 나타내는 용어
 서비스를 요청하는 쪽은 클라이언트(client), 클라이언트
가 요청하는 서비스를 처리하는 쪽은 서버(server)
프로그램 1 프로그램 2
접속? 접속?
서버 클라이언트
대기
접속
TCP/IP 윈도우 소켓 프로그래밍 22
소켓의 개념 (1)
 전화 통신과 소켓 통신 비교
사람 사람
사람 사람
TCP/IP 윈도우 소켓 프로그래밍 23
소켓의 개념 (2)
 세 가지 관점
① 데이터 타입
② 통신 종단점
③ 네트워크 프로그래밍 인터페이스
TCP/IP 윈도우 소켓 프로그래밍 24
소켓의 개념 (3)
 데이터 타입
 파일 디스크립터 혹은 핸들과 유사한 개념
 생성과 설정 과정이 끝나면 운영체제의 통신 관련 정보를
참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입
// 파일 생성
int fd = open("myfile", ...);
...
read(fd, ...) // 데이터 읽기
write(fd, ...) // 데이터 쓰기
// 소켓 생성
SOCKET sock = socket(...);
...
recv(sock, ...) // 데이터 받기
send(sock, ...) // 데이터 보내기
TCP/IP 윈도우 소켓 프로그래밍 25
소켓의 개념 (4)
 통신 종단점
 응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된
것으로 생각하고 데이터를 주고받음
TCP/IP 윈도우 소켓 프로그래밍
클라이언트
send(sock, ...)
서버
recv(sock, ...)
데이터
<클라이언트 소켓>
• 프로토콜: TCP/IP
• IP 주소: 147.46.114.70
• 포트 번호: 12023
<서버 소켓>
• 프로토콜: TCP/IP
• IP 주소: 61.72.244.22
• 포트 번호: 9001
TCP/IP 윈도우 소켓 프로그래밍 26
소켓의 개념 (5)
 네트워크 프로그래밍 인터페이스
 통신 양단이 모두 소켓을 사용할 필요는 없음
 TCP/IP 프로토콜에서 (일반적으로) 응용 계층과 전송 계
층 사이에 위치하는 것으로 간주
TCP/IP 윈도우 소켓 프로그래밍
응용 프로그램
TCP
IP
UDP
응용 프로그램 응용 프로그램
소켓 인터페이스
ICMP, IGMP
TCP/IP 윈도우 소켓 프로그래밍 27
윈도우 소켓 (1)
 윈도우 소켓(윈속)
 버클리 유닉스에서 개발한 네트워크 프로그래밍 인터페이
스를 윈도우 환경에서 사용할 수 있게 만든 것
 윈도우 95 버전부터 API에 정식으로 포함하여 제공
TCP/IP 윈도우 소켓 프로그래밍 28
윈도우 소켓 (2)
 윈도우 소켓과 유닉스 소켓의 차이점
 윈도우 소켓은 DLL을 통해 대부분의 기능이 제공되므로
DLL 초기화와 종료 작업을 위한 함수가 필요
 윈도우 프로그램은 대개 GUI를 갖추고 메시지 구동 방식
으로 동작하므로 이를 위한 확장 함수가 존재
 윈도우는 운영체제 차원에서 멀티스레드를 지원하므로 멀
티스레드 환경에서 안정적으로 동작하는 구조와 이를 위
한 함수가 필요
TCP/IP 윈도우 소켓 프로그래밍 29
윈도우 소켓 (3)
 윈도우 운영체제의 윈속 지원
 윈속에서 지원하는 통신 프로토콜
 TCP/IP(윈도우 95 이상, 윈도우 CE 2.1 이상)
 IPv6(윈도우 XP SP1 이상, 윈도우 CE .NET 4.1 이상)
 IrDA(윈도우 98 이상, 모든 윈도우 CE 버전)
 Bluetooth(윈도우 XP SP2 이상, 윈도우 CE .NET 4.0 이상)
운영체제 윈속 버전
윈도우 95 1.1 (2.2)
윈도우 98/Me, 윈도우 NT/2000/XP/2003 서버,
윈도우 비스타/2008 서버/7
2.2
윈도우 CE 1.1 (2.2)
TCP/IP 윈도우 소켓 프로그래밍 30
윈도우 소켓 (4)
 윈속의 장점
 유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기
존 코드를 이식하여 활용하기 쉬움
 가장 널리 사용하는 네트워크 프로그래밍 인터페이스이므
로 한번 배우면 여러 운영체제(윈도우, 리눅스 등)에서 사
용 가능
 TCP/IP 외의 프로토콜도 지원하므로 최소 코드 수정으로
응용 프로그램이 사용할 프로토콜 변경 가능
 비교적 저수준 프로그래밍 인터페이스이므로 세부 제어가
가능하며 고성능 네트워크 프로그램 개발 가능
TCP/IP 윈도우 소켓 프로그래밍 31
윈도우 소켓 (5)
 윈속의 단점
 응용 프로그램 수준의 프로토콜을 프로그래머가 직접 설
계해야 함
– 주고받는 데이터 형식이나 전송 절차 등을 고려해 프로그래
밍해야 하며, 설계 변경 시에는 코드 수정이 불가피함
 서로 다른 바이트 정렬 방식을 사용하거나 데이터 처리 단
위가 서로 다른 호스트끼리 통신할 경우, 응용 프로그램
수준에서 데이터 변환을 처리해야 함
TCP/IP 윈도우 소켓 프로그래밍 32
윈도우 소켓 (6)
 윈속 구조
윈속 2.x
응용 프로그램
윈속 1.x
응용 프로그램
WINSOCK.DLL (16비트)
WSOCK32.DLL (32비트)
WS2_32.DLL (32비트)
윈속 1.x API
윈속 2.x API
TCP/IP IrDA
MSWSOCK.DLL
...Bluetooth
윈속 1.x 확장 API
TCP/IP 윈도우 소켓 프로그래밍 33
윈도우 소켓 프로그램 맛보기 (1)
 프로젝트 생성
TCP/IP 윈도우 소켓 프로그래밍 34
윈도우 소켓 프로그램 맛보기 (2)
 설정 변경
TCP/IP 윈도우 소켓 프로그래밍 35
윈도우 소켓 프로그램 맛보기 (3)
 소스 파일 추가 (1/2)
TCP/IP 윈도우 소켓 프로그래밍 36
윈도우 소켓 프로그램 맛보기 (4)
 소스 파일 추가 (2/2)
TCP/IP 윈도우 소켓 프로그래밍 37
윈도우 소켓 프로그램 맛보기 (5)
 문자 집합 변경과 윈속 라이브러리 추가 (1/4)
TCP/IP 윈도우 소켓 프로그래밍 38
윈도우 소켓 프로그램 맛보기 (6)
 문자 집합 변경과 윈속 라이브러리 추가 (2/4)
TCP/IP 윈도우 소켓 프로그래밍 39
윈도우 소켓 프로그램 맛보기 (7)
 문자 집합 변경과 윈속 라이브러리 추가 (3/4)
TCP/IP 윈도우 소켓 프로그래밍 40
윈도우 소켓 프로그램 맛보기 (8)
 문자 집합 변경과 윈속 라이브러리 추가 (4/4)
 비주얼 C++ 6.0을 사용하는 경우에는
[Project]→[Settings]→[Link]→[Object/library
modules] 부분에“ws2_32.lib”를 입력한다.
 비주얼 C++ 버전에 따라 윈속 라이브러리를 추가하는 방
식이 달라서 번거롭다면 소스 코드의 임의 위치에
#pragma comment(lib,“ws2_32”) 한 줄을 넣으면 된
다. 2장 이후의 모든 코드는 이 방식을 사용한다.
TCP/IP 윈도우 소켓 프로그래밍 41
TCP/IP 윈도우 소켓 프로그래밍 42
TCP/IP 윈도우 소켓 프로그래밍 43
TCP/IP 윈도우 소켓 프로그래밍 44
TCP/IP 윈도우 소켓 프로그래밍 45
TCP/IP 윈도우 소켓 프로그래밍 46
TCP/IP 윈도우 소켓 프로그래밍 47
실행을 위한 준비
 윈도우 7 텔넷설치
 Windows7에서는 기본적으로 Telnet Client 가 설치되어 있지 않음
– Telnet 설치방법
 제어판 -> 프로그램 -> 프로그램 및 기능에 들어가서 ‘Windows 기능 사용/사용안함’
을 선택
 우측 기능 목록 하단에 "텔넷클라이언트"를 체크하여 설치를 시작
TCP/IP 윈도우 소켓 프로그래밍 48
실행 방법
 명령프롬프트를 실행한 후 telnet을 실행
 telnet <서버IP주소> 9000 + EnterEnter
TCP/IP 윈도우 소켓 프로그래밍 49
윈도우 소켓 프로그램 맛보기 (9)
 실행 화면
 텔넷에서 입력한 내용이 서버 화면에 그대로 출력됨.
TCP/IP 윈도우 소켓 프로그래밍 50
Thank you
www.hanb.co.kr

More Related Content

What's hot

[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdfssuserf8b8bd1
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automateIlkka Tengvall
 
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...StreamNative
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
Kubernetes or OpenShift - choosing your container platform for Dev and OpsKubernetes or OpenShift - choosing your container platform for Dev and Ops
Kubernetes or OpenShift - choosing your container platform for Dev and OpsTomasz Cholewa
 
Docker and kubernetes_introduction
Docker and kubernetes_introductionDocker and kubernetes_introduction
Docker and kubernetes_introductionJason Hu
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...Yevgeniy Brikman
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...Amazon Web Services Korea
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKMarian Marinov
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operatorsJ On The Beach
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 

What's hot (20)

[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automate
 
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...
Tracking Apache Pulsar Messages with Apache SkyWalking - Pulsar Virtual Summi...
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
Kubernetes or OpenShift - choosing your container platform for Dev and OpsKubernetes or OpenShift - choosing your container platform for Dev and Ops
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
 
Docker and kubernetes_introduction
Docker and kubernetes_introductionDocker and kubernetes_introduction
Docker and kubernetes_introduction
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
Autoscaling on Kubernetes
Autoscaling on KubernetesAutoscaling on Kubernetes
Autoscaling on Kubernetes
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDK
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 

Viewers also liked

KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
A comparative study of social network analysis tools
A comparative study of social network analysis toolsA comparative study of social network analysis tools
A comparative study of social network analysis toolsDavid Combe
 
A Fast and Dirty Intro to NetworkX (and D3)
A Fast and Dirty Intro to NetworkX (and D3)A Fast and Dirty Intro to NetworkX (and D3)
A Fast and Dirty Intro to NetworkX (and D3)Lynn Cherny
 
NetworkX - python graph analysis and visualization @ PyHug
NetworkX - python graph analysis and visualization @ PyHugNetworkX - python graph analysis and visualization @ PyHug
NetworkX - python graph analysis and visualization @ PyHugJimmy Lai
 
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석Kyunghoon Kim
 
Networkx & Gephi Tutorial #Pydata NYC
Networkx & Gephi Tutorial #Pydata NYCNetworkx & Gephi Tutorial #Pydata NYC
Networkx & Gephi Tutorial #Pydata NYCGilad Lotan
 

Viewers also liked (8)

네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
A comparative study of social network analysis tools
A comparative study of social network analysis toolsA comparative study of social network analysis tools
A comparative study of social network analysis tools
 
A Fast and Dirty Intro to NetworkX (and D3)
A Fast and Dirty Intro to NetworkX (and D3)A Fast and Dirty Intro to NetworkX (and D3)
A Fast and Dirty Intro to NetworkX (and D3)
 
NetworkX - python graph analysis and visualization @ PyHug
NetworkX - python graph analysis and visualization @ PyHugNetworkX - python graph analysis and visualization @ PyHug
NetworkX - python graph analysis and visualization @ PyHug
 
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
 
Networkx & Gephi Tutorial #Pydata NYC
Networkx & Gephi Tutorial #Pydata NYCNetworkx & Gephi Tutorial #Pydata NYC
Networkx & Gephi Tutorial #Pydata NYC
 

Similar to Ch01 네트워크와+소켓+프로그래밍+[호환+모드]

리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and ProtocolWonjun Hwang
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
네트워크와 인터넷
네트워크와 인터넷네트워크와 인터넷
네트워크와 인터넷Wonjun Hwang
 
컴퓨터공학 스터디 W4 발표: TCP/UDP
컴퓨터공학 스터디 W4 발표: TCP/UDP컴퓨터공학 스터디 W4 발표: TCP/UDP
컴퓨터공학 스터디 W4 발표: TCP/UDPssuser91b87c
 
[네트워크] TCP, 믿을 수 있나요!?
[네트워크] TCP, 믿을 수 있나요!?[네트워크] TCP, 믿을 수 있나요!?
[네트워크] TCP, 믿을 수 있나요!?용민 박
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)MoonLightMS
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술정혁 권
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술JungHyuk Kwon
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD StudioDevgear
 
Digital contents multimedia
Digital contents multimediaDigital contents multimedia
Digital contents multimediaDonghoi Kim
 
Network virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkNetwork virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkInho Kang
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10hungrok
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVAcooddy
 
NAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&CNAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&Csys4u
 

Similar to Ch01 네트워크와+소켓+프로그래밍+[호환+모드] (20)

리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and Protocol
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
네트워크와 인터넷
네트워크와 인터넷네트워크와 인터넷
네트워크와 인터넷
 
컴퓨터공학 스터디 W4 발표: TCP/UDP
컴퓨터공학 스터디 W4 발표: TCP/UDP컴퓨터공학 스터디 W4 발표: TCP/UDP
컴퓨터공학 스터디 W4 발표: TCP/UDP
 
[네트워크] TCP, 믿을 수 있나요!?
[네트워크] TCP, 믿을 수 있나요!?[네트워크] TCP, 믿을 수 있나요!?
[네트워크] TCP, 믿을 수 있나요!?
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
WebRTC
WebRTCWebRTC
WebRTC
 
네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
 
Digital contents multimedia
Digital contents multimediaDigital contents multimedia
Digital contents multimedia
 
Network virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center NetworkNetwork virtualization for the better understanding of Data Center Network
Network virtualization for the better understanding of Data Center Network
 
ice_grad
ice_gradice_grad
ice_grad
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVA
 
NAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&CNAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&C
 
퀴즈요약
퀴즈요약퀴즈요약
퀴즈요약
 

Ch01 네트워크와+소켓+프로그래밍+[호환+모드]

  • 1. 1장. 네트워크와 소켓 프로그래밍  TCP/IP 프로토콜의 동작 원리를 살펴본다.  소켓의 기본 개념을 이해한다.  윈도우 소켓의 역사와 특징을 살펴본다.  윈도우 소켓 프로그램을 작성하고 실행하는 과정을 이해한다.
  • 2. TCP/IP 윈도우 소켓 프로그래밍 2 인터넷 구성 요소 (1) 호스트 라우터 호스트 라우터 ① ② ③ ④ 인터넷
  • 3. TCP/IP 윈도우 소켓 프로그래밍 3 인터넷 구성 요소 (2)  호스트  최종 사용자의 응용 프로그램을 수행하는 주체  라우터  호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있게 하는 장비  통신 프로토콜  호스트와 라우터, 라우터와 라우터, 호스트와 호스트가 통신하기 위한 정해진 절차와 방법
  • 4. TCP/IP 윈도우 소켓 프로그래밍 4 TCP/IP 프로토콜 (1)  TCP/IP 프로토콜  인터넷의 핵심 프로토콜인 TCP와 IP를 비롯한 각종 프로토콜  운영체제의 일부로 구현되며, 응용 프로그램은 운영체제 가 제공하는 TCP/IP 프로토콜의 서비스를 사용해 통신
  • 5. TCP/IP 윈도우 소켓 프로그래밍 5 TCP/IP 프로토콜 (2) TCP/IP 프로토콜 (운영체제) 응용 프로그램 라우터 라우터 TCP/IP 프로토콜 (운영체제) 응용 프로그램 호스트 호스트
  • 6. TCP/IP 윈도우 소켓 프로그래밍 6 TCP/IP 프로토콜 구조 (1)  TCP/IP 프로토콜 구조  계층적 구조 네트워크 접근 계층 인터넷 계층 전송 계층 응용 계층 장치 드라이버 네트워크 하드웨어 IP TCP, UDP TELNET, FTP, HTTP, SMTP, MIME, SNMP, ...
  • 7. TCP/IP 윈도우 소켓 프로그래밍 7 TCP/IP 프로토콜 구조 (2)  네트워크 접근 계층  역할 – 물리적 네트워크를 통한 데이터 송수신  구성 요소 – 네트워크 하드웨어 + 장치 드라이버  주소 지정 방식 – 물리 주소  예) 이더넷: 48비트 물리 주소
  • 8. TCP/IP 윈도우 소켓 프로그래밍 8 TCP/IP 프로토콜 구조 (3)  인터넷 계층  역할 – 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트 까지 전달  구성 요소 – IP 주소 + 라우팅(or 라우터)  주소 지정 방식 – IP 주소  소프트웨어적으로 정의된 논리 주소  전 세계적인 유일성과 하드웨어 독립성을 가짐  라우팅 – 데이터를 목적지까지 전달하는 일련의 작업  라우팅에 필요한 정보 수집  라우팅 정보를 기초로 데이터 전달
  • 9. TCP/IP 윈도우 소켓 프로그래밍 9 TCP/IP 프로토콜 구조 (4)  전송 계층  역할 – 최종 통신 목적지(응용 프로그램)를 지정하고, 오류 없이 데 이터를 전송  데이터 손실 또는 손상을 검출해 잘못된 데이터가 목적지에 전 달되는 일을 방지  주소 지정 방식 – 포트 번호  대표 프로토콜 – TCP – UDP
  • 10. TCP/IP 윈도우 소켓 프로그래밍 10 TCP/IP 프로토콜 구조 (5)  TCP와 UDP TCP UDP 연결형(connection-oriented) 프로토콜 - 연결 설정 후 통신 가능 비연결형(connectionless) 프로토콜 - 연결 설정 없이 통신 가능 신뢰성 있는 데이터 전송 - 데이터를 재전송함 신뢰성 없는 데이터 전송 - 데이터를 재전송하지 않음 일대일 통신(unicast) 일대일 통신(unicast), 일대다 통신(broadcast, multicast) 데이터 경계 구분 안 함 - 바이트 스트림(byte-stream) 서비스 데이터 경계 구분함 - 데이터그램(datagram) 서비스
  • 11. TCP/IP 윈도우 소켓 프로그래밍 11 TCP/IP 프로토콜 구조 (6)  응용 계층  역할 – 전송 계층을 기반으로 한 다수의 프로토콜과 이 프로토콜을 사용하는 응용 프로그램을 포괄  대표 프로토콜 – Telnet, FTP, HTTP, SMTP, ...
  • 12. TCP/IP 윈도우 소켓 프로그래밍 12 데이터 전송 원리 (1)  패킷이란?  각 프로토콜에서 정의한 제어 정보(IP 주소, 포트 번호, 오 류 체크 코드 등) + 데이터  제어 정보의 위치에 따라 앞쪽에 붙는 헤더(header)와 뒤 쪽에 붙는 트레일러(trailer)로 구분
  • 13. TCP/IP 윈도우 소켓 프로그래밍 13 데이터 전송 원리 (2)  패킷 전송 형태  송신측 이더넷 IP TCP 응용 프로그램 데이터 데이터TCP 헤더 데이터TCP 헤더IP 헤더 TCP 헤더IP 헤더이더넷 헤더 데이터 이더넷 트레일러
  • 14. TCP/IP 윈도우 소켓 프로그래밍 14 데이터 전송 원리 (3)  패킷 전송 형태  수신측 이더넷 IP TCP 응용 프로그램 데이터 데이터TCP 헤더 데이터TCP 헤더IP 헤더 TCP 헤더IP 헤더이더넷 헤더 데이터 이더넷 트레일러
  • 15. TCP/IP 윈도우 소켓 프로그래밍 15 데이터 전송 원리 (4)  패킷 전송 형태  계층별 – 각 계층은 동일 위치의 상대 계층과 통신하는 것으로 간주 응용 프로그램 응용 프로그램데이터 TCP TCPTCP 헤더 데이터 IP IPIP 헤더 TCP 헤더 데이터
  • 16. TCP/IP 윈도우 소켓 프로그래밍 16 데이터 전송 원리 (5)  패킷 전송 형태  인터넷 – 응용 계층, 전송 계층  하부 계층이 제공하는 가상적인 연결을 사용해 동작 – 인터넷 계층  IP 주소와 라우팅 기능을 이용해 패킷 전송 경로 결정 – 네트워크 접근 계층  물리 주소를 사용해 실제 패킷 전송 네트워크 접근 계층 인터넷 계층 전송 계층 응용 계층 네트워크 접근 계층 인터넷 계층 전송 계층 응용 계층 네트워크 접근 계층 인터넷 계층 네트워크 접근 계층 인터넷 계층 호스트 라우터 라우터 호스트
  • 17. TCP/IP 윈도우 소켓 프로그래밍 17 IP 주소, 포트 번호 (1)  IP 주소  인터넷에 있는 호스트와 라우터의 식별자 – 폐쇄된 네트워크거나 IP를 공유하는 경우가 아니면 전 세계 적으로 값이 유일  IPv4는 32비트, IPv6는 128비트 사용  IPv4는 8비트 단위로 .(dot)로 구분하여 10진수 4개로 표 기 ☞ dotted-decimal notation – 예) 147.46.114.70  IPv6는 16비트 단위로 :(colon)으로 구분하여 16진수 8 개로 표기 ☞ colon-hexadecimal notation – 예) 2001:0230:abcd:ffab:0023:eb00:ffff:1111
  • 18. TCP/IP 윈도우 소켓 프로그래밍 18 IP 주소, 포트 번호 (2)  포트 번호  인터넷 통신의 종착점(하나 혹은 여러 프로세스)을 나타내 는 식별자  TCP와 UDP는 포트 번호로 부호 없는 16비트 정수를 사 용하므로 0~65535 범위가 가능  영역별 포트 번호 포트 번호 분류 0 ~ 1023 알려진 포트(well-known ports) 1024 ~ 49151 등록된 포트(registered ports) 49152 ~ 65535 동적/사설 포트(dynamic and/or private ports)
  • 19. TCP/IP 윈도우 소켓 프로그래밍 19 IP 주소, 포트 번호 (3)  IP 주소와 포트 번호 TCP IP 프로세스 프로세스 프로세스 UDP 포트 번호(0~65535) IP 주소
  • 20. TCP/IP 윈도우 소켓 프로그래밍 20 IP 주소, 포트 번호 (4)  도메인 이름  IP 주소에 대한 (기억하기 쉬운) 별명  실제 통신할 때는 IP 주소로 변환해야 함
  • 21. TCP/IP 윈도우 소켓 프로그래밍 21 클라이언트-서버 모델  클라이언트-서버(client/server) 모델  두 프로그램이 상호 작용하는 방식을 나타내는 용어  서비스를 요청하는 쪽은 클라이언트(client), 클라이언트 가 요청하는 서비스를 처리하는 쪽은 서버(server) 프로그램 1 프로그램 2 접속? 접속? 서버 클라이언트 대기 접속
  • 22. TCP/IP 윈도우 소켓 프로그래밍 22 소켓의 개념 (1)  전화 통신과 소켓 통신 비교 사람 사람 사람 사람
  • 23. TCP/IP 윈도우 소켓 프로그래밍 23 소켓의 개념 (2)  세 가지 관점 ① 데이터 타입 ② 통신 종단점 ③ 네트워크 프로그래밍 인터페이스
  • 24. TCP/IP 윈도우 소켓 프로그래밍 24 소켓의 개념 (3)  데이터 타입  파일 디스크립터 혹은 핸들과 유사한 개념  생성과 설정 과정이 끝나면 운영체제의 통신 관련 정보를 참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입 // 파일 생성 int fd = open("myfile", ...); ... read(fd, ...) // 데이터 읽기 write(fd, ...) // 데이터 쓰기 // 소켓 생성 SOCKET sock = socket(...); ... recv(sock, ...) // 데이터 받기 send(sock, ...) // 데이터 보내기
  • 25. TCP/IP 윈도우 소켓 프로그래밍 25 소켓의 개념 (4)  통신 종단점  응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된 것으로 생각하고 데이터를 주고받음 TCP/IP 윈도우 소켓 프로그래밍 클라이언트 send(sock, ...) 서버 recv(sock, ...) 데이터 <클라이언트 소켓> • 프로토콜: TCP/IP • IP 주소: 147.46.114.70 • 포트 번호: 12023 <서버 소켓> • 프로토콜: TCP/IP • IP 주소: 61.72.244.22 • 포트 번호: 9001
  • 26. TCP/IP 윈도우 소켓 프로그래밍 26 소켓의 개념 (5)  네트워크 프로그래밍 인터페이스  통신 양단이 모두 소켓을 사용할 필요는 없음  TCP/IP 프로토콜에서 (일반적으로) 응용 계층과 전송 계 층 사이에 위치하는 것으로 간주 TCP/IP 윈도우 소켓 프로그래밍 응용 프로그램 TCP IP UDP 응용 프로그램 응용 프로그램 소켓 인터페이스 ICMP, IGMP
  • 27. TCP/IP 윈도우 소켓 프로그래밍 27 윈도우 소켓 (1)  윈도우 소켓(윈속)  버클리 유닉스에서 개발한 네트워크 프로그래밍 인터페이 스를 윈도우 환경에서 사용할 수 있게 만든 것  윈도우 95 버전부터 API에 정식으로 포함하여 제공
  • 28. TCP/IP 윈도우 소켓 프로그래밍 28 윈도우 소켓 (2)  윈도우 소켓과 유닉스 소켓의 차이점  윈도우 소켓은 DLL을 통해 대부분의 기능이 제공되므로 DLL 초기화와 종료 작업을 위한 함수가 필요  윈도우 프로그램은 대개 GUI를 갖추고 메시지 구동 방식 으로 동작하므로 이를 위한 확장 함수가 존재  윈도우는 운영체제 차원에서 멀티스레드를 지원하므로 멀 티스레드 환경에서 안정적으로 동작하는 구조와 이를 위 한 함수가 필요
  • 29. TCP/IP 윈도우 소켓 프로그래밍 29 윈도우 소켓 (3)  윈도우 운영체제의 윈속 지원  윈속에서 지원하는 통신 프로토콜  TCP/IP(윈도우 95 이상, 윈도우 CE 2.1 이상)  IPv6(윈도우 XP SP1 이상, 윈도우 CE .NET 4.1 이상)  IrDA(윈도우 98 이상, 모든 윈도우 CE 버전)  Bluetooth(윈도우 XP SP2 이상, 윈도우 CE .NET 4.0 이상) 운영체제 윈속 버전 윈도우 95 1.1 (2.2) 윈도우 98/Me, 윈도우 NT/2000/XP/2003 서버, 윈도우 비스타/2008 서버/7 2.2 윈도우 CE 1.1 (2.2)
  • 30. TCP/IP 윈도우 소켓 프로그래밍 30 윈도우 소켓 (4)  윈속의 장점  유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기 존 코드를 이식하여 활용하기 쉬움  가장 널리 사용하는 네트워크 프로그래밍 인터페이스이므 로 한번 배우면 여러 운영체제(윈도우, 리눅스 등)에서 사 용 가능  TCP/IP 외의 프로토콜도 지원하므로 최소 코드 수정으로 응용 프로그램이 사용할 프로토콜 변경 가능  비교적 저수준 프로그래밍 인터페이스이므로 세부 제어가 가능하며 고성능 네트워크 프로그램 개발 가능
  • 31. TCP/IP 윈도우 소켓 프로그래밍 31 윈도우 소켓 (5)  윈속의 단점  응용 프로그램 수준의 프로토콜을 프로그래머가 직접 설 계해야 함 – 주고받는 데이터 형식이나 전송 절차 등을 고려해 프로그래 밍해야 하며, 설계 변경 시에는 코드 수정이 불가피함  서로 다른 바이트 정렬 방식을 사용하거나 데이터 처리 단 위가 서로 다른 호스트끼리 통신할 경우, 응용 프로그램 수준에서 데이터 변환을 처리해야 함
  • 32. TCP/IP 윈도우 소켓 프로그래밍 32 윈도우 소켓 (6)  윈속 구조 윈속 2.x 응용 프로그램 윈속 1.x 응용 프로그램 WINSOCK.DLL (16비트) WSOCK32.DLL (32비트) WS2_32.DLL (32비트) 윈속 1.x API 윈속 2.x API TCP/IP IrDA MSWSOCK.DLL ...Bluetooth 윈속 1.x 확장 API
  • 33. TCP/IP 윈도우 소켓 프로그래밍 33 윈도우 소켓 프로그램 맛보기 (1)  프로젝트 생성
  • 34. TCP/IP 윈도우 소켓 프로그래밍 34 윈도우 소켓 프로그램 맛보기 (2)  설정 변경
  • 35. TCP/IP 윈도우 소켓 프로그래밍 35 윈도우 소켓 프로그램 맛보기 (3)  소스 파일 추가 (1/2)
  • 36. TCP/IP 윈도우 소켓 프로그래밍 36 윈도우 소켓 프로그램 맛보기 (4)  소스 파일 추가 (2/2)
  • 37. TCP/IP 윈도우 소켓 프로그래밍 37 윈도우 소켓 프로그램 맛보기 (5)  문자 집합 변경과 윈속 라이브러리 추가 (1/4)
  • 38. TCP/IP 윈도우 소켓 프로그래밍 38 윈도우 소켓 프로그램 맛보기 (6)  문자 집합 변경과 윈속 라이브러리 추가 (2/4)
  • 39. TCP/IP 윈도우 소켓 프로그래밍 39 윈도우 소켓 프로그램 맛보기 (7)  문자 집합 변경과 윈속 라이브러리 추가 (3/4)
  • 40. TCP/IP 윈도우 소켓 프로그래밍 40 윈도우 소켓 프로그램 맛보기 (8)  문자 집합 변경과 윈속 라이브러리 추가 (4/4)  비주얼 C++ 6.0을 사용하는 경우에는 [Project]→[Settings]→[Link]→[Object/library modules] 부분에“ws2_32.lib”를 입력한다.  비주얼 C++ 버전에 따라 윈속 라이브러리를 추가하는 방 식이 달라서 번거롭다면 소스 코드의 임의 위치에 #pragma comment(lib,“ws2_32”) 한 줄을 넣으면 된 다. 2장 이후의 모든 코드는 이 방식을 사용한다.
  • 41. TCP/IP 윈도우 소켓 프로그래밍 41
  • 42. TCP/IP 윈도우 소켓 프로그래밍 42
  • 43. TCP/IP 윈도우 소켓 프로그래밍 43
  • 44. TCP/IP 윈도우 소켓 프로그래밍 44
  • 45. TCP/IP 윈도우 소켓 프로그래밍 45
  • 46. TCP/IP 윈도우 소켓 프로그래밍 46
  • 47. TCP/IP 윈도우 소켓 프로그래밍 47 실행을 위한 준비  윈도우 7 텔넷설치  Windows7에서는 기본적으로 Telnet Client 가 설치되어 있지 않음 – Telnet 설치방법  제어판 -> 프로그램 -> 프로그램 및 기능에 들어가서 ‘Windows 기능 사용/사용안함’ 을 선택  우측 기능 목록 하단에 "텔넷클라이언트"를 체크하여 설치를 시작
  • 48. TCP/IP 윈도우 소켓 프로그래밍 48 실행 방법  명령프롬프트를 실행한 후 telnet을 실행  telnet <서버IP주소> 9000 + EnterEnter
  • 49. TCP/IP 윈도우 소켓 프로그래밍 49 윈도우 소켓 프로그램 맛보기 (9)  실행 화면  텔넷에서 입력한 내용이 서버 화면에 그대로 출력됨.
  • 50. TCP/IP 윈도우 소켓 프로그래밍 50 Thank you www.hanb.co.kr