728x90

소켓 7

게임 서버 프로그래밍 교과서 3장. 소켓 프로그래밍

3장 소켓 프로그래밍 온라인 게임 프로그래밍에서 소켓은 파일 핸들 방식과는 약간 다르다. 게임 서버에서는 다루어야 하는 소켓 개수가 많다. TCP를 이용해서 통신하는 경우 클라이언트 개수만큼 소켓이 있어야 한다. 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 한다. 디스크를 읽거나 쓸 때 사용하는 read(), write() 함수는 호출 후 실행이 완료될 때 까지 리턴하지 않는다. 소켓을 이용해서 읽기/쓰기를 하는 함수를 호출 했는데 즉시, 리턴하지 않는다면 이들을 호출한 메인 스레드는 사용자 입장에서 일시정지 하는 것 처럼 보인다. 이러한 이유 때문에 네트워크 프로그래밍에서 소켓은 보통 비동기 입출력(Asynchronous I/O) 상태로 다룬다. 소켓을 비동기 입출력으로 다루는 방식에는 크게는..

스트림 소켓(Stream Socket) / 데이터그램 소켓(Datagram Socket)

스트림 소켓(Stream Socket) / 데이터그램 소켓(Datagram Socket) 스트림 소켓(Stream Socket) TCP를 사용하는 연결 지향적 소켓이다. 두 통신 당사자 간에 신뢰성 있는 양방향 통신 채널을 제공한다. 데이터는 바이트 스트림으로 전송되며, 데이터의 경계가 없다.(연속적이다.) 데이터그램 소켓(Datagram Socket) UDP를 사용하는 비연결형 소켓이다. 데이터를 독립된 메시지 형태의 패킷으로 전송한다. 각 패킷은 다른 패킷과 독립적이며, 네트워크를 통해 개별적으로 전송된다. 신뢰성보다는 빠른 데이터 전송을 중시한다.

HTTP(Hyper Text Transfer Protocol)

HTTP(Hyper Text Transfer Protocol) 정의 웹 컨텐츠(HTML, 문서, 이미지, 파일 등)를 교환하기 위한 프로토콜 어떤 방식으로 데이터를 교환할 지 정해놓은 표준 규칙 연결 방식(HTTP 버전별 상이) 데이터 전송 방식(Method) 데이터 형식(Content - Type) 기능 다양한 클라이언트 - 웹서버 통신의 효율과 호환성을 높인다. 클라이언트 - 서버 간 데이터 통신은 다양한 방식으로 이뤄질 수 있다. 모든 클라이언트와 서버가 각각의 방식으로 데이터를 교환한다면 매번 방식이 달라서 번거롭고 복잡하다. HTTP는 통신 과정에서 모든 클라이언트와 웹서버가 표준적으로 사용할 규칙이다. Hyper Text로 분류되는 데이터를 교환하는 데 최적화 되어 있다. HTML 문서 CSS..

웹 서버

웹 서버 웹 서버란 무엇인가? 웹 서버는 웹 사이트를 구성하는 핵심 요소중 하나이다. 웹사이트를 방문할 때 사용자의 웹 브라우저는 웹서버에 요청을 보내고, 웹서버는 웹 페이지를 포함한 다양한 콘텐츠를 응답으로 전송하낟. 다음과 같은 역할 수행 웹 페이지 제공 : HTML, CSS, Javascript등 웹페이지를 구성하는 파일들을 저장하고 사용자의 요청에 따라 전송한다. 정적 콘텐츠 제공 : 웹 페이지에 포함된 이미지, 동영상, 음악 등 정적 콘텐츠를 저장하고 전송한다. 동적 콘텐츠 처리 : 서버 측 스크립팅 언어(PHP, Python, Ruby등)를 사용하여 동적으로 생성된 웹페이지를 제공한다. 보안 및 권한 관리 : 사용자의 접근 권한을 관리하고 웹사이트의 보안을 유지한다. HTTP 지원 : 웹 서버..

파일 식별자File Descriptor(FD)

File Descriptor(FD) 정의 운영체제가 파일, 소켓, 파이프등의 입출력 리소스를 관리하기 위해 생성해내는 비음수의 값이다. 프로세스가 각 리소스에 접근하려고 할 때 리소스에 대한 인덱스로 사용된다. 덕분에 프로세스는 리소스의 실제 물리적 위치를 몰라도, 인덱스를 통해 접근이 가능하다. 프로세스의 FD 활용 리소스 열기 프로세스가 open, socket 등의 system call을 사용해 리소스를 열면 운영체제는 해당 리소스에 대한 핸들을 생성하고, 이를 가리키는 파일 디스크립터를 프로세스에 반환한다. 리소스 조작 프로세스가 read, write, send, recv 등의 system call로 리소스를 조작할 때, fd값을 인자로 운영체제에 제공해야 한다. 운영체제는 이 fd를 통해서 해당 ..

소켓/소켓 API

소켓/소켓 API 소켓 API 정의 System call API 중 하나이다. 운영체제가 응용프로그램에게 제공하는 통신용 인터페이스다. 역할 컴퓨터 하드웨어의 네트워크 통신장치를 응용프로그램이 간접적으로 이용할 수 있게 해준다. 소켓 정의 응용프로그램에 설치하는 데이터 송수신 출입구 사용하는 이유 응용프로그램은 응용프로그램의 일만 처리하도록 하기 위해서 사용한다. 응용프로그램이 데이터 송수신을 위한 각종의 일을 직접 수행할 필요가 없다. 통신의 업무는 운영체제의 네트워크 스택이 해준다. 네트워크 스택이 하는 일 데이터의 패킷화 주소 지정 라우팅 전송 오류 처리 컴퓨터가 데이터들을 송수신할 때, 꼬이지 않게 해준다. 컴퓨터 내에서 실행되는 다양한 프로세스가 엄청난 양의 데이터 송수신을 일으키는데, 운영체제..

Chapter 01. 네트워크 프로그래밍과 소켓의 이해

네트워크 프로그래밍과 소켓의 이해 01-1 네트워크 프로그래밍과 소켓의 이해 네트워크 프로그래밍 : 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것. 소켓(Socket) : 물리적으로 연결된 네트워크 상에서 데이터 송수신에 사용할 수 있는 소프트웨어적인 장치. 프로그래밍에서의 ‘소켓’은 네트웨크 망의 연결에 사용되는 도구다. 연결이라는 의미가 담겨있어서 ‘소켓’이라는 표현을 사용한다. 그리고 그 의미를 조금 더 확장해서 소켓은 네트워크를 통한 두 컴퓨터에 연결을 의미하기도 한다. socket 함수를 통해 소켓생성 소켓생성 - socket 함수 호출 IP주소와 PORT번호 할당 - bind 함수호출 연결요청 가능상태로 변경 - listen 함수호출 연결요청 대한 수락 - accept 함수호출..

728x90