네트워크 프로그래밍의 이해
네트워크 프로그래밍이란?
- 두 디바이스(컴퓨터 or 핸드폰 등등)간의 데이터를 주고 받을 수 있도록 프로그래밍을 하는 것이다.
Socket ( 소켓 )
- 두 디바이스간에 데이터를 주고 받으려면 물리적 연결이 필요한데 이러한 연결을 도와준다.
- 소켓을 통해 연결된 두 디바이스는 서로 데이터를 주고 받을 수 있다.
- 모든 데이터 송수신 작업이 끝나고 소켓을 닫으면 두 디바이스간의 연결은 사라진다.
컴퓨터의 주소?
- 우리가 누구에게 전화를 하려면 그 사람 고유의 전화번호를 알고 있어야 하며, 집에 방문하려면 집 주소가 있어야 한다. 그와 마찬가지로 다른 디바이스가 내 디바이스에 접속을 하려하면 내 디바이스 주소를 알아야한다.
|
|
예를 들어 내 디바이스에서 온라인 게임을 실행 시키면 내부적으로 211.111.11.1 IP에 PORT 10을 넣어 게임 프로그 서버로 접속하게 된다는 얘기.
소켓 연결 과정
- 두개의 디바이스가 연결되는 과정이라고 생각하고 보면된다, 모든 네트워크 프로그램 개념은 동일 하다.
- 네트워크 프로그램을 만들 때는 언제나 Server와 Client가 짝을 이루게 만들어야 한다.
1. SERVER
A. socket을 생성한다.
- 모든 프로그램은 소켓을 생성하는 함수가 있다. 보통 함수명은 socket이며 언어 마다 이름은 다를 수 있지만 반드시 존재한다.
B. socket에 주소정보를 할당한다.
- 우리가 누구에게 전화를 하려면 고유한 전화번호를 알고 있어야한다. 그와 마찬가지로 다른 디바이스가 내 디바이스에 접속하려고 하면( Client가 Server에게 접속하려고 한다면 ) 내 주소를 알아야하며 내 주소를 알려주기전에 나에게 그 주소를 할당해 주는 작업이 필요하다.
- 이런 함수를 bind라 하며 거의 모든 프로그램 언어가 비슷한 명을 사용한다.
C. 연결 수신 대기 상태
- client가 연결을 시도하면 받을 수 있도록 해당 socket을 listen socket으로 설정한다. 이렇게 socket을 listen 상태로 바꾸는 함수는 대부분 listen이라는 이름을 갖고 있는 함수를 사용한다.
D. client의 연결 시도
- sever가 연결을 받을 준비( listen socket 상태 )가 되어 있으므로 client에서는 server에 연결을 시도한다. 이때, client는 connect 함수를 사용하며 위의 server 소켓이 가지고 있는 IP, PORT를 입력한다.
E. 연결 수락
- client가연결을 요청하면 server에서는 수락을 할 수 있다. 여기서 수락을 하는 함수 명은 accept이며 수락과 동시에 또 하나의 socket이 생성 된다. listen으로 설정된 socket은 또 다른 client의 연결을 받기위해 계속 대기 해야 하기 때문이다.
이렇게 연결이 완료되면 데이터 송수신을 할 수 있다.
'개발자 레니는 지금 - > 공부하는 중' 카테고리의 다른 글
Header 헤더 너란 아이.. (0) | 2018.04.04 |
---|---|
[ Deadlock ] 교착상태 (0) | 2017.08.24 |
👻프로그램, 프로세스, 데몬이란? (1) | 2017.08.24 |
음성, 영상파일종류 (0) | 2017.08.17 |
[ TCP/IP ] 2. 프로토콜 체계와 소켓 타입( TCP, UDP ) (0) | 2017.08.08 |