반응형

소켓 통신/Boost 25

Boost.asio 소켓 연결 요청

개요TCP 소켓으로 원격 어플리케이션과 통신을 시작하려면 먼저 논리적 연결을 수립해야 한다.TCP 프로토콜의 연결 수립이란 두 프로그램 사이에서 메시지를 주고 받는것을 의미한다.이것이 성공해야 두 프로그램이 연결된 것으로 간주할 수 있고, 통신을 할 수 있는 준비가 끝난다. 연결 수립 과정을 간단하게 설명하면 다음과 같다.서버 프로그램과 통신하기 원하는 클라이언트 프로그램이 존재클라이언트가 능동 소켓을 생성하고 연 후 connect() 명령을 내림이때 종료점 객체를 통해 원하는 대상 서버프로그램을 명시함네트워크 연결을 통해 연결 수립 요청 메시지를 서버 프로그램으로 전송요청을 받은 서버 프로그램은 자기가 사용할 능동 소켓을 만듦클라이언트와 연결 됐음을 표시하고 이를 클라이언트에 알림(ACK 전달)클라이언..

소켓 통신/Boost 2024.11.07

Boost.asio 소켓 바인딩

개요능동 소켓으로 원격 프로그램과 통신하거나 수동 소켓으로 들어오는 연결 요청을 받으려고 하기 전에, 소켓은 실제 IP 주소와 프로토콜 포트 번호, 즉 종료점에 묶어야 한다.소켓을 특정 종료점과 묶는 과정을 바인딩이라고 한다. 소켓이 종료점에 바인딩 되면, 운영체제가 네트워크에서 호스트의 해당 종료점으로 들어오는 모든 네트워크 패킷을 특정 소켓으로 전달한다.이와 반대로 종료점에 연결된 소켓에서 나가는 모든 데이터는 종료점이 나타내는 IP 주소의 네트워크로 송출된다. 클라이언트 프로그램은 자신의 능동 소켓과 바인딩할 IP 주소 및 프로토콜 포트 번호에 크게 신경쓰지 않지만, 서버 프로그램은 특정 종료점을 명시적으로 자신의 수용자 소켓과 바인딩해야 한다.서버의 종료점은 자신과 통신하기를 원하는 클라이언트가 ..

소켓 통신/Boost 2024.11.07

Boost.asio DNS 이름 해석하기

개요원시 IP 주소는 사람이 기억하기 매우 불편하다. 특히 16진수를 사용하는 IPv6의 경우에는 더욱 그렇다.숫자들과 낱말들이 의미 없이 나열된 문자열을 기억한다는 것은 보통 일이 아니다. 네트워크에 있는 기기에 사람이 기억하기 쉬운 이름을 붙여주기 위해 DNS를 사용한다.www.naver.com이나 www.google.com과 같은 링크는 쉽게 기억할 수 있는 이유이다. DNS는 하나 또는 그 이상의 IP 주소에 대한 별칭이다.DNS가 가리키는 IP 주소가 무엇인지 물어볼 수 있도록 하는 인터페이스를 제공한다.DNS의 이름을 IP 주소로 바꾸는 과정을 DNS 이름 해석이라고 부른다.  DNS 이름 해석기 (resolver)서버 프로그램을 가르키는 DNs 이름과 프로토콜 포트 번호를 얻고 문자열로 표현..

소켓 통신/Boost 2024.11.07

Boost.asio 능동/수동 소켓 만들기

개요TCP/IP 표준에서는 소켓을 언급하지 않는다, API를 어떻게 구현해야 하는지에 대해서도 나와 있지 않다.따라서 TCP 프로토콜 소프트웨어를 개발하는 모든 개발자는 자신만의 프로토콜 구현용 인터페이스를 마음대로 만들 수 있다. (UDP 프로토콜도 동일하다.) 가장 널리 사용되는 TCP/UDP 프로토콜 API는 버클리 소켓이다.버클리 소켓 API는 통신 세션 문맥을 나타내는 소켓을 중심에 둔 디자인이다.어떠한 네트워크 I/O 연산이든, 시작하기 전에 소켓 객체를 할당해야 하고, 그런 다음 소켓과 개별 I/O 연산을 해야한다. Boost.asio는 버클리 소켓 API에서 많은 개념을 빌려왔다.  능동 소켓원격 어플리케이션으로 데이터를 보내고 받거나 연결 수립 과정을 시작하는데 사용하는 소켓 asio::..

소켓 통신/Boost 2024.11.07

Boost.asio 종료점 만들기

개요일반적인 클라이언트 어플리케이션이 서비스를 제공하는 서버 프로그램과 통신하려면, 서버 프로그램이 실행되고 있는 호스트의 IP 주소와 프로토콜 포트 번호를 알아야 한다.IP 주소와 프로토콜 포트 번호라는 한 쌍의 값으로 네트워크상의 특정 호스트에서 실행되고 있는 한 프로그램을 지정할 수 있다.그런 한 쌍의 값을 종료점이라고 부른다. 일반적으로 서버 프로그램의 IP 주소와 포트 번호를 사용자로부터 직접 입력 받거나, 프로그램의 구성 파일에서 알아낸다.IP주소가 IPv4라면, 숫자와 마침표로 이뤄진 문자열로 표시한다.IPv6라면 16진법에 따른 문자열로 표시한다.서버 IP 주소는 DNS를 통해 좀 더 간접적으로 표시하기도 한다. 클라이언트 뿐만 아니라 서버 프로그램 역시 종료점을 다뤄야 한다.서버 프로그램..

소켓 통신/Boost 2024.11.07
728x90
반응형