9월, 2017의 게시물 표시

파이썬을 이용한 TCP 소켓 프로그래밍.

이미지
1. TCP 소켓 프로그래밍 Method. - socket.bind(('IP address', Port number)) -> IP주소와 포트 번호 지정 - socket.listen(0) -> 클라이언트로부터 연결을 받을 수 있는 상태로 지정. - socket.accept() -> 클라이언트로부터의 연결을 허가함. - socket.recv(데이터 사이즈) -> 데이터를 전송받음. - socket.connect(('IP address', Port number)) -> 지정된 IP와 port 번호로 연결을 시도한다. - socket.send( Data ) -> 데이터를 전송한다. 2. 간단한 TCP 서버와 클라이언드를 만들어 데이터를 전송해보자. - TCP 서버를 그림(Figure 2.1)과 같이 만든다. Figure 2.1 TCP 서버. - TCP 클라이언트를 그림(Figure 2.2) 과 같이 만든다. Figure 2.2 TCP 클라이언트. - TCP 클라이언트에서 HI Gihun 라고 서버로 데이터를 전송하면 결과는 그림(Figure 2.3)와 같이 출력이 된다. Figure 2.3 결과 출력. 3. TCP 에코서버 만들기 - 클라이언트에서 받은 데이터를 서버가 다시 클라이언트로 돌려주는 서버를 만들어보겠다. - TCP 에코서버를 그림(Figure 3.1) 과 같이 만든다. Figure 3.1 에코서버 - TCP 클라이언트를 그림(Figure 3.2)과 같이 만든다. Figure 3.2 클라이언트. - 클라이언트가 서버로 Hi Gihun이라는 데이터를 보내면 서버에는 Hi GIhun을 받았다고 출력이 되고(Figure 3.3) 서버는 클라이언트에게 전송받은 데이터를 돌려준다. 클라이언트는 Hi Gihun을 출력한다.(Figure 3.4) Figure 3.3 에코서버 결과 Figure 3.4 클라이언트 결과 이렇게 T

UDP 소켓을 이용하여 에코서버와 통신하기.

이미지
이번에는 파이썬 UDP 소켓을 이용하여 에코서버 실습을 해 볼 것이다. 먼저 에코서버와 클리이언트가 필요하다. 1. 에코서버.  에코서버의 역활은 클라이언트에게서 받은 문자열을 다시 클라이언트에게 되돌려 전달하는 것 이다. 구성은 아래와 같다. - 서버 소켓을 생성     sock = socket.socket(socket.AF_INET, socekt.SOCK_DGRAM) -데이터를 받을 포트번호를 지정 sock.bind('',포트번호) -수신 sock.recvfrom(데이터사이즈) -송신 sock.sendto() 아래의 그림(Figure 1.1) 처럼 스크립트를 작성한다. Figure 1.1 UDP Server 2. 클라이언트. 클라이언트의 역활은 서보로 문자열을 전송하고 서버로부터 되돌아오는 문자열을 출력. - 클라이언트 소켓을 생성  sock = socket.socket(socket.AF_INET, socekt.SOCK_DGRAM) -데이터를 전송할 서버 주소와 포트를 지정  sock.bind('',포트번호) -데이터 전송  sock.sendto() -데이터 수신 sock.recvfrom(데이터사이즈) 아래의 그림(Figure 2.1 ) 처럼 스크립트를 작성. Figure 2.1 UDP Client 3. 결과. 클라이언트에서 작성한 스크립트에서 test라는 문자를 서버로 전송하자 서버는 송신자의 ip주소와 데이터 사이즈를 그림(Figure 3.1) 과 같이 출력했다. 그리고 클라이언트는 그림(Figure 3.2) 과 같이 test라는 문자열을 되돌려받아 출력했다. Figure 3.1 Result UDP echo Server Figure 3.2 Result UDP Client 다음에는 파이썬을 이용하여 TCP 소켓을 프로그래밍 후 통신해보겠다.

파이썬(Python) 소캣 프로그래밍.

 이번에는 파이썬 소캣 프로그래밍에 대해서 알아보겠다. 그전에 소캣이 무엇인지를 먼저 알아보자. 1. 소켓이란? - 소켓(Socket)은   1982년 BSD(Berkeley Software Distribution)  UNIX 4.1에서 처음 소개되었으며   현재 널리 사용되는 것은  1986년의 BSD UNIX 4.3에서 개정된 것입니다 .   - 소켓은  소프트웨어로 작성된 추상적인 개념의 통신 접속점이라고 할 수 있는데 네트웍 응용 프로그램은 소켓을 통하여 통신망으로 데이터를 송수신하게 된다. 2. 소켓의 종류 - 소켓에는 여러가지 종류가 있다.  - 소켓을 생성할때 socket.socket(family,type) 을 쓰는데 이것은 전송방식을 결정하는 것 이다.  여기서 family에는 소켓 종류를 말하는데 종류는 AF_INET (IPv4 통신) 그리고 AF_PACKET(RAW 소켓)이 있다. 그리고 소켓 타입은 socket.SOCK_STREAM (TCP방식), socket.SOCK_DGRAM (UDP)방식이 있다.  - socket.SOCK_STREAM (TCP방식) 스트림 소켓은 양방향으로 바이트 스트림을 전송 할 수 있는 연결 지향형 소켓으로 양쪽 어플리케이션이 모두 데이터를 주고 받을 수 있다는것을 의미한다. 스트림소켓은 오류수정, 전송처리, 흐름제어등을 보장해 주며 송신된 순서에 따른 중복되지 않은 데이터를 수신하게 된다. 간단하게 이야기하면 TCP 소켓은 데이터을 송신하고 수신측이 데이터를 수신했나 확인을 하고 받았으면 다음 데이터를 보내주고, 받지 못했으면 재전송을 한다. -socket.SOCK_STREAM (UDP 방식) 데이터그램 소켓은 비 연결형 소켓으로 클라이언트에서 서버로 데이터를 전송할때 UDP를 사용한다. 전송이 빠르지만 확실한 전달은 보장하지 못하고 통신중에 데이터가 손상되거나 분실해도 재전송을 하거나 오류를 되돌리지 않는다. 간단히 말하면 송신측은 수신측이 데이터를 받았건 못받았건

CentOS6 & Python 3 설치 그리고 보안 설정.

이미지
Cent OS6 설치 & 네트워크 설정. 1. VM ware 에서 CentOS6 설치 후 VMware 설정에서 네트워크를 Bridged 로 설정해 준다. Figure 1.1 Virtual Machine Setting. - Bridged Network   :브릿지 네트워킹이란 호스트와 게스트의 네트워크를 연결하여 (브릿징 하여) 게스트 컴퓨터가 호스트 컴퓨터와 동등한 레벨의 네트워크를 사용 할 수 있게 하는 것을 말한다. 즉 그림처럼 (Figure 1.2) VMware 외부의 호스트 PC와 VMware 내부의 게스트 PC의 네트워크 어뎁터가 물리적으로 연결되어 있는 것 처럼 구성하는 것을 말한다. 그리하여 2개의 네트워크를 하나의 네트워크처럼 사용 할 수있게 된다. Figure 1.2 Bridged network 모식도. 2. CentOs 네트워크 설정. - CentOS를 최소 설치로 설정을 했다면 그림처럼(Figure 2.1) 인터넷과 연결이 되어있지 않을것이다. 그래서 Vi 에디터를 이용하여 네트워크 설정을 해줘야 한다. Figure 2.1 Network 가 동작하지 않을때. - Vi 에디터를 이용하여 그림처럼 (Figure 2.2) 네트워크 설정을 확인하고 변경해준다. (ONBOOT NO -> yes, NM_CONTROLLED YES->NO, BOOTPROTO = dhcp.) Figure 2.2 eth-0 - 네트워크 설정 후 service network restart를 하여 network 를 활성화 시켜준후 구글(8.8.8.8)으로 핑이 가능한지 해본다. Figure 2.3 ping 8.8.8.8 3. Python 설치. 3.1. 명령어를 이용해 "development-tools"를 설치해준다.    -# yum groupinstall "development-tools" 3.2. 명렁어를 이용하여 wget을 설치한다.