백엔드 개발자를 목표로 학습하면서 서버쪽에 대한 공부가 필요하다고 생각되었고, 이에 홈서버를 만들어보고자 하였다. 서버가 여러가지 종류?가 있고 이를 전부 구현해보는건 힘들다고 생각한다. 일단 기본이 되는 웹서버, FTP, NAS를 구현해보고 대규모 멀티플레이 서버같은
사실 우분투의 설치나 기본세팅은 구글링을 하면 정보가 정말 많아서 굳이 자세히 쓰지는 않으려한다. 우분투를 설치하고 Apache2, PHP, MYSQL을 설치해서 기본적인 세팅을 진행해야한다. 이 과정에서 같은 툴을 깔아주면 좋다 해당과정은 수 많은 블로그들에 정리가
공격헬기아파치 소프트웨어 제단에서 만든 오픈소스 웹서버 소프트웨어 있다. 팀 버너스리가 만든 NCSA HTTPd를 기반으로 리눅스에서 작동하도록 만들었다고 한다. 모듈을 통해 Php나 다른 프로그램과 연결해서 사용하며 최근에는 APM이라 불리는 삼신기가 한몸처럼 취급받
저번에 APM 삼신기중에 A를 알아봤으니 이번에는 P를 알아볼 차례이다. M은 다른 db랑 비슷해서 생략PHP란 대표적인 서버스크립트 언어이다. C-like 문법구조를 가지고 있고 유사품으로 ASP JSP가 있다. Perl 언어의 영향을 받아 비슷한 특징을 보이고 있다
sudo 모드로 terminal 진입 nano /etc/apache2/ports.conf 실행 listen 80을 원하는 포트로 변경 ufw allow <port_number> << 안해도 되는것같다. service apache2 restartProf
사설IP와 공인IP의 개념을 알고있다면, 사실 웹서버를 올릴 준비가 끝난것이다. 다만 한가지 짚고 넘어갈것이 있다. 바로 DHCP이다. DHCP를 잘 모르겠다면 이글을 읽어보면 좋을지도 모른다. DHCP에 의해서 사설 아이피를 자동으로 할당받게되지만, 서버의 아이피가
이글은 드랍박스의 FTP 설명을 참조로 작성하였습니다FTP는 TCP/IP상의 네트워크 장치가 파일을 전송할 때 이용하는 규칙(protocol)이다. FTP는 서버를 가지며, 이는 다른 서버와 마찬가지로 서버 - 클라이언트 구조를 가진다. ssh기반의 프로토콜이다. 기존
이제 FTP의 사용법을 알아보도록 하겠다. vsftpd 라는 프로그램을 설치해야한다. Very Fast Ftp Demon인가 그렇다. 많은 글들을 보면 yum -y install vsftpd를 이용해서 설치하라고들 하는데 어째서인지 yum이 작동하지 않았다. 그럴떈 그
이름만 들어도 엄청 강해보이는 이름이다. 실상은 서버용 리눅스에서 개발하기가 힘드니, 개인, 클라이언트 사이드에서 ssh로 리눅스에 접근해서 코딩을 하겠다는 그런 의미이다. vs code가 설치되어 있다는 가정하에 진행하도록 하겠다 .vscode를 실행하고 확장 프로그
전체적인 코드 리뷰는 나중에 하고 일단 에러만 살펴보자면 accpet를 뜯어보면 이런 구조로 구성되어있다. 인자 s는 소켓을 듣기 위한 파일지정자, addr은 sockaddr struct의 포인터, 그리고 마지막 addrlen은 addr의 크기이다. 여러곳에서 정보를
stdlib은 c표준 유틸리티함수의 모음이고, stdio는 표준 입출력 라이브러리이다. cpp에서는 iostream으로 쓰기도 하는데 stdio도 먹힌다. (속도도 더 빠르다고 한다.) 윈도우에서는 사용할 수 없는(vs 환경이라면 io.h헤더로 바꾸거나, vs를 안쓰면
일단 함수들을 설명하기전에, sockaddr, sockaddr_in 구조체부터 살펴봐야한다. 소켓의 주소를 담는 역할을 하는 구조체이다. 정의는 다음과 같다.unsigned short 자료형을 쓰는 sa_family는 주소체계를 구분하기 위한 변수이며, 2바이트이다.
linux 기반 클라이언트 사이드 코드이다. socket, connect, send/recv, inet_pton으로 구성되어있다. windows 기반 클라이언트 사이드는 원리는 똑같으나 꽤 상이한 코드를 사용한다. 소켓 생성은 server쪽이랑 동일하다.inet_pto
그게 뭘까?바로 linux 라이브러리들이다. 꽤 주요한 라이브러리 몇개가 없어서, 윈도우에서는 다른걸 쓴다.stdio, stdlib은 이미 분석했으니 넘어가고 winsock2라는 헤더를 분석해보자. winsock이란 windows socket API(WSA) 라는 AP
이 글을 보고 작성하였다.지금까지 작성한 소켓통신코드들은 전부 1서버 1클라이언트 구조였다. 다만 현실에서 큰 서버를 운영하려면, 1서버가 n개의 클라이언트를 담당해야한다. 이 때 현명한 누군가는 '예전에 짠 코드를 전부 쓰레드화 시키고 클라이언트 연결할 때 마다 쓰레
error number의 약자로, 정적 메모리 위치에 저장도니 오류코드를 내보내서 오류상태를 보고 및 검색하기 위한 메크로를 정의한다. 데이터타입 헤더이다. 시간 타입 관련 헤더이다. fd_set 타입을 구조체 로 정의한다. 이 3개의 헤더가 이 코드에 새로 추가된 헤
이전글에서 클라이언트 받기 전까지를 알아보았으니 이제 클라이언트를 받아보는 과정을 알아보도록 하겠다. 우선 FD_ZERO를 통해 fd_set을 비워준다. 그리고 FD_SET을 통해 fd_set에 master_socketㅇ르 집어넣는다. 그리고 max_sd를 master
Uniform Resource Identifier리소스를 식별하는 통일된 방식자원, URI로 식별 할 수 있는 모든 것(제한 없음)다른 항목과 구분하는데 필요한 정보 locator 또는 name 혹은 둘다 추가루 분류 될 수 있다. 가장 큰 범주. 리소스의 위치리소스의
http 정의는 여러번 했으니깐 넘어가겠다. 요즘은 hypertext를 넘어서 모든 형태의 데이터를 넘길 수 있고, 서버간의 실시간 데이터도 http로 주고받는다. 대규모 게임서버들은 여전히 tcp를 쓰지만, 모바일겜같은 일방향 통신게임들은 http로도 많이들 한다.
회원 목록 조회회원 조회회원 등록회원 수정회원 삭제URI는 리소스를 식별만 해야한다. 리소스와 해당 리소스를 대상으로 하는 행위를 분리해야한다.리소스 조화서버에 전달하기 원하는 데이터는 query를 통해서 전달한다. get으로 메세지 바디를 보낼 수는 있지만, 안되는곳
전달방식은 두가지이다. GET 주로 정렬 필터(검색어)POST, PUT, PATCH회원가입, 상품주문, 리소스 등록, 변경 등에 사용 클라이언트 서버 /statics/abc.jpg이런식으로 단순하게 요청한 정적 데이터를 반환홰준다. 쿼리 파라미터 사용이런식으로 쿼리 파
회원관리 시스템 회원관리 시스템 개발 • 회원 목록 /members -> GET• 회원 등록 /members -> POST• 회원 조회 /members/{id} -> GET• 회원 수정 /members/{id} -> PATCH, PUT, POST• 회원 삭제 /memb
공통점은 I가 interface의 I라는점이다.Application Programming Interface의 약자이다 어플리케이션이 프로그래밍 언어가 제공하는 기능을 사용할 수 있도록 해주는 인터페이스이다. 주로 서버가 API를 제공하고 프로그램이 이를 끌고와서 사용하
정리 • 1xx (Informational): 요청이 수신되어 처리중 • 2xx (Successful): 요청 정상 처리 • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로
헤더 HTTP 전송에 필요한 부가정보가 들어있다. 표준 헤더가 굉장히 많다(왜 표준임?) 분류 General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0
캐시가 없을때 요청 GET /star.jpg 을 하면 서버에서 이를 보내준다. 캐시가 없을때, 만약 같은 요청이 온다면 같은 과정을 반복해서 다시 보내준다. 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 받아야한다. 네트워크는 CPU나 다른 하드웨어 비용
• HTML, TEXT• IMAGE, 음성, 영상, 파일• JSON, XML (API)• 거의 모든 형태의 데이터 전송 가능• 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용HTTP 기반으로 작동하는 서버이다. 정적 리소스(HTML, CSS, JS, 이미지, 영